Docker 容器编排利器 Docker Compose

Compose 简介
通过前面几篇文章的学习 , 我们可以通过 Dockerfile 文件让用户很方便的定义一个单独的应用容器 。然而 , 在日常工作中 , 经常会碰到需要多个容器相互配合来完成某项任务的情况 , 例如之前我给大家讲过的《Docker 搭建 redis Cluster 集群环境 》 , 或者开发一个 Web 应用 , 除了 Web 服务容器本身 , 还需要数据库服务容器、缓存容器 , 甚至还包括负载均衡容器等等 。
Docker Compose 恰好满足了这样的需求 , 它是用于定义和运行多容器 Docker 应用程序的工具 。通过 Compose , 您可以使用 YAML 文件来配置应用程序所需要的服务 。然后使用一个命令 , 就可以通过 YAML 配置文件创建并启动所有服务 。
Docker Compose 项目是 Docker 官方的开源项目 , 来源于之前的 Fig 项目 , 使用 Python 语言编写 。负责实现对 Docker 容器集群的快速编排 。项目地址为:https://github.com/docker/compose/releases
Docker Compose 使用的三个步骤为:

  • 使用 Dockerfile 文件定义应用程序的环境;
  • 使用 docker-compose.yml 文件定义构成应用程序的服务 , 这样它们可以在隔离环境中一起运行;
  • 最后 , 执行 docker-compose up 命令来创建并启动所有服务 。

Compose 安装
下载
官方文档:https://docs.docker.com/compose/install/
您可以在 macOS , windows 和 linux 上运行 Compose 。本文演示基于 Linux 环境的安装 。我们可以使用 curl 命令从 Github 下载它的二进制文件来使用 , 运行以下命令下载 Docker Compose 的当前稳定版本 。或者从网页下载后上传至服务器指定目录 /usr/local/bin 也行 。
 sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
因为 Docker Compose 存放在 GitHub , 可能不太稳定 。你也可以通过执行下面的命令 , 高速安装 Compose 。该加速通道由 DaoCloud 提供:http://get.daocloud.io/#install-compose
 sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose您可以通过修改 URL 中的版本 , 自定义您所需要的版本文件 。
授权
安装完成以后 , 查看指定目录 , 发现该文件没有可执行权限 , 进行授权操作 。
Docker 容器编排利器 Docker Compose

文章插图
 
 # 将可执行权限应用于该二进制文件 sudo chmod +x /usr/local/bin/docker-compose
Docker 容器编排利器 Docker Compose

文章插图
 
测试
 docker-compose --version
Docker 容器编排利器 Docker Compose

文章插图
 
卸载
卸载 Compose 非常简单 , 直接删除二进制文件即可 。
 sudo rm /usr/local/bin/docker-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 脚本来启动 , 停止和重启容器 , 非常适合多个容器组合使用进行开发的场景 。我们先从一个简单的 Compose 案例学起 。


推荐阅读