Docker 容器编排利器 Docker Compose( 二 )


编写 docker-compose.yml 文件 。
 # 创建目录 mkdir -p /usr/local/docker-Nginx # 切换至指定目录 cd /usr/local/docker-nginx/ # 编写 docker-compose.yml 文件 vi docker-compose.yml
在文件中添加以下内容:
 # 描述 Compose 文件的版本信息 version: "3.8" # 定义服务 , 可以多个 services: nginx: # 服务名称   image: nginx # 创建容器时所需的镜像   container_name: mynginx # 容器名称 , 默认为"工程名称_服务条目名称_序号"   ports: # 宿主机与容器的端口映射关系     - "80:80" # 左边宿主机端口:右边容器端口   networks: # 配置容器连接的网络 , 引用顶级 networks 下的条目     - nginx-net  # 定义网络 , 可以多个 。如果不声明 , 默认会创建一个网络名称为"工程名称_default"的 bridge 网络 networks: nginx-net: # 一个具体网络的条目名称   name: nginx-net # 网络名称 , 默认为"工程名称_网络条目名称"   driver: bridge # 网络模式 , 默认为 bridge
使用 docker-compose up 创建并启动所有服务 。这个简单的案例中就只有一个 Nginx 后续我们会来一些复杂的练习:
 # 前台启动 docker-compose up # 后台启动 docker-compose up -d

Docker 容器编排利器 Docker Compose

文章插图
 
浏览器访问:http://192.168.10.10/ 结果如下:
Docker 容器编排利器 Docker Compose

文章插图
 
使用 docker-compose down 可以停止并删除容器、网络 。
Docker 容器编排利器 Docker Compose

文章插图
 
version
描述 Compose 文件的版本信息 , 当前最新版本为 3.8 , 对应的 Docker 版本为 19.03.0+ 。关于每个版本的详细信息请参考:https://docs.docker.com/compose/compose-file/compose-versioning/
以下为 Compose 文件的版本信息所对应的 Docker 版本 。
Docker 容器编排利器 Docker Compose

文章插图
 
services
刚才我们提到 docker-compose.yml 文件中包含很多下级配置项 , 下面带大家把一些常用的配置项详细了解一下 , 先从顶级配置 services 开始 。
services 用来定义服务 , 可以多个 , 每个服务中定义了创建容器时所需的镜像、参数、依赖等 , 就像将命令行参数传递给 docker run 一样 。同样 , 网络和数据卷的定义也是一样的 。
比如 , 之前我们通过 docker run 命令构建一个 MySQL 应用容器的命令如下:
 docker run -di --name mysql8 -p 3306:3306 -v /mydata/docker_mysql/conf:/etc/mysql/conf.d -v /mydata/docker_mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSword=1234 mysql:8使用 docker-compose.yml 以后则可以这样定义:
 # 描述 Compose 文件的版本信息 version: "3.8" # 定义服务 , 可以多个 services: mysql: # 服务名称   image: mysql:8 # 创建容器时所需的镜像   container_name: mysql8 # 容器名称 , 默认为"工程名称_服务条目名称_序号"   ports: # 宿主机与容器的端口映射关系     - "3306:3306" # 左边宿主机端口:右边容器端口   environment: # 创建容器时所需的环境变量     MYSQL_ROOT_PASSWORD: 1234   volumes:     - "/mydata/docker_mysql/conf:/etc/mysql/conf.d"     - "/mydata/docker_mysql/data:/var/lib/mysql"然后通过 dokcer-compose 相关命令即可完成容器的创建 , 停止或删除等一系列操作 。
image
指定创建容器时所需的镜像名称标签或者镜像 ID 。如果镜像在本地不存在 , 会去远程拉取 。
 services: web:   image: hello-world
build
除了可以基于指定的镜像构建容器 , 还可以基于 Dockerfile 文件构建 , 在使用 up 命令时会执行构建任务 。
通过 build 配置项可以指定 Dockerfile 所在文件夹的路径 。Compose 将会利用 Dockerfile 自动构建镜像 , 然后使用镜像启动服务容器 。
build 配置项可以使用绝对路径 , 也可以使用相对路径 。
 # 绝对路径 , 在该路径下基于名称为 Dockerfile 的文件构建镜像 /usr/local/docker-centos # 相对路径 , 相对当前 docker-compose.yml 文件所在目录 , 基于名称为 Dockerfile 的文件构建镜像 .


推荐阅读