Ubuntu 系统 Docker Compose 快速安装指南
引言
在现代软件开发和部署流程中,容器技术已成为不可或缺的一部分。Docker 作为最流行的容器平台之一,极大地简化了应用的打包、分发和运行。然而,当应用变得复杂,由多个相互依赖的容器组成时(例如,一个 Web 应用、一个数据库和一个缓存服务),手动管理这些容器会变得非常繁琐。
这时,Docker Compose 应运而生。Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件来配置应用程序的服务,然后使用一个命令即可创建和启动所有服务。它极大地简化了多容器应用的开发、测试和部署流程。
本文将详细介绍如何在 Ubuntu 系统上快速、可靠地安装 Docker Compose。我们将主要聚焦于推荐的安装方法,并提供详细的步骤和解释,确保即使是初学者也能轻松完成安装。
什么是 Docker Compose?为什么使用它?
Docker Compose 允许你使用一个单一的配置文件(通常是 docker-compose.yml
)来定义你的应用程序的所有服务、网络和卷。这个文件描述了应用的结构、每个服务的镜像、端口映射、卷挂载、环境变量等。
使用 Docker Compose 的主要优势包括:
- 简化配置: 将整个应用的配置集中在一个文件中,清晰明了。
- 一键部署: 使用
docker compose up
命令即可启动配置文件中定义的所有服务及其依赖项。 - 环境隔离: 每个服务都在独立的容器中运行,相互隔离,易于管理。
- 声明式管理: 配置文件本身就是应用的“蓝图”,易于版本控制和协作。
- 快速迭代: 修改配置文件后,可以轻松地重建或更新部分服务。
安装前的准备
在开始安装 Docker Compose 之前,请确保你的 Ubuntu 系统满足以下条件:
- 已安装 Ubuntu 操作系统: 本指南基于 Ubuntu 系统进行编写。
- 已安装 Docker Engine: Docker Compose 依赖于 Docker Engine 才能运行。如果尚未安装 Docker,请参照 Docker 官方文档或相关教程先安装 Docker Engine。
- 拥有
sudo
权限的用户: 安装 Docker Compose 需要管理员权限来下载文件并设置执行权限。 - 稳定的互联网连接: 需要从 GitHub 下载 Docker Compose 的二进制文件。
Docker Compose 版本说明:V1 vs V2
在开始安装步骤之前,需要了解 Docker Compose 的两个主要版本:
- Docker Compose V1: 这是一个独立的 Python 应用程序,通过
pip
安装或下载独立二进制文件。其可执行命令通常是docker-compose
。 - Docker Compose V2: 这是 Docker CLI 的一个插件,使用 Go 语言编写,性能更好,并且与 Docker CLI 集成更紧密。其可执行命令是
docker compose
(注意命令中没有连字符)。
Docker 官方现在推荐使用 Docker Compose V2。V2 通常通过下载其二进制文件并放置到系统 PATH 中来安装,或者作为 Docker Desktop 的一部分安装。在 Ubuntu 服务器环境下,下载二进制文件是最常见的安装方式。本指南将主要介绍如何安装 Docker Compose V2,使其可以通过 docker compose
命令来调用。
快速安装 Docker Compose V2 (推荐方法)
这种方法是通过 curl
命令直接从 Docker 官方 GitHub 仓库下载 Docker Compose V2 的二进制文件,并将其放置到系统的可执行路径中。这是 Docker 官方推荐的方式,可以确保你安装的是最新且稳定的版本。
步骤 1:下载 Docker Compose 二进制文件
我们将使用 curl
命令下载 Docker Compose 的二进制文件。为了获取最新版本,我们可以利用 GitHub Releases 的 /latest/download/
路径。这个路径会自动重定向到最新版本的下载链接。为了确保下载的二进制文件与你的系统架构匹配,我们将使用 $(uname -s)
和 $(uname -m)
这两个命令来动态获取操作系统类型和架构。
打开你的 Ubuntu 终端,执行以下命令:
bash
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
我们来详细解释这个命令的各个部分:
sudo
: 以超级用户权限运行命令,这是因为我们需要将文件写入到/usr/local/bin
这个通常需要 root 权限的目录。curl
: 一个强大的数据传输工具,用于从指定的 URL 下载文件。-L
: 选项让curl
遵循重定向。GitHub 的/latest/download/
路径会重定向到实际的文件下载 URL,所以这个选项是必需的。https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)
: 这是下载文件的 URL。https://github.com/docker/compose/releases/latest/download/
: 指向 Docker Compose GitHub 仓库最新版本的下载目录。docker-compose-
: 这是二进制文件名的前缀。$(uname -s)
: 执行uname -s
命令,它会输出操作系统的内核名称。在 Linux 系统上,通常是Linux
。$(uname -m)
: 执行uname -m
命令,它会输出机器的硬件架构名称。在大多数常见的 Ubuntu 系统上,这会是x86_64
。因此,对于大多数用户,这个完整的 URL 会解析为类似.../docker-compose-Linux-x86_64
的路径。
-o /usr/local/bin/docker-compose
: 选项指定将下载的文件保存到哪个路径和文件名为。/usr/local/bin/
: 这是一个标准的存放用户自定义或第三方可执行文件的目录,并且通常已经包含在系统的 PATH 环境变量中,这样你就可以在任何地方直接通过文件名来运行它。docker-compose
: 指定保存的文件名为docker-compose
。虽然我们最终会使用docker compose
命令 (V2),但下载的二进制文件通常仍命名为docker-compose
,并通过内部机制与docker
CLI 集成。
执行命令后,curl
会下载 Docker Compose V2 的二进制文件,并将其保存为 /usr/local/bin/docker-compose
。如果下载成功,终端不会输出太多信息,或者显示下载进度。
步骤 2:应用可执行权限
下载的二进制文件默认是没有执行权限的,你需要手动添加执行权限,否则系统无法将其作为命令运行。
使用 chmod
命令为下载的文件添加可执行权限:
bash
sudo chmod +x /usr/local/bin/docker-compose
解释:
sudo
: 同样需要超级用户权限来修改/usr/local/bin
目录下的文件权限。chmod
: 修改文件权限的命令。+x
: 给文件添加可执行权限。/usr/local/bin/docker-compose
: 指定要修改权限的文件。
执行此命令后,/usr/local/bin/docker-compose
文件就具备了执行能力。
步骤 3:验证安装
安装完成后,你需要验证 Docker Compose 是否成功安装并可以正常运行。你可以通过查看 Docker Compose 的版本信息来验证。
由于我们安装的是 Docker Compose V2,其主要的调用方式是作为 docker
命令的一个子命令:
bash
docker compose version
执行这个命令后,如果安装成功,你应该会看到类似以下的输出,显示 Docker Compose 的版本信息:
Docker Compose version v2.20.2 # 版本号可能会有所不同
如果你看到版本信息,恭喜你,Docker Compose V2 已经成功安装在你的 Ubuntu 系统上!
注意: 即使你下载的二进制文件名为 docker-compose
并将其放置在 /usr/local/bin/
,Docker Compose V2 的推荐调用方式仍然是 docker compose
。这是因为 V2 集成到了 Docker CLI 中。尝试运行 docker-compose version
(带连字符) 可能 也会工作,但官方推荐并鼓励使用 docker compose
。
备选安装方法:使用 apt (不推荐用于 V2 最新版)
Docker Compose V1 或 V2 的一些早期版本可能可以通过 Ubuntu 的包管理器 apt
进行安装。然而,通过 apt
安装的版本通常不是最新的,而且可能安装的是基于 Python 的 V1 版本。Docker 官方推荐的 V2 安装方式是直接下载二进制文件。
不过,作为备选方法,你可以尝试以下步骤(请注意,这可能不会安装最新的 Docker Compose V2):
- 更新 apt 包列表:
bash
sudo apt update - 安装 docker-compose 包:
bash
sudo apt install docker-compose
安装完成后,你可以通过 docker-compose version
(注意这里的命令是带连字符的,因为 apt
安装的通常是 V1 版本或以 V1 兼容模式运行的 V2 版本) 来验证安装。
重要提示: 强烈建议优先使用前面介绍的 curl
方法安装 Docker Compose V2,以获取最新版本和最佳性能。只有在特定需求(例如,需要 V1 版本或希望通过包管理器管理软件)的情况下,才考虑使用 apt
方法。如果你使用 apt
安装了 Docker Compose V1,并且希望升级到 V2,你可能需要先卸载 V1 版本:
bash
sudo apt remove docker-compose
sudo apt autoremove
然后按照 curl
方法重新安装 V2。
使用 Docker Compose
安装完成后,你就可以开始使用 Docker Compose 来管理你的多容器应用了。基本的使用流程如下:
-
创建
docker-compose.yml
文件: 在你的项目根目录下创建一个名为docker-compose.yml
的文件。在这个文件中定义你的服务。一个简单的示例
docker-compose.yml
文件:“`yaml
version: ‘3.8’ # 使用 Compose 文件格式版本 3.8services:
web: # 定义一个名为 ‘web’ 的服务
image: nginx:latest # 使用最新的 Nginx 镜像
ports:
– “80:80” # 将宿主机的 80 端口映射到容器的 80 端口
volumes:
– ./html:/usr/share/nginx/html # 将当前目录下的 html 文件夹挂载到容器的 Nginx 默认网页目录
depends_on:
– api # 依赖于 api 服务先启动api: # 定义一个名为 ‘api’ 的服务
build: ./api # 从当前目录下的 api 文件夹中的 Dockerfile 构建镜像
ports:
– “5000:5000”
environment:
DATABASE_URL: postgres://user:password@db:5432/mydatabase # 设置环境变量连接数据库db: # 定义一个名为 ‘db’ 的服务
image: postgres:13 # 使用 PostgreSQL 13 镜像
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
volumes:
– db_data:/var/lib/postgresql/data # 持久化数据库数据到卷volumes: # 定义一个卷
db_data:
“`这个文件定义了三个服务:一个 Nginx web 服务器,一个构建自 Dockerfile 的 API 服务,以及一个 PostgreSQL 数据库服务。它们通过内部网络相互连接,并且配置了端口映射和数据持久化。
-
启动应用: 在包含
docker-compose.yml
文件的目录下,打开终端并执行以下命令来启动所有服务:bash
docker compose up -d解释:
*docker compose up
: 根据docker-compose.yml
文件创建并启动所有服务。
*-d
: 在后台(detached mode)运行容器,这样你可以关闭终端而不会停止容器。Docker Compose 会根据配置文件拉取所需的镜像(如果本地没有),构建镜像(如果指定了
build
),然后创建和启动容器。 -
查看应用状态: 要查看你的应用中各个服务的运行状态,可以使用:
bash
docker compose ps这将列出所有服务的容器及其状态(运行中、退出等)。
-
查看服务日志: 查看特定服务的日志输出:
bash
docker compose logs <service_name>例如:
docker compose logs web
-
停止和移除应用: 当你完成工作需要停止并移除所有服务、网络和卷时,使用:
bash
docker compose down解释:
*docker compose down
: 停止并移除docker-compose.yml
文件中定义的所有容器、网络和默认的卷。如果你想保留卷中的数据,可以使用
docker compose down --volumes
。
故障排除 (Troubleshooting)
在安装或使用过程中可能会遇到一些问题。以下是一些常见问题及其解决方法:
-
docker compose: command not found
- 原因: Docker Compose 二进制文件没有被放置在系统的 PATH 环境变量所包含的目录中,或者文件没有执行权限。
- 解决方法:
- 确认你是否正确地将文件下载到了
/usr/local/bin/
目录。可以使用ls -l /usr/local/bin/docker-compose
查看文件是否存在以及权限。确保文件存在并且权限包含x
(可执行权限)。 - 确认
/usr/local/bin
是否包含在你的 PATH 环境变量中。在终端输入echo $PATH
,你应该看到/usr/local/bin
在输出的路径列表中。如果不在,可能是你的 shell 配置问题,或者你需要注销并重新登录。 - 确保你执行了
sudo chmod +x /usr/local/bin/docker-compose
命令赋予了执行权限。
- 确认你是否正确地将文件下载到了
-
Permission denied
(权限被拒绝)- 原因: 你尝试在没有足够权限的情况下执行需要
sudo
的操作(如下载到系统目录或修改文件权限)。 - 解决方法: 确保你在需要管理员权限的步骤前面加上了
sudo
。如果你在使用 Docker 命令时遇到权限问题(例如,无法拉取镜像),这通常是因为你的用户不在docker
用户组中。你可以通过sudo usermod -aG docker $USER
命令将当前用户添加到docker
用户组,然后注销并重新登录(或重启你的 shell)使更改生效。
- 原因: 你尝试在没有足够权限的情况下执行需要
-
curl: (6) Could not resolve host: github.com
或其他网络错误- 原因: 你的系统无法连接到 GitHub。这可能是网络配置、防火墙或代理问题。
- 解决方法:
- 检查你的互联网连接是否正常。
- 如果你在使用代理服务器,确保你的系统或
curl
配置了正确的代理设置(可以通过设置HTTP_PROXY
,HTTPS_PROXY
环境变量)。 - 检查是否有防火墙阻止了对外连接(特别是 HTTPS 流量到 GitHub)。
-
Docker Compose V1 和 V2 版本冲突或混淆
- 原因: 系统中同时存在 Docker Compose V1 (
docker-compose
) 和 V2 (docker compose
) 的安装,或者 PATH 变量中包含了旧版本的路径。 - 解决方法:
- 确定你希望使用哪个版本。推荐使用 V2。
- 如果你通过
apt
安装了 V1,并且也通过curl
安装了 V2,你可能需要卸载 V1 (sudo apt remove docker-compose
) 以避免混淆。 - 验证
which docker-compose
(查找 V1 可执行文件路径) 和which docker
(确认 Docker CLI 存在,V2 是其子命令) 的输出。确保/usr/local/bin/docker-compose
(或 V2 实际安装路径) 优先级高于任何旧的 V1 安装路径。
- 原因: 系统中同时存在 Docker Compose V1 (
升级 Docker Compose
升级 Docker Compose V2 非常简单。基本上重复安装的步骤即可。由于我们使用了 /latest/download/
路径,再次执行下载命令会自动下载并覆盖当前安装的最新版本二进制文件。
“`bash
重新下载最新版本
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
确保权限正确(如果之前执行过,这一步通常不是必需的,但执行一次无妨)
sudo chmod +x /usr/local/bin/docker-compose
验证新版本
docker compose version
“`
这会自动将 /usr/local/bin/docker-compose
替换为最新下载的版本。
总结
通过本文的详细指南,你应该已经成功地在你的 Ubuntu 系统上快速安装了 Docker Compose V2。我们详细讲解了推荐的 curl
下载安装方法,解释了每个步骤的含义,并提供了基本的 Docker Compose 使用示例和常见问题排查方法。
Docker Compose 是管理复杂多容器应用的强大工具。掌握它的安装和基本使用,将极大地提升你在容器化应用开发和部署中的效率。现在,你可以开始创建你的 docker-compose.yml
文件,并利用 Docker Compose 的强大功能来编排你的应用程序了!
如果你在使用过程中遇到更复杂的问题,可以查阅 Docker Compose 的官方文档,那里有更深入的配置选项和高级用法介绍。
祝你在容器化的世界里开发愉快!