Docker Engine 28.5 升级笔记:rootless 网络回退 pasta,以及一批 API 与 Go-SDK 弃用
来源:Docker Engine version 28 release notes、moby/moby 28.5.x releases。
dockerd-rootless.sh 的两处行为变化
28.5.x 的 Bug fixes and enhancements 中包含两条 rootless 脚本的改动:
dockerd-rootless.sh在未安装 slirp4netns 时,会尝试改用 pasta(passt)。dockerd-rootless.sh拒绝DOCKERD_ROOTLESS_ROOTLESSKIT_NET=host。
前者意味着 rootless 环境下的用户态网络后端多了一条退路;后者意味着把这个值写进环境变量的启动脚本需要改掉,脚本会直接拒绝。
打包更新
- BuildKit 更新。
- Go runtime 更新。
- runc 更新到 v1.3.3。
28.5.0(2025-10-08 前后)
- 移除对 legacy CBC cipher suites 的支持。
- BuildKit 更新到 v0.25.0。
- Dockerfile syntax 更新到 v1.19.0。
API 变更
- 弃用 kernel memory TCP accounting 支持(
KernelMemoryTCP)。 - 修复
GET containers/{name}/checkpoints在没有 checkpoint 时返回null而非空 JSON 数组的问题。
28.5.1
api/types/image:InspectResponse的Parent与DockerVersion字段弃用。api/types/plugin:Config.DockerVersion字段弃用。
28.5.0 的其他修复
docker info不再对 CLI-plugin 目录里的断链(broken symlinks)打印告警。- 修复
stats在空事件Actor.ID上触发的 panic。 - 修复 Windows 上 IPAM 插件未加载的问题。
Go-SDK 弃用(将于下一版本移除)
cli/command/image/build:DefaultDockerfileName、DetectArchiveReader、WriteTempDockerfile、ResolveAndValidateContextPath、IsArchive。opts:ValidateMACAddress、ListOpts.Delete()。cli/command:DockerCli.Apply、ContentTrustEnabled、DefaultVersion、ResolveDefaultContext、WithContentTrustFromEnv、WithContentTrust。cli/manifest/store:IsNotFound()。templates:NewParse()。
这些符号在下一版本会被移除,直接依赖它们的构建脚本和工具链需要提前替换。
升级注意
- 28.5.2(2025-11-05)本身包含 runc 的安全修复:三个高危漏洞,允许容器逃逸、绕过 runc 对写
/proc的限制,通过更新 runc 到 v1.3.3 修复。 - Engine 28 这一代已移除对 legacy CBC cipher suites 的支持。若客户端或镜像仓库只支持旧套件,可能连不上。
- 涉及
checkpoints、stats事件处理、docker info输出解析、插件目录扫描的监控脚本与工具,按上面的修复项核对一下输出格式是否仍被正确解析。