Ubuntu Docker Compose 完整安装教程
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个简单的 YAML 文件,你可以配置应用程序的所有服务,然后使用一个命令即可创建并启动所有服务。对于复杂的应用架构,Docker Compose 可以极大地简化部署和管理流程。本教程将详细介绍如何在 Ubuntu 系统上完整安装 Docker Compose,并涵盖安装后的一些常见问题和最佳实践。
一、前提条件
在开始安装 Docker Compose 之前,你需要确保已经安装了 Docker。如果尚未安装 Docker,请按照以下步骤进行安装:
- 更新包索引:
bash
sudo apt update
- 安装必要的包,允许 apt 通过 HTTPS 使用存储库:
bash
sudo apt install apt-transport-https ca-certificates curl software-properties-common
- 添加 Docker 的官方 GPG 密钥:
bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 设置稳定的存储库:
bash
echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 再次更新包索引:
bash
sudo apt update
- 安装 Docker Engine:
bash
sudo apt install docker-ce docker-ce-cli containerd.io
- 验证 Docker 是否成功安装:
bash
sudo docker run hello-world
如果看到 “Hello from Docker!” 的消息,则说明 Docker 已经成功安装。
二、安装 Docker Compose 的方法
安装 Docker Compose 主要有两种方法:通过 apt 包管理器安装和通过下载二进制文件安装。 两种方法各有优缺点,选择哪种方法取决于你的需求。
方法一:使用 apt 包管理器安装 (推荐)
这种方法是最简单的安装方式,适用于大多数用户。
- 安装 Docker Compose:
bash
sudo apt install docker-compose-plugin
注意: 在较新的 Ubuntu 版本 (22.04 LTS 及更高版本) 中,Docker Compose 被打包为 Docker Engine 的一个插件。 因此,你不再需要安装 docker-compose
包,而是安装 docker-compose-plugin
。
- 验证安装:
bash
docker compose version
如果安装成功,将会显示 Docker Compose 的版本信息。
方法二:下载二进制文件手动安装
这种方法提供了更多的灵活性,允许你选择 Docker Compose 的特定版本。
- 确定要安装的 Docker Compose 版本:
访问 Docker Compose 的 GitHub 发布页面:https://github.com/docker/compose/releases 选择你想要安装的版本。
- 下载 Docker Compose 二进制文件:
将以下命令中的 VERSION
替换为你选择的版本号,并根据你的架构选择合适的二进制文件。对于大多数 Ubuntu 系统,使用 linux/amd64
架构。
bash
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
注意: 请将 v2.23.3
替换为你实际选择的版本号。
- 赋予二进制文件可执行权限:
bash
sudo chmod +x /usr/local/bin/docker-compose
- 验证安装:
bash
docker-compose --version
或者
bash
/usr/local/bin/docker-compose --version
如果安装成功,将会显示 Docker Compose 的版本信息。
三、配置 Docker Compose (可选)
虽然 Docker Compose 可以直接使用,但你可能需要进行一些额外的配置,以满足你的特定需求。
- 配置 Docker 组:
将你的用户添加到 Docker 组,允许你以非 root 用户身份运行 Docker 命令。
bash
sudo usermod -aG docker $USER
newgrp docker
重要: 完成此步骤后,需要注销并重新登录,或者重启系统,才能使更改生效。
- 配置 Docker Compose 的环境变量:
你可以使用环境变量来配置 Docker Compose 的行为。一些常用的环境变量包括:
COMPOSE_FILE
: 指定 Compose 文件的路径。DOCKER_HOST
: 指定 Docker daemon 的地址。
你可以将这些环境变量添加到你的 ~/.bashrc
或 ~/.zshrc
文件中:
bash
echo "export COMPOSE_FILE=./docker-compose.yml" >> ~/.bashrc
source ~/.bashrc
四、使用 Docker Compose 的基本操作
安装完成后,你可以开始使用 Docker Compose 来定义和运行多容器应用程序。
- 创建
docker-compose.yml
文件:
创建一个 docker-compose.yml
文件,用于定义你的应用程序的服务。以下是一个简单的示例:
yaml
version: "3.9"
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: postgres:latest
environment:
POSTGRES_USER: example
POSTGRES_PASSWORD: example
这个 docker-compose.yml
文件定义了两个服务:web
和 db
。 web
服务使用 nginx:latest
镜像,并将主机的 80 端口映射到容器的 80 端口。 db
服务使用 postgres:latest
镜像,并设置了 POSTGRES_USER
和 POSTGRES_PASSWORD
环境变量。
- 启动应用程序:
在包含 docker-compose.yml
文件的目录中,运行以下命令来启动应用程序:
bash
docker compose up -d
-d
标志表示在后台运行应用程序。
- 停止应用程序:
运行以下命令来停止应用程序:
bash
docker compose down
- 查看应用程序的状态:
运行以下命令来查看应用程序的状态:
bash
docker compose ps
- 查看日志:
运行以下命令来查看应用程序的日志:
bash
docker compose logs
五、常见问题和解决方法
docker-compose
命令未找到:
如果在使用 docker-compose
命令时出现 “command not found” 错误,请确保已正确安装 Docker Compose,并且该命令位于你的 $PATH
环境变量中。 如果使用二进制文件安装,请确保二进制文件具有可执行权限,并且位于 /usr/local/bin
目录中。 如果使用 apt 安装,请确认安装的是 docker-compose-plugin
并且使用 docker compose
命令。
- 权限问题:
如果你在运行 Docker 命令时遇到权限问题,请确保你的用户已添加到 Docker 组,并且已经重新登录或重启系统,使更改生效。
- 端口冲突:
如果在启动应用程序时遇到端口冲突,请检查是否有其他应用程序正在使用相同的端口。 你可以使用 netstat -tulnp
命令来查看正在使用的端口。
- 镜像下载失败:
如果在下载 Docker 镜像时遇到问题,请检查你的网络连接,并确保 Docker Hub 能够访问。 你还可以尝试更换 Docker 镜像源,以提高下载速度。
- Compose 文件语法错误:
如果 Docker Compose 无法解析你的 docker-compose.yml
文件,请检查文件是否存在语法错误。 你可以使用在线 YAML 验证工具来检查 YAML 文件的语法。
六、最佳实践
- 使用版本控制:
将 docker-compose.yml
文件存储在版本控制系统(如 Git)中,以便于跟踪更改和回滚。
- 使用环境变量:
使用环境变量来配置应用程序的敏感信息(如密码和 API 密钥),而不是将这些信息硬编码到 docker-compose.yml
文件中。 可以使用 .env
文件存储环境变量,并在 docker-compose.yml
文件中使用 ${VARIABLE_NAME}
引用它们。
- 使用命名卷:
使用命名卷来持久化应用程序的数据。命名卷由 Docker 管理,并且可以跨容器共享。
- 使用健康检查:
为你的服务配置健康检查,以便 Docker Compose 可以自动重启不健康的容器。
- 使用多阶段构建:
使用多阶段构建来减小 Docker 镜像的大小。多阶段构建允许你在一个 Dockerfile 中使用多个 FROM
指令,并将构建结果从一个阶段复制到另一个阶段。
七、总结
本教程详细介绍了如何在 Ubuntu 系统上完整安装 Docker Compose,并涵盖了安装后的一些常见问题和最佳实践。通过遵循这些步骤,你可以轻松地安装和使用 Docker Compose,从而简化你的多容器应用程序的部署和管理流程。 Docker Compose 是一个强大的工具,可以极大地提高你的开发效率。 熟练掌握 Docker Compose 的使用,将成为你构建和部署现代应用程序的重要技能。 记住,不断实践和探索,才能更好地理解和掌握 Docker Compose 的精髓。 祝你使用愉快!