在 Ubuntu 上部署 Docker,强烈建议使用官方仓库中的“新版”(最新稳定版),除非你有非常明确的特定兼容性需求。
以下是详细的决策分析和建议:
1. 为什么推荐“新版”?
- 安全性与漏洞修复:Docker 作为容器运行时,涉及到底层内核交互和隔离机制。旧版本往往包含已知的安全漏洞,而新版本会及时修复这些问题。
- 新特性支持:新版 Docker 引入了许多提升性能和易用性的功能,例如:
- 更高效的存储驱动优化。
- 更好的 Kubernetes 集成(如 Podman 兼容性、CNI 插件改进)。
- 构建缓存的提速(BuildKit 默认启用)。
- 对 ARM64 架构(如 M1/M2 Mac 或 Raspberry Pi)的更好支持。
- 镜像兼容性:随着容器镜像生态的发展,很多新的基础镜像(如最新的 Alpine、Ubuntu Base 等)是依赖较新版本的 Docker 引擎来正确运行的。使用旧版可能导致无法拉取或运行某些现代镜像。
- 维护周期:Docker 官方对旧版本的支持是有限的。一旦停止维护,你将无法获得任何更新补丁。
2. 什么时候可能需要考虑“旧版”?
虽然新版是主流,但在以下极少数场景中,你可能需要锁定旧版本:
- 遗留系统依赖:你的生产环境中有极其古老的自定义脚本或特定的第三方软件,它们明确依赖某个旧版 Docker API 行为,且迁移成本极高。
- 稳定性验证期:如果你所在的团队对“新功能”极其保守,或者刚刚经历了某次新版发布导致的严重 Bug(这种情况较少见,但存在),可能会选择等待一两个小版本更新后再升级。
- 内核版本限制:Docker 的新版本通常要求 Linux 内核有较新的特性(如 cgroups v2, specific seccomp profiles)。如果你的 Ubuntu 系统内核非常老(例如 Ubuntu 16.04 甚至更早),可能无法安装最新版 Docker,此时只能使用适配该内核的旧版 Docker。
3. 如何在 Ubuntu 上正确安装最新版?
不要直接使用 apt install docker.io(这是 Ubuntu 官方源自带的版本,通常滞后且配置不同)。正确的做法是使用 Docker 官方提供的 APT 仓库。
步骤概览:
-
卸载旧版本(如果之前装过):
sudo apt-get remove docker docker-engine docker.io containerd runc -
设置官方仓库:
# 安装依赖 sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release # 添加 GPG 密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 设置仓库 echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null -
安装并启动:
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 启动服务 sudo systemctl start docker sudo systemctl enable docker -
验证版本:
docker version此时显示的版本号应该是最新的 Stable 版本(例如 24.x 或 25.x+)。
总结建议
| 场景 | 推荐方案 |
|---|---|
| 绝大多数开发/生产环境 | 最新版 (Stable) |
| CI/CD 流水线 | 最新版 (确保与云厂商最新镜像兼容) |
| 老旧服务器 (内核<5.x) | 检查 Docker 官方文档,看是否支持;若不支持,需升级系统内核或降级 Docker 至兼容版本 |
| 追求极致稳定 (企业级) | 仍建议用最新版,但遵循“先测试后上线”的流程,不要刻意回退到很久以前的版本 |
结论:除非你的系统内核太老无法支持新版 Docker,否则请直接安装官方源的最新稳定版。这能为你节省未来的维护麻烦和安全风险。
云知识CLOUD