Docker之十四:Docker Compose
什么是 Compose ?
Compose 负责实现基于 Docker 容器的多应用服务的快速编排,它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组关联的应用容器为一个服务栈(stack)。
Compose 中的几个重要概念
- 任务(task):一个容器被称为一个任务。任务拥有独一无二的 ID,在同一个服务中的多个任务序号依次递增。
- 服务(service):某个相同的应用镜像的容器副本集合,一个服务可以横向扩展为多个容器实例。
- 服务栈(sack):由多个服务组成,相互配合完成特定业务,如 Web 应用服务、数据库服务共同构成 Web 服务栈,一般由一个 docker-compose.yml 文件定义。
Compose 默认管理对象是服务栈通过子命令对栈中的多个服务进行便捷的生命周期管理。
Linux 安装 Compose
Windows 和 MacOS 的桌面版 Docker 已经默认安装了 Compose,这里我们只说明 Linux(以 Ubuntu 系统为例)环境下 Compose 的安装方法。
pip 安装
Compose 可以通过 Python 的 pip 工具进行安装,前提是需要新安装pip,如果系统没有安装的话。
# 在已经安装了 python3 的基础上执行下面的命令,即可安装 pip
$ sudo apt install python3-pip
安装 Compose:
$ sudo pip install -U docker-compose
查看 Compose 版本:
$ docker-compose -v
卸载 Compose:
$ sudo pip uninstall docker-compose
二进制包安装
Step1、下载 Docker Compose 稳定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Step2、赋权限和创建软连接:
# 赋可执行权限
$ sudo chmod a+x /usr/local/bin/docker-compose
# 创建软链接
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Step3、查看 Compose 版本:
$ docker-compose version
如果想要卸载二进制安装的 Docker Compose,只需要删除下载的 /usr/local/bin/docker-compose,如果创建了软链接也一并删除即可。
Compose 命令说明
执行 docker-compose help 可以查看 compose 命令的使用格式。
-
指令格式:
-
OPTIONS:
-
COMMANDS:
Compose 环境变量
环境变量可以用来配置 Compose 的行为。以 DOCKER_ 开头的变量和用来配置 Docker 命令行客户端的使用一样。
Compose 模板文件
默认的 Compose 模板文件称为 docker-compose.yml,格式为 YAML。
常用的 yml 配置指令如下图所示:
应用案例
一个简单的应用
- 创建项目目录 compose/test。
- 在test目录下创建 python 程序 app.py:
- 在 test 目录下创建 requirements.txt 文件,文件内容为:
- 创建 Dockerfile 文件:
- 创建 docker-compose.yml 文件
- 执行构建
$ sudo docker-compose up
7. 访问 http://192.168.194.132:5000/
Web 负载均衡
一个 Haproxy 作为负载均衡器,后端挂载三个 web 容器。
- 创建项目目录 haproxy_web、aproxy_web/web、haproxy_web/haproxy。
- 在 haproxy_web/web 创建 web 的 Dockerfile 文件,并编辑一个 python 程序 index.py。
- haproxy_web/haproxy 目录创建 Haproxy 的配置文件:
- 在 haproxy_web 目录创建和编辑 docker-compose.yml 文件:
- 执行构建
$ sudo docker-compose up