什么是 Docker Compose

ComposeDocker 官方的开源项目,负责实现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 的介绍、安装与使用

安装Docker Compose

  • 可以参考官方网站:https