Docker Engine 29.9.2 在 10 月 20 日发布,把 Go 运行时升到 1.26.10。升级本身不难,难的是它带来的一处行为变化。
变在哪
新版本会拒绝包含八个已吊销 eMudhra 中间证书的证书链,对应 CVE-2026-111943。如果你的私有 registry 的 TLS 链里正好有这几个中间证书,升级后 pull 和 push 都会在 TLS 校验阶段失败。
为什么私有仓库容易中
企业私有 registry 的证书往往是很早以前签发的,签发时那批中间证书还有效。后来被吊销了,但因为客户端不检查吊销状态(很多 Go 程序历史上不查),一直能用。现在 Docker 主动拒绝,问题才暴露。
升级前怎么查
用 openssl 拉一遍完整链,看中间证书的颁发者与序列号是否落在吊销名单里。命令大致是 openssl s_client -showcerts -connect registry.example.com:443,把输出的证书逐个 openssl x509 -text 看一遍。
出问题怎么办
换证书链。让 CA 重新签发一条不包含已吊销中间证书的链,或者在 registry 前面挂一层反代,用新的证书终止 TLS。临时绕过的方法是给 Docker 配 insecure-registries,但这等于关掉校验,别在生产上用。
其余变化
29.9.1 把 containerd 升到 2.4.2,修了三个 containerd 漏洞,并修了 docker save 的层泄漏。29.9.0 增加了面向远程快照器的 lazy-pull 守护进程特性。
验证清单
升级后跑一次 docker pull 和 docker push 各一次,别只测 pull。push 走的是不同的认证与上传路径,出问题的概率更高。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。