概念
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 脚本来启动,停止和重启容器,非常适合多个容器组合使用进行开发的场景。

  1. mkdir -p /usr/local/docker-nginx
  2. cd /usr/local/docker-nginx/
  3. vi docker-compose.yml
  1. # 描述 Compose 文件的版本信息
  2. version: "3.8"
  3. # 定义服务,可以多个
  4. services:
  5. nginx: # 服务名称
  6. image: nginx # 创建容器时所需的镜像
  7. container_name: mynginx # 容器名称,默认为"工程名称_服务条目名称_序号"
  8. ports: # 宿主机与容器的端口映射关系
  9. - "80:80" # 左边宿主机端口:右边容器端口
  10. networks: # 配置容器连接的网络,引用顶级 networks 下的条目
  11. - nginx-net
  12. # 定义网络,可以多个。如果不声明,默认会创建一个网络名称为"工程名称_default"的 bridge 网络
  13. networks:
  14. nginx-net: # 一个具体网络的条目名称
  15. name: nginx-net # 网络名称,默认为"工程名称_网络条目名称"
  16. driver: bridge # 网络模式,默认为 bridge
  1. # 前台启动
  2. docker-compose up
  3. # 后台启动
  4. docker-compose up -d

https://thinkwon.blog.csdn.net/article/details/119511551