温馨提示×

ubuntu docker如何进行版本兼容

小樊
42
2025-12-10 13:21:58
栏目: 智能运维

Ubuntu 上 Docker 的版本兼容实践

一 兼容性原则

  • 主机系统与 Docker 版本的匹配:在 Ubuntu 22.04 Jammy 上,可直接安装 Docker 25.0.5 等较新版本;不同 Ubuntu 版本的 APT 源路径不同,安装时需使用与系统代号一致的版本字符串(如 jammy/focal)。旧系统(如 16.04 Xenial)已超出主流支持周期,建议升级系统或采用官方安装脚本与镜像源。
  • 镜像与容器的跨版本运行:新版本 Docker 构建的镜像/容器通常可在旧版本上运行,反之不一定成立;因此生产环境宜固定 Engine 版本,避免频繁升级导致不兼容。
  • 生态组件与 Docker 版本的匹配:第三方组件存在版本边界,例如 Portainer 2.11.1Docker 26+ 不兼容,升级前需核对配套矩阵。

二 版本选择与安装路径

  • 准备与添加官方源(推荐):安装依赖、导入 GPG、写入 APT 源,确保使用与系统代号一致的仓库(如 jammy)。
  • 查询可用版本并安装指定版本:使用 apt 的版本列表功能锁定目标版本,避免意外升级;安装完成后用 hello-world 验证。
  • 安装示例(Ubuntu 22.04 安装 Docker 25.0.5):
    • 安装依赖与密钥
      sudo apt-get update
      sudo apt-get install -y ca-certificates curl software-properties-common
      sudo install -m 0755 -d /etc/apt/keyrings
      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
      sudo chmod a+r /etc/apt/keyrings/docker.gpg
    • 添加 APT 源(自动使用系统代号)
      echo “deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo “$VERSION_CODENAME”) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    • 查询并安装指定版本(示例为 25.0.5)
      sudo apt-get update
      apt-cache madison docker-ce # 查找形如“5:25.0.5-1~ubuntu.22.04~jammy”的条目
      sudo apt-get install -y docker-ce=5:25.0.5-1~ubuntu.22.04~jammy docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    • 验证
      sudo docker run --rm hello-world
      上述流程同样适用于 20.04 Focal 等版本,只需确保版本字符串与代号匹配。

三 升级与回滚策略

  • 就地升级(保持兼容性):先备份关键配置(如 /etc/docker/daemon.json),再执行升级与重启,验证服务与核心业务容器可用性。
    • 备份与升级
      sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak
      sudo apt-get update && sudo apt-get upgrade docker-ce
      sudo systemctl restart docker
  • 回滚到指定版本:若新版本异常,使用已记录的版本字符串进行降级安装,恢复配置后重启。
    • 降级示例
      sudo apt-get install -y docker-ce=5:20.10.xx-1~ubuntu.22.04~jammy
      sudo systemctl restart docker
  • 重大变更前的演练:在测试环境验证镜像构建、推送、拉取与运行链路,必要时固定镜像标签(如 nginx:1.24),减少因 Engine 升级带来的不确定性。

四 常见兼容性问题排查

  • “无法找到软件包”:检查 /etc/apt/sources.list.d/docker.list 中的系统代号(如 jammy)与架构是否匹配,必要时更新 APT 索引或更换镜像源。
  • 版本不可用:目标版本可能已被仓库移除,改用 apt-cache madison 列出的可用版本,或选择相邻的小版本。
  • 服务未运行:使用 systemctl 检查状态与日志,确认安装后 Docker 守护进程已启动。
  • 权限问题:将当前用户加入 docker 组并重新登录,避免每次使用 sudo。
  • 第三方组件不兼容:升级前核对生态矩阵,例如 Portainer 2.11.1 不支持 Docker 26+

0