docker-compose.yml文件详解
- 概念
官方文档: http://docs.docker.com/compose/compose-file/
docker compose允许用户通过docker-compose.yml文件来定义一组相关联的容器为一个工程,一个工程包含多个服务,每个服务中定义了创建容器时所需的镜像、参数、依赖等。
工程名若无特殊指定,即为docker-compose.yml文件所在目录的名称。
docker-compose模板文件我们需要关注的顶级配置有version、services、networks、volumes几个部分,除version外,其他几个顶级配置下还有很多下级配置。
.version: 描述compose文件的版本信息
.services: 定义服务,可以多个,每个服务中定义了创建容器时所需的镜像、参数、依赖等
.networks: 定义网络,可以多个,根据dns server 让相同网络中的容器可以直接通过容器名称进行通信
volumes: 数据卷,用于实现目录挂载
- 案例
在配置文件中,所有容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启,非常适合多个容器组合使用进行开发的场景。
编写docker-compose.yml文件。
创建目录
mkdir -p /usr/local/docker-nginx
切换到指定目录
cd /usr/local/docker-nginx
填写docker-compose.yml文件
vim 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