Docker Compose 两种安装与使用方案(适用于 Docker 19.03 版本)
Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具,极大地简化了容器集群的编排与管理。在 Docker 19.03 版本中,Docker Compose 的安装与使用方式正处于从“独立二进制文件”向“Docker CLI 插件”过渡的阶段。本文将详细介绍这两种方案的安装与使用,帮助开发者根据自身需求选择最合适的方式。
方案一:独立二进制文件安装(传统方案)
这是最经典、应用最广泛的安装方式。通过下载 Docker Compose 的独立可执行文件,将其放置在系统 PATH 环境变量包含的目录中,即可作为独立命令直接使用。对于 Docker 19.03 而言,这种方式兼容性最好。
1. 安装步骤
首先,使用 curl 命令下载最新稳定版的 Docker Compose 二进制文件(以 Linux x86_64 架构为例,此处以 1.29.2 版本演示,这是 V1 系列的经典稳定版):
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
验证安装是否成功,查看版本信息:
docker-compose --version
2. 使用方法
使用独立二进制文件安装的 Docker Compose,命令格式为 docker-compose(中间带有连字符)。例如,启动服务:
docker-compose up -d
查看当前目录下 compose 服务的运行状态:
docker-compose ps
停止并删除服务容器及网络:
docker-compose down
方案二:作为 Docker CLI 插件安装(现代方案)
随着 Docker 生态的演进,Docker Compose V2 被设计为 Docker CLI 的插件,使得我们可以通过 docker compose(注意中间是空格而非连字符)的形式来调用。这种方案更符合 Docker 命令行工具一体化的未来发展方向。Docker 19.03 已经支持 CLI 插件机制。
1. 安装步骤
首先,需要为当前用户创建 Docker CLI 插件目录:
mkdir -p ~/.docker/cli-plugins/
下载 Docker Compose V2 的二进制文件到该插件目录中,并重命名为 docker-compose(注意:此文件名是 Docker 识别插件的标识):
curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
赋予其可执行权限:
chmod +x ~/.docker/cli-plugins/docker-compose
验证插件是否安装成功:
docker compose version
2. 使用方法
作为插件使用时,compose 作为 docker 命令的子命令,中间通过空格分隔。例如,启动服务:
docker compose up -d
查看服务日志:
docker compose logs -f
停止并删除服务容器:
docker compose down
配置文件示例与外部调用
无论采用哪种安装方案,Docker Compose 的核心配置文件均为 docker-compose.yml。以下是一个包含 Nginx 服务及环境变量配置的示例:
version: '3.8' services: webapp: image: nginx:latest ports: - "8080:80" environment: - API_ENDPOINT=https://www.ipipp.com/api/v1/data volumes: - ./html:/usr/share/nginx/html restart: always
在上述配置中,我们将本地的 ./html 目录挂载到了容器内 Nginx 的默认网页目录。如果需要在网页中测试展示,可以编写如下简单的 HTML 文件放在 ./html/index.html 中:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Docker Compose Test</title> </head> <body> <h1>Hello Docker Compose!</h1> <p>Current API Endpoint is configured to external service.</p> </body> </html>
启动服务后,若需要将容器的标准输出重定向或传递给其他脚本处理,可以在命令行中使用管道符及重定向符号(注意在 Shell 中 & 等特殊字符的转义):
docker compose up -d > deploy.log 2>&1
两种方案对比与总结
| 特性 | 方案一:独立二进制文件 (V1) | 方案二:Docker CLI 插件 (V2) |
|---|---|---|
| 命令格式 | docker-compose (带连字符) | docker compose (带空格) |
| 安装路径 | /usr/local/bin/ | ~/.docker/cli-plugins/ |
| 编写语言 | Python | Go |
| 未来发展 | 已不再积极开发新功能 | 官方推荐,持续迭代更新 |
对于使用 Docker 19.03 的用户,如果您更习惯传统的操作方式且不需要 V2 的新特性,方案一依然稳定可用。但考虑到长远的发展和官方的推荐,建议采用方案二进行安装。方案二的 docker compose 命令不仅输入更符合直觉,还能更好地与 Docker 生态中的其他工具集成,为后续升级 Docker Engine 也打下了良好的基础。