讲师中心 微信公众号
AI工具推荐 视频效率加速

Docker 版本升级时怎么在生产环境中平滑更新而不中断业务

云丽姑娘_5968

云丽姑娘_5968

发布时间:2026-07-25 14:09:22

|

361人浏览过

|

来源于php中文网

原创

生产环境Docker引擎平滑升级必须分层隔离、逐级验证、可逆回退:仅允许同主版本小版本升级或升至下一LTS版,需前置确认内核兼容性、固化containerd/overlay2/网络插件依赖,通过灰度节点验证容器重启、metrics、DNS等硬指标,并预置apt回退方案。

docker 版本升级时怎么在生产环境中平滑更新而不中断业务

生产环境 Docker 版本升级,核心目标不是“换新版本”,而是“不中断业务”。这和应用镜像更新不同——Docker 引擎本身是宿主机级基础设施,升级过程若操作不当,会导致所有容器瞬时停运、网络中断、存储挂载失效,甚至节点不可控。真正的平滑升级,靠的不是跳过检查,而是分层隔离 + 逐级验证 + 可逆回退。

必须前置确认:当前 Docker 是否支持原地升级

Docker 官方自 20.10 起明确不推荐跨大版本原地升级(如 19.x → 24.x),尤其禁止跳过中间 LTS 版本。生产环境只允许:

  • 同一主版本内小版本升级(如 24.0.0 → 24.0.7)
  • 或升级到下一个官方认证的 LTS 版本(如 24.0.x → 26.0.x),且需经完整兼容性验证

执行前运行命令确认当前状态:

docker version --format '{{.Server.Version}}'  # 查看服务端版本
docker info | grep "Kernel Version\|Operating System"  # 检查内核与系统兼容性

升级前锁定关键依赖链

Docker 升级常引发连锁反应,必须提前固化三类依赖:

  • 容器运行时:确认是否使用 containerd(Docker 20.10+ 默认),避免混用 cri-o 或旧版 runc
  • 存储驱动:生产环境强烈建议固定为 overlay2,禁用 devicemapper(已弃用)或 vfs(性能差)
  • 网络插件:若使用 calico/cilium,确认其版本明确支持目标 Docker 版本(查对应 release note)

示例:某次升级失败源于 calico v3.24 未适配 Docker 24.0 的 containerd 1.7.0 API 变更,导致 Pod 网络初始化超时。

分阶段灰度升级策略(非全量一刀切)

Docker Cli
Docker Cli

使用 Docker CLI 构建、运行、停止、检查和管理容器与镜像的助手。用于执行容器相关任务。

下载

直接在所有生产节点上 apt upgrade docker-ce 是高危操作。正确路径是:

  • 第一步:选 1 台非核心节点(如日志采集节点、监控探针节点)作为灰度试点
  • 第二步:停掉该节点上所有非关键容器(保留 prometheus-node-exporter、fluent-bit 等基础组件)
  • 第三步:执行升级并验证
    sudo apt-get update && sudo apt-get install docker-ce=5:26.0.0~3-0~ubuntu-jammy
    sudo systemctl restart docker
    docker ps -q | xargs -r docker kill  # 清理残留旧容器(可选)
    docker run --rm hello-world  # 验证引擎可用
  • 第四步:观察 2 小时,重点检查:
    ✅ 容器自动重启是否正常(restart: always 生效)
    ✅ docker stats 输出是否稳定(无 panic 或 metrics 失效)
    ✅ docker network inspect 是否能正确解析服务发现 DNS

升级后必须验证的三项硬指标

光跑通 hello-world 不代表安全。以下检查项任一失败,立即回退:

  • 存储一致性验证
    运行一个挂载了生产卷的测试容器,写入文件后 exec 进入确认内容未损坏:

    docker run -d --name test-vol -v /data:/mnt alpine:latest tail -f /dev/null
    docker exec test-vol sh -c 'echo "test-$(date)" > /mnt/upgrade-check.txt'
    docker kill test-vol && docker rm test-vol
    # 手动检查宿主机 /data/upgrade-check.txt 内容是否完整
  • 健康检查穿透验证
    若业务容器配置了 HEALTHCHECK,升级后需确认:

    docker inspect <container-id> | jq '.[].State.Health'
    # 状态必须为 healthy,且 `FailingStreak` 为 0
  • API 兼容性快照比对
    对接 CI/CD 或运维脚本的团队,务必比对升级前后 /var/run/docker.sock 的 API 响应:

    curl --unix-socket /var/run/docker.sock http://localhost/v1.43/version | jq '.Version'
    # 确保客户端 SDK(如 python-docker 6.x)仍能调用 v1.43 接口

回退方案必须提前准备好,而非“出了事再想”

Docker 升级失败时,最稳妥回退方式不是卸载重装,而是快速切回旧包版本:

  • Ubuntu/Debian 环境:

    apt list --installed | grep docker  # 记录旧版本号,如 5:24.0.7~3-0~ubuntu-jammy
    sudo apt-get install docker-ce=5:24.0.7~3-0~ubuntu-jammy docker-ce-cli=... containerd.io=...
    sudo systemctl restart docker
  • 回退后第一件事:docker system prune -a 清理可能残留的新版元数据,再逐个 docker start 关键服务

不复杂但容易忽略

热门AI工具

更多
UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

665

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4759

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

5677

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2133

2024.04.08

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

219

2026.02.11

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

411

2026.03.31

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

380

2026.05.11

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

285

2026.05.15

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

20

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn