Docker Compose概述

Compose是用来定义和运行多个容器docker应用程序的工具。可以使用一个compose文件来配置你的应用程序服务。然后使用一个命令根据配置文件来创建和启动所有的服务。

Compose非常适合用于开发,测试和临时环境,也包括CI工作流。

使用compose就三步。
1.使用Dockerfile定义应用程序的环境,以便可以在任何地方重建环境。
2.在docker-compose.yml定义服务构建你的应用程序,以便它们能在一个隔离的环境一起运行。
3.最后,执行docker-compose up然后compose会启动和运行整个app。

一个docker-compose.yml类似如下:

  1. version: '2'
  2. services:
  3.   web:
  4.     build: .
  5.     ports:
  6.     - "5000:5000"
  7.     volumes:
  8.     - .:/code
  9.     - logvolume01:/var/log
  10.     links:
  11.     - redis
  12.   redis:
  13.     image: redis
  14. volumes:
  15.   logvolume01: {}

compose提供了管理应用程序整个生命周期的命令:

  • 启动,停止和重建服务
  • 查看运行中服务的状态
  • 输出运行中服务的日志
  • 在服务上运行一次性命令
  • 功能

    单台主机多个隔离环境

    compose使用一个项目名称相互隔离环境。可以在几个不同的上下文使用这个项目名称:

  • 在一个开发主机创建单个环境的多个副本(例如,你想为一个项目中的每个功能分支运行一个稳定的副本)
  • 在CI服务器上,为了使构建不会相互干扰,可以将项目名称设置为唯一的内部版本号
  • 在共享主机或开发主机上,为了避免不同的可能使用相同的服务名称的项目互相干扰。
  • 默认项目名称是项目目录的basename。可以通过使用-p命令行选项或COMPOSE_PROJECT_NAME环境变量设置一个自定义项目名称。

    容器创建时保留数据卷数据

    compose保留用于服务的所有数据卷。当执行docker-compose up时,如果找到先前用到数据卷的容器,就把数据卷从旧的容器复制到新的容器。这样确保了你保存到数据卷的数据不会丢失。

    只重建有更新的容器

    compose缓存用于创建容器的配置。当重启一个没有更新的服务时,compose重用现有的容器。重用容器意味着你可以快速改变你的环境。

    compose支持在compose文件中使用变量。可以使用这些变量为不同的环境或不同的用户自定义组件。

    可以使用extends字段或通过创建多个compose文件扩展你的compose文件。

    常见用例

    compose可以以许多不同的方式使用。一些常见的用例如下:

    开发环境

    当正在开发一个软件时,能够在一个隔离的环境运行应用程序并与之交互很重要。compose命令行工具可以用来创建这样的环境并与之交互。

    compose文件提供了一个方法来记录和配置所有的应用程序的服务依赖(数据库,队列,缓存,web服务API等)。使用这个compose命令行工具可以为每个依赖创建和启动一个或多个容器。

    总之,这些功能为开发人员提供了一个方便的方法来开始项目。compose把很多页的开发人员入门指南减小到单个机器可读的compose文件和一些命令。

    自动测试环境

    持续部署或持续集成的一个重要部分是自动测试套件。自动端到端测试依赖运行测试的环境。compose为你的测试套件提供了一个方便的方法来创建和销毁隔离的测试环境。通过在一个compose文件中定义完整的环境,只需要几个命令就可以创建和销毁这些环境。

    1. $ docker-compose up -d
    2. $ ./run_tests
    3. $ docker-compose down

    单主机部署

    compose传统上专注在开发和测试工作流上,不过目前每次发布compose都在使它能够在生产环境在使用有所进展。可以使用compose来部署到一个远程的docker engine。

    标签:Docker 发布于:2019-11-19 05:14:21