Docker Compose 的介绍、安装与使用
一、什么是 Docker Compose
Compose 是 Docker 官方的开源项目,负责实现Docker容器集群的快速编排,开源代码在 https://github.com/docker/compose 上。
我们知道使用 Dockerfile 模板文件可以让用户很方便的定义一个单独的应用容器,其实在工作中,经常会碰到需要多个容器相互配合来完成的某项任务情况,例如工作中的web服务容器本身,往往会在后端加上数据库容器,甚至会有负责均衡器。
Compose 就是来做这个事情的,它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML格式)来定义一组相关联的应用容器为一个项目( project )
Compose 中有两个重要的概念:
-
服务( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例
-
项目( project ):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 中定义
Compose 项目是由Python编写的,实际上就是调用了Docker服务提供的API来对容器进行管理,因此,只要所在的操作系统的平台支持Docker API,就可以在其上利用Compose来进行编排管理。
二、为什么要使用 Docker Compose
假如有几十上百个容器,并且容器之间还存在依赖,光是忙着搭建容器都耗掉一天了,还谈什么Devops,那有没有什么方便快捷的组建,可以让我们通过一个配置就搞定容器编排和运行呢?
Docker Compose 的特点
Docker Compose 就是为了简化多容器配置和管理工作而生的,可以简化大量重复的手动工作,具有以下主要特点:
-
提供工具用于定义和运行多个docker容器应用
-
使用yaml文件来配置应用服务( docker-compse.yml )
-
可以通过一个简单的命令
docker-compse up
可以按照依赖关系启动所有服务 -
可以通过一个简单的命令
docker-compose down
停止所有服务 -
当一个服务需要的时候,可以很简单地通过
--scale
进行扩容
Docker Compose 的考虑理由
-
可移植性:
Docker Compose仅需一个命令即可提供完整的开发环境:
docker-compose up
,然后使用docker-compose down
轻松将其拆解。 这使我们的开发人员可以将开发环境保持在一个中立位置,并帮助我们轻松地部署应用程序。 -
测试:
Compose的另一个重要功能是通过将其置于自己的环境中,以快速可重复的方式支持运行单元和E2E测试。这意味着,您可以运行与生产环境非常相似的环境,而不是在本地/主机系统上测试应用程序。
-
单个主机上的多个隔离环境:
Compose使用项目名称将环境彼此隔离,这带来了以下好处:
- 您可以在一台计算机上运行同一环境的多个副本
- 它可以防止不同的项目和服务相互干扰
三、Docker Compose 的使用场景
-
单主机部署:
传统上,Compose专注于开发和测试,但现在可用于在单个主机系统上进行部署和管理容器的整个部署过程。
-
开发环境:
Compose提供了在孤立的环境中运行应用程序的能力,该环境可以在安装了Docker的任何计算机上运行。 这使测试你的应用程序变得非常容易,并提供了一种尽可能接近生产环境的工作方式。
Compose文件管理应用程序的所有依赖项(数据库,队列,缓存等),并且可以使用单个命令创建每个容器。
-
自动化测试环境:
持续集成和整个开发过程的重要组成部分是自动化测试套件,该套件要求可以在其中执行测试的环境。Compose提供了一种方便的方法来创建和销毁与您的生产环境接近的隔离测试环境。
四、安装 Docker Compose
-
基本只要两步:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
-
Ubuntu 建议使用 apt 命令快速安装:
sudo apt install docker-compose # version 1.25.0-1
-
测试安装版本:
docker-compose --version
五、如何使用 Docker Compose
使用 Compose 基本上只要三步:
- 通过编辑 Dockerfile 定义应用程序发布所需的运行环境
- 通过编辑 docker-compose.yml 文件定义多个容器一起运行的环境和相互关系
- 运行
docker-compose up
开始你的整个应用系统
Docker Compose 命令
Compose 大部分命令的对象即可以是项目的本身,也可以是指定为项目中的服务或者容器。
执行 docker-compose [COMMAND] --help
或者 docker-compose help [COMMAND]
可以查看命令的帮助信息
-
具体的使用格式
docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS]
-
参数选项
-f,--file file指定模板文件,默认是docker-compose.yml模板文件,可以多次指定
-p,--project-name name指定项目名称,默认使用所在目录名称作为项目名称
--x-networking 使用Docker的后端可插拔网络特性
--x-networking-driver driver指定网络的后端驱动,默认使用bridge
--verbose 输入更多的调试信息
-v,--version 输出版本信息
官方链接:https://docs.docker.com/compose/reference/build/
模版文件
模板文件是 Compose 的核心,涉及的指令关键字比较多,但是大部分的指令与docker run相关的参数的含义是类似的。
-
默认的模板名是 docker-compose.yml
-
官网链接:https://docs.docker.com/compose/compose-file/#compose-file-structure-and-examples