畅享docker-compose之旅及编排wordpress报错解决

Posted Friends of the wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了畅享docker-compose之旅及编排wordpress报错解决相关的知识,希望对你有一定的参考价值。


理论

​1.是什么?
docker容器的批量管理工具但没有资源管理功能(给某个容器多分或少分内存、存储空间)。

官网文档地址: https://docs.docker.com/compose/overview/

2.为什么用它?

解决复杂依赖关系 docker镜像在创建之后,往往需要自己手动pull来获取镜像,然后执行run命令来运行。当服务需要用到多种容器,容器之间又产生了各种依赖和连接的时候,部署一个服务的手动操作是令人感到十分厌烦的。

降低部署服务难度 docker-compose技术,就是通过一个 .yml 配置文件,将所有的容器的部署方法、文件映射、容器连接等等一系列的配置写在一个配置文件里,最后只需要执行docker-compose up命令就会像执行脚本一样的去一个个安装容器并自动部署他们,极大的便利了复杂服务的部署。

3.核心概念
服务(service):一个应用的容器,服务可以存在多个
项目(project):由一组关联的容器组成的一个完整业务单元,在“docker-compose.yml”中定义。


提示:以下是本篇文章正文内容,下面案例可供参考

一、部署nginx服务

1.安装docker-compose

第一种方式:在线安装

curl -L "https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

第二种方式:本地安装

1)重命名并放到环境变量目录
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

2)赋予执行权
cd /usr/local/bin/
chmod +x docker-compose

2.compose编排Nginx

1)设置tab键的空格距离。

vim /root/.vimrc
编辑内容:
set tabstop=2
加载配置:
cd /root/
source .vimrc

2)创建文件目录
mkdir registry1
vim docker-compose.yml
编辑内容:

version: '3.2'

services:
  nginx:
    restart: always
    image: nginx:latest
    container_name: web-nginx
    ports:
      - 90:80
    volumes:
      - ./webserver:/usr/share/nginx/html

启动:等于用当前的yml文件管理compose,-d表示后台守护进程方式启动
docker-compose up

查看:容器是否启动成功

创建默认首页文件:
echo “registry1” > registry1/webserver/index.html

3)任意主机访问Nginx的IP地址

3.docker-compose管理命令

1、compose作用
具有管理应用程序整个生命周期的命令
启动,停止和重建服务
查看正在运行的服务的状态
流式传输运行服务的日志输出
在服务上运行一次性命令

2、常用命令
#帮助信息
docker-compose --help

#用来创建或重新创建服务使用的镜像
docker-compose build

#用于通过容器发送SIGKILL信号强行停止服务
docker-compose kill nginx

PS: kill 服务名称,默认所有服务

#显示service的日志信息
docker-compose logs

#暂停和恢复服务
docker-compose pause

docker-compose pause #暂停服务
docker-compose unpause #恢复被暂停的服务

#用于查看服务中的端口与物理机的映射关系
docker-compose port nginx 80

例如:docker-compose port nginx_web 80 #查看服务中80端口映射到物 理机上的那个端口

#用于显示当前项目下的容器
docker-compose ps

注意,此命令与docker ps不同作用,此命令会显示停止后的容器(状态为 Exited),只针对某个项目。

#用于拉取服务依赖的镜像
docker-compose pull

#用于重启某个服务中的所有容器
docker-compose restart

例如:docker-compose restart service_name #只有正在运行的服务可以 使用重启命令,停止的服务是不可以重启

#删除停止的服务(服务里的容器)
docker-compose rm

-f #强制删除
-v #删除与容器相关的卷(volumes)

#用于在服务中运行一个一次性的命令
docker-compose run nginx ls /

这个命令会新建一个容器,它的配置和srvice的配置相同。但两者之间还是有两点不同之处
1、run指定的命令会直接覆盖掉service配置中指定的命令
2、run命令启动的容器不会创建在service配置中指定的端口,如果需要指定使用–service-ports指定

#启动/停止运行某个服务的所有容器
docker-compose start/stop

docker-compose start 启动运行某个服务的所有容器
docker-compose stop 停止运行某个服务的所有容器

#指定某个服务启动的容器个数
docker-compose scale nginx=2

PS: 如果需要运行多个容器,那么容器名称就不要给了,会随机生成,还 有注意端口映射问题,不要冲突(docker-compose port 字段支持仅写 一个容器暴露的端口)。

备注:
docker-compose 运行时是需要指定service名称,可以同时指定多个,也 可以不指定。不指定时默认就是对配置文件中所有的service执行命令。
-f #用于指定配置文件
-p #用于指定项目名称

二、搭建wordpress的博客

1.创建yml文件

官方文档地址:https://docs.docker.com/compose/wordpress/

1)创建目录,并且编辑docker-compose.yml文件,文件内容如下:
mysql:5.7、WordPress最好提前下载导入,负责会很慢
mkdir /project2
cd /project2
docker-compose.yml

version: ‘3.2’

services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123.com
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- “80:80”
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data:

2.启动WordPress容器

cd /project2
docker-compose up -d

报错:分两种情况,一种本地查看到80端口;但是访问IP确提示连接被拒绝!还有mysql、WordPress容器启动不了,WordPress状态一直是restarting,怎么解决?
解决:分析原因,如果你的compose使用yml文件不报错,证明就是WordPress最新版不支持,这个bag我们无法解决,只能降低WordPress版本,我测试WordPress4.9.4可用,就是安装界面是英文版。
修改docker-compose.yml文件

version: '3.2'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: 123.com
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:4.9.4
     ports:
       - "80:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: 

重新启动,即可

3.登录网页安装


验证:成功


扩展

docker-compose为应用添加网络

1.使用已有网络

1)创建网络
docker network create --driver bridge --subnet 172.22.16.0/24 --gateway 172.22.16.1 registry1

2)创建yml文件
注意:external选项参数写,true,表示是外部自定义网络

3)启动容器


验证:网络是否为自定义外部网络的网段


4)访问网站首页

2.使用docker-compose自动创建的网络

1)创建yml文件
注意:external选项参数写,false,表示不是外部网络,即docker-compose自动为项目创建网络

2)查看自动创建的网络
命名规则:项目名_网络名;类型默认为bridge

3)访问网站首页
同上

以上是关于畅享docker-compose之旅及编排wordpress报错解决的主要内容,如果未能解决你的问题,请参考以下文章

Docker-compose简介和部署编排

Docker-compose简介和部署编排

Docker-compose 容器 快速单机编排

Docker-compose 容器 快速单机编排

docker-compose概述与编排部署

Docker-Compose 容器集群的快速编排