本教程将指导你在 Ubuntu 系统上安装 Docker Engine 和 Docker Compose 插件。内容基于 Docker 官方文档整理,涵盖多种安装方式和常见问题解决方案。
Table of contents
Open Table of contents
前置要求
系统要求
安装 Docker Engine 需要 64 位版本的以下 Ubuntu 版本之一:
- Ubuntu Questing 25.10
- Ubuntu Noble 24.04 (LTS)
- Ubuntu Jammy 22.04 (LTS)
Docker Engine 支持的架构:x86_64 (amd64)、armhf、arm64、s390x 和 ppc64le (ppc64el)。
注意:在 Ubuntu 衍生发行版(如 Linux Mint)上的安装不受官方支持,但可能可以正常工作。
防火墙注意事项
在安装 Docker 之前,需要了解以下安全影响:
- 如果使用
ufw或firewalld管理防火墙,当使用 Docker 暴露容器端口时,这些端口会绕过防火墙规则 - Docker 仅兼容
iptables-nft和iptables-legacy,不支持使用nft创建的防火墙规则 - 确保防火墙规则集使用
iptables或ip6tables创建,并添加到DOCKER-USER链中
第一步:卸载旧版本
在安装 Docker Engine 之前,需要卸载所有冲突的软件包。
卸载非官方包
运行以下命令卸载所有冲突的包:
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
sudo apt-get remove $pkg
done
注意:存储在
/var/lib/docker/中的镜像、容器、卷和网络在卸载 Docker 时不会自动删除。如果想要全新安装并清理现有数据,请参考本文末尾的卸载部分。
第二步:安装 Docker Engine
Docker Engine 有多种安装方式,本教程重点介绍使用 apt 仓库安装的方法,这是最推荐的方式。
方法一:使用 apt 仓库安装(推荐)
1. 设置 Docker 的 apt 仓库
# 添加 Docker 的官方 GPG 密钥
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 将仓库添加到 Apt 源
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
2. 安装 Docker 包
安装最新版本:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装特定版本:
# 列出可用版本
apt-cache madison docker-ce | awk '{ print $3 }'
# 安装指定版本(将 VERSION_STRING 替换为实际版本号)
VERSION_STRING=5:27.0.0-1~ubuntu.24.04~noble
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
3. 验证安装
Docker 服务在安装后会自动启动。验证 Docker 是否正在运行:
sudo systemctl status docker
如果服务未启动,手动启动:
sudo systemctl start docker
运行 hello-world 镜像验证安装成功:
sudo docker run hello-world
如果看到欢迎消息,说明 Docker Engine 已成功安装并运行。
方法二:使用便捷脚本安装
Docker 提供了便捷脚本用于快速安装,适合开发和测试环境。
警告:便捷脚本不推荐用于生产环境。使用前请了解其潜在风险和限制。
预览脚本步骤
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh --dry-run
执行安装
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
在基于 Debian 的发行版上,docker 服务会自动启动。在基于 RPM 的发行版(如 CentOS、Fedora 或 RHEL)上,需要手动启动。
方法三:手动安装 deb 包
如果无法使用 apt 仓库,可以手动下载并安装 deb 包。
1. 下载包文件
访问 https://download.docker.com/linux/ubuntu/dists/
- 选择你的 Ubuntu 版本
- 进入
pool/stable/并选择适用的架构 - 下载以下 deb 文件:
containerd.io_<version>_<arch>.debdocker-ce_<version>_<arch>.debdocker-ce-cli_<version>_<arch>.debdocker-buildx-plugin_<version>_<arch>.debdocker-compose-plugin_<version>_<arch>.deb
2. 安装包
sudo dpkg -i ./containerd.io_<version>_<arch>.deb \
./docker-ce_<version>_<arch>.deb \
./docker-ce-cli_<version>_<arch>.deb \
./docker-buildx-plugin_<version>_<arch>.deb \
./docker-compose-plugin_<version>_<arch>.deb
3. 验证安装
sudo systemctl status docker
sudo docker run hello-world
第三步:安装 Docker Compose
如果你使用上述方法安装了 Docker Engine,Docker Compose 插件已经包含在内。你可以验证安装:
docker compose version
手动安装 Docker Compose(可选)
如果需要手动安装或更新 Docker Compose 插件:
为当前用户安装
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
为所有用户安装
sudo mkdir -p /usr/local/lib/docker/cli-plugins
sudo curl -SL https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
验证安装
docker compose version
更新 Docker Compose
使用 apt 仓库安装的用户:
sudo apt-get update
sudo apt-get install docker-compose-plugin
手动安装的用户需要重新下载并安装新版本。
后续配置
允许非 root 用户运行 Docker
默认情况下,只有 root 用户和 docker 组的用户才能运行 Docker 命令。
1. 创建 docker 组(通常已存在)
sudo groupadd docker
2. 将当前用户添加到 docker 组
sudo usermod -aG docker $USER
3. 注销并重新登录
或者运行以下命令激活组更改:
newgrp docker
4. 验证无需 sudo 即可运行
docker run hello-world
配置 Docker 开机自启
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
升级 Docker
使用 apt 仓库升级
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
使用便捷脚本安装后升级
如果使用便捷脚本安装,应直接使用包管理器升级,不要重新运行脚本。
sudo apt-get update
sudo apt-get upgrade docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
卸载 Docker
1. 卸载 Docker 包
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
2. 删除所有镜像、容器和卷
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
3. 删除源列表和密钥环
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.asc
注意:主机上的任何编辑过的配置文件必须手动删除。
常见问题
运行 Docker 命令时出现权限错误
如果看到类似 “permission denied” 的错误,说明你的用户不在 docker 组中。按照”允许非 root 用户运行 Docker”部分的步骤操作。
Docker 服务无法启动
检查服务状态和日志:
sudo systemctl status docker
sudo journalctl -xeu docker.service
网络问题
如果遇到网络相关问题,可能需要配置 DNS 或代理设置。编辑 /etc/docker/daemon.json:
{
"dns": ["8.8.8.8", "8.8.4.4"]
}
重启 Docker 服务:
sudo systemctl restart docker
总结
本教程介绍了在 Ubuntu 系统上安装 Docker Engine 和 Docker Compose 的完整流程。推荐使用 apt 仓库安装方法,这样可以方便地进行后续更新和维护。安装完成后,记得配置非 root 用户权限和开机自启,以获得更好的使用体验。
更多信息请参考:
内容基于 Docker 官方文档改编,遵循 Apache License, Version 2.0。