综合 Docker Engine v29 改了两个默认值:原地升级不动存储,重装才会踩坑

2026-09-19 21:02:11

Docker Engine v29 改了两个默认值:原地升级不动存储,重装才会踩坑

Docker Engine v29 于 2025-11-10 发布,官方定位是 "foundation release",没有花哨新功能,但动了两个默认值。这两个默认值决定了升级之后你的镜像还在不在、防火墙规则还挂不挂得上。

默认镜像存储:overlay2 → containerd image store

新装默认使用 containerd image store,取代 overlay2。

旧装不会自动迁移:原地升级继续用 overlay2,镜像都还在。但一旦切换存储(或者重装系统),daemon 会指向一个新的空存储,原来的容器与镜像"看起来消失"——需要重新 pull,或者用 save/load 迁移才能找回;切回 overlay2 它们又会出现。

配合这个存储模型,docker image load/save 新增了 --platform 参数。

新增实验性 nftables 防火墙后端

--firewall-backend=nftables

nftables 后端将来会成为默认,iptables 会弃用,但现在别在生产环境开。原因有三条:

  • nftables 模式下没有 DOCKER-USER 链,所有往 DOCKER-USER 加规则的脚本都没处挂;
  • 覆盖 Docker DROP 的 ACCEPT 规则失效;
  • 残留的 iptables FORWARD DROP 策略会静默黑洞已经被 nftables ACCEPT 的包。

另外,Swarm 节点当前不支持 nftables。

其他变更

  • 最低 API 版本从 1.43 提到 1.44(对应 Moby v25),旧客户端会报 Minimum supported API version 错误。
  • legacy graph driver 弃用。
  • Go module 从 github.com/docker/docker 迁到 github.com/moby/moby/clientgithub.com/moby/moby/api
  • data-root 不再控制镜像存储位置。镜像层由 containerd 存,云主机上的 OS 盘容易被塞满。

附录:Docker Desktop CVE-2025-9074

CVE-2025-9074,CVSS 9.3,容器逃逸。Windows/macOS 私有网络 http://192.168.65.7:2375 暴露了未鉴权的 Docker API。升到 4.44.3+ 修复。

参考:

结论

原地升级相对安全——不动存储、也不动防火墙。会被默认值坑的是重装。

复制全文 生成海报 Docker containerd nftables 运维

推荐文章

程序员茄子在线接单