概念
Docker Compose 项目是Docker官方的开源项目,来源于之前的 Fig 项目。负责实现对 Docker 容器集群的快速编排。项目地址为:https://github.com/docker/compose/releases
它是一个定义和运行多容器的docker应用工具。使用compose,你能通过YMAL文件配置你自己的服务,然后通过一个命令,你能使用配置文件创建和运行所有的服务。
Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。
docker-compose.yml 文件详解
官方文档:https://docs.docker.com/compose/compose-file/
Docker Compose 允许用户通过 docker-compose.yml 文件(YAML 格式)来定义一组相关联的容器为一个工程(project)。一个工程包含多个服务(service),每个服务中定义了创建容器时所需的镜像、参数、依赖等。
工程名若无特殊指定,即为 docker-compose.yml 文件所在目录的名称。
Docker Compose 模板文件我们需要关注的顶级配置有 version、services、networks、volumes 几个部分,除 version 外,其他几个顶级配置下还有很多下级配置,后面也会详细给大家介绍,先来看看这几个顶级配置都什么意思:
- version:描述 Compose 文件的版本信息,当前最新版本为 3.8,对应的 Docker 版本为 19.03.0+;
- services:定义服务,可以多个,每个服务中定义了创建容器时所需的镜像、参数、依赖等;
- networkds:定义网络,可以多个,根据 DNS server 让相同网络中的容器可以直接通过容器名称进行通信;
- volumes:数据卷,用于实现目录挂载。
在配置文件中,所有的容器通过 services 来定义,然后使用 docker-compose 脚本来启动,停止和重启容器,非常适合多个容器组合使用进行开发的场景。
mkdir -p /usr/local/docker-nginxcd /usr/local/docker-nginx/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# 后台启动docker-compose up -d
