Docker Engine 29 运维升级重点:安全修复、containerd image store 与 cgroup v2
Docker Engine 29 带来多项安全修复和行为变化,本文从运维角度整理升级前需要关注的风险点和验证清单。
Docker Engine 29 是 2026 年运维团队需要重点关注的版本线之一。它不仅有常规 bug fix,也包含多项安全修复、默认行为变化和弃用项。
如果你在生产服务器上直接使用 Docker,或者在 CI/CD 构建机上运行 Docker daemon,升级前应该先看清楚变化点。
为什么 Docker Engine 升级不能只看“能不能启动容器”
很多人升级 Docker 的验证方式很简单:
docker run hello-world
docker ps
这只能证明 daemon 基本可用,不能证明生产场景安全。
更完整的验证应该覆盖:
- 镜像构建
- 镜像拉取和推送
- bind mount
docker cp- rootless 模式
- 网络连通性
- 日志驱动
- Compose 或 CI 工具兼容性
Docker Engine 29 的一些变化正好集中在这些地方。
关注点一:29.6.x 包含多项安全修复
Docker 官方 release notes 显示,29.6.2 和 29.6.1 都包含安全修复,涉及 BuildKit、Git source checkout、本地源上传、Windows cache mount 等方向。
这提醒我们:CI/CD 构建机不是“内部机器就安全”。构建系统经常处理来自仓库、镜像、依赖包和构建上下文的输入,一旦构建工具链存在漏洞,攻击者可能通过构建过程扩大影响。
建议:
docker version
docker buildx version
docker info
确认 Engine、BuildKit、containerd 的实际版本,不要只看安装包名称。
关注点二:containerd image store 成为新安装默认项
Docker Engine 29 中,containerd image store 对新安装更重要。它代表 Docker 镜像管理继续向 containerd 生态靠拢。
升级前要验证:
- 老镜像是否能正常列出。
- 多架构镜像是否能正确处理。
- CI 缓存是否仍然命中。
- 镜像清理策略是否正常。
常用检查:
docker image ls
docker system df
docker buildx ls
如果构建机磁盘很紧张,尤其要测试 docker system prune 和构建缓存清理。
关注点三:cgroup v1 已经进入长期迁移倒计时
Docker Engine 29 release notes 中明确提到 cgroup v1 已弃用,虽然支持会延续一段时间,但建议尽快迁移到 cgroup v2。
检查当前系统:
stat -fc %T /sys/fs/cgroup
如果输出是 cgroup2fs,说明是 cgroup v2。
如果仍然是 cgroup v1,要评估:
- 发行版是否支持 cgroup v2。
- Kubernetes 或其他容器平台是否兼容。
- 监控指标路径是否变化。
- 老应用是否依赖 cgroup v1 文件。
关注点四:Rootless 网络默认变化
Docker Engine 29.5 开始,rootless 模式中 gvisor-tap-vsock 成为新的默认 rootless 网络驱动,并建议优先于 slirp4netns。
如果你在开发机、CI Runner 或受限服务器上使用 rootless Docker,要重点验证:
docker context ls
docker info | grep -i rootless
还要测试容器访问外网、端口映射、DNS 解析和私有仓库访问。
关注点五:docker cp 相关漏洞提醒我们少信任容器文件系统
Docker 29.5.1 修复过多个 docker cp 相关安全问题。这类问题的本质是:当宿主机 root 处理容器内路径、归档或符号链接时,边界判断非常关键。
运维建议:
- 不要在不可信容器上随意执行
docker cp。 - CI 中不要把任意构建产物以 root 权限复制到宿主机关键路径。
- 使用临时目录接收文件,再做校验。
示例:
mkdir -p /tmp/container-export
docker cp app:/data/report.tar /tmp/container-export/
tar -tf /tmp/container-export/report.tar
升级前的建议流程
- 在测试机安装目标版本。
- 跑现有镜像构建流程。
- 跑 Compose 或业务启动脚本。
- 检查端口映射和 DNS。
- 检查日志采集。
- 检查磁盘清理。
- 验证 rootless 或特权容器场景。
- 记录回滚版本和安装包来源。
总结
Docker Engine 29 的升级重点不只是“版本更新”,而是容器运行、构建、安全和系统 cgroup 方向的一次综合变化。
如果你正在学习 Linux 运维,建议把 Docker 升级当成一次真实演练:先读 release notes,再列风险清单,最后用命令验证。这样的训练,比单纯背 docker run 更接近生产环境。
