在国内服务器环境下,Ubuntu 22.04 LTS 搭配 Docker,我的建议非常明确:直接使用 Ubuntu 官方源提供的稳定版(目前通常是 24.x 或最新的 23.x 系列),或者使用 Docker 官方仓库的最新稳定版。
不要为了“追求稳定”去手动锁定一个很老的版本(比如 20.04 时代的 20.10 或更早),也不要盲目追求所谓的“测试版”。以下是具体的技术分析和操作建议:
1. 为什么推荐最新版/官方源版本?
- 内核兼容性:Ubuntu 22.04 基于 Linux Kernel 5.15。Docker 的 cgroup v2、overlayfs2 等底层特性在较新的 Docker 版本中支持得更好。老版本的 Docker 可能无法充分利用新内核的安全性和性能优化。
- 软件依赖同步:Ubuntu 22.04 自带的
docker.io包通常与系统库(如 glibc, libseccomp)保持较好的兼容性。如果你通过 Docker 官方源安装,版本更新频率更高,能更快获得安全补丁。 - 社区生态:绝大多数开源项目(Kubernetes, Prometheus, Nginx 等)的 Dockerfile 都是基于最新稳定版构建的。使用过时的 Docker 版本可能会导致某些镜像拉取后运行异常(尤其是涉及 systemd 或特定 cgroup 控制的场景)。
2. 国内环境下的关键痛点:网络提速
在国内,最大的问题不是 Docker 版本本身,而是镜像拉取速度。无论哪个版本的 Docker,如果配置不好,体验都会极差。
✅ 推荐方案:Docker 官方源 + 国内镜像提速器
步骤如下:
-
卸载旧版本(如果有):
sudo apt-get remove docker docker-engine docker.io containerd runc -
设置 Docker 官方 GPG 密钥和 APT 源:
sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release # 添加 Docker 官方 GPG key sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 设置 stable 仓库 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 -
安装 Docker Engine:
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
配置国内镜像提速器(核心步骤):
这是最关键的一步。编辑/etc/docker/daemon.json:{ "registry-mirrors": [ "https://mirror.ccs.tencentyun.com", "https://mirror.baidubce.com", "https://registry.docker-cn.com" ], "live-restore": true, "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }说明:
tencentyun(腾讯云)和baidubce(百度云)是目前国内比较稳定、速度较快的公共镜像源。registry.docker-cn.com是阿里云早期提供的,现在部分节点已不稳定,但仍有备用价值。- 建议使用多个镜像源以提高容错率。
live-restore: true允许在 Docker 守护进程重启时容器保持运行,对生产环境友好。- 日志轮转配置避免磁盘被日志撑爆。
-
重启 Docker 服务:
sudo systemctl daemon-reload sudo systemctl restart docker -
验证:
docker info | grep Registry docker run hello-world
3. 为什么不推荐用 apt install docker.io?
Ubuntu 自带的 docker.io 包虽然方便,但存在几个问题:
- 版本滞后:Ubuntu 仓库中的 Docker 版本通常比 Docker 官方源慢几个大版本。例如,当官方已经出到 24.x 时,Ubuntu 22.04 的默认源可能还在 20.x 或 23.x。
- 插件缺失:
docker.io包有时不包含docker-compose-plugin或buildx,需要额外手动安装,容易版本冲突。 - 社区趋势:Docker 官方文档和社区最佳实践都推荐使用官方源。
4. 关于 Kubernetes/K8s 用户的特别提示
如果你是在做 K8s 集群,且使用 kubeadm 部署:
- Docker 不再作为 K8s 的默认运行时:K8s 1.24+ 已移除对 Docker shim 的支持,转而使用 containerd。
- 建议:直接安装
containerd作为运行时,Docker 仅用于本地开发调试。此时,Docker 的版本选择依然遵循上述原则——最新版稳定版。
5. 总结
| 项目 | 推荐选择 | 理由 |
|---|---|---|
| Docker 版本 | 最新稳定版(当前为 24.x 或 25.x) | 更好的内核支持、安全补丁、功能特性 |
| 安装方式 | Docker 官方 APT 源 | 版本更新及时,依赖管理清晰 |
| 镜像源 | 腾讯云/百度云的公开镜像提速器 | 解决国内网络延迟和墙的问题 |
| 不推荐 | 手动锁定老版本(如 20.10) | 安全风险高,兼容性问题多 |
最后提醒:定期执行 sudo apt-get update && sudo apt-get upgrade docker-ce 来保持 Docker 处于最新安全状态。在生产环境中,建议结合 CI/CD 工具进行自动化部署,避免手动干预导致版本不一致。
云技术博客