努力
加油

国内服务器环境下 Ubuntu 22.04 LTS 推荐搭配哪个版本的Docker使用?

在国内服务器环境下,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 官方源 + 国内镜像提速器

步骤如下:

  1. 卸载旧版本(如果有):

    sudo apt-get remove docker docker-engine docker.io containerd runc
  2. 设置 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
  3. 安装 Docker Engine:

    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  4. 配置国内镜像提速器(核心步骤):
    这是最关键的一步。编辑 /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 守护进程重启时容器保持运行,对生产环境友好。
    • 日志轮转配置避免磁盘被日志撑爆。
  5. 重启 Docker 服务:

    sudo systemctl daemon-reload
    sudo systemctl restart docker
  6. 验证:

    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 工具进行自动化部署,避免手动干预导致版本不一致。