Share feedback
Answers are generated based on the documentation.

Docker Engine 29 版本发布说明

此页面描述了 Docker Engine 29 版本的最新变更、新增功能、已知问题和修复。

更多信息请参阅:

29.7.2

2026-08-05

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Bug fixes and enhancements(错误修复与增强)

  • 修复 docker service createdocker service update 在多次传入同一环境变量时发生的 panic。docker/cli#7145
  • 修复 Docker Engine 29.7.0 引入的回归问题:镜像拉取会拒绝包含绝对硬链接目标的镜像(部分镜像构建器会生成此类镜像)。moby/moby#53305
  • 修复 Docker Engine 29.7.0 引入的回归问题:在较旧的 Linux 内核上对镜像拉取和 docker cp 应用文件权限(包括设备节点)时可能失败。moby/moby#53305

Packaging updates(打包更新)

Networking(网络)

  • 通过在基础链策略结尾添加分号,提高与更多 nftables 发行版的兼容性。moby/moby#53303

29.7.1

2026-07-31

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Bug fixes and enhancements(错误修复与增强)

  • 修复一个回归问题:无法拉取其层中包含缺少显式父目录条目的目录的镜像。moby/moby#53260
  • 修复 CopyToContainer 拒绝容器路径穿越绝对符号链接(如 /var/run -> /run)的回归问题。moby/moby#53261

29.7.0

2026-07-30

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

New(新增)

  • 新增实验性 embedded-containerd 特性,可在守护进程内部运行 containerd,而不是作为独立的托管进程。moby/moby#52898
  • 挂载类型 image 不再属于实验性特性。moby/moby#52998
  • 新增 default-stop-timeout 守护进程选项,用于为未指定显式超时的容器配置停止超时时间。moby/moby#53146

Security(安全)

此版本包含影响 Docker Engine 及相关组件的安全漏洞修复。

Networking(网络)

  • 修复在容器从网络断开时清理其网络接口失败导致的守护进程 panic。moby/moby#53237
  • 修复在绑定 ingress 代理监听器失败后移除 swarm ingress 端口时的守护进程 panic。moby/moby#53022

Rootless(无根模式)

Bug fixes and enhancements(错误修复与增强)

  • docker service lsdocker service psdocker node ps--filter 名称和已知值添加 shell 补全。docker/cli#7124
  • containerd 镜像存储:修复守护进程级的并发下载与上传限制(针对拉取和推送)未被遵守的问题。moby/moby#53081
    • 如需保留先前无限制的启动行为,请将 "max-concurrent-downloads" 和 "max-concurrent-uploads" 配置为 0
  • 修复在启用了用户命名空间重映射的情况下,docker cp -a 向容器内复制文件时使用错误文件属主的问题。moby/moby#53084
  • 修复当源路径以分隔符结尾但不是目录时,docker cp 从 Windows 容器复制会静默返回文件而非报错的问题。moby/moby#53123
  • 修复使用 containerd 运行时,docker stats 对运行中的 Windows 容器报告全零的问题。moby/moby#53101
  • 修复使用 containerd 运行时,docker stats 对运行中的 Windows 容器报告空网络统计信息的问题。moby/moby#53219
  • 修复 docker create --pull 标志描述中的拼写错误。docker/cli#7103
  • 修复当 VIP IP 别名已存在于 LB 端点接口上时,Swarm 服务更新因 "file exists" 错误而失败的问题。moby/moby#51657
  • 修复当镜像无法从仓库拉取但节点上已存在时,Swarm 任务被拒绝的问题。moby/moby#53212
  • 改进当容器主机名超过 Linux 64 字节限制时返回的错误。moby/moby#53121
  • 防止在守护进程启动期间容器退出时,live-restore 的卷保留活动挂载引用。moby/moby#53115
  • docker rm --force 对不存在的容器成功时,抑制 "No such container" 错误。docker/cli#7110

Packaging updates(打包更新)

29.6.2

2026-07-16

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Security(安全)

此版本包含影响 Docker Engine 的多个安全漏洞修复。

  • CVE-2026-15793:从 bundle 文件进行 Git 源码检出可能导致命令注入。GHSA-hw3h-2gp9-cxpv
  • CVE-2026-15792:前端发送的错误参数可能导致 panic。GHSA-qx3x-mv6r-52p6
  • CVE-2026-15791:LLB 文件操作可能被诱骗以删除 /tmp 目录的内容。GHSA-32pv-7hq5-qhwq
  • CVE-2026-15789:恶意客户端在上传本地源码时可绕过目标目录校验。GHSA-g2h8-426c-7976
  • CVE-2026-15788:WCOW 缓存挂载源选择器可能解析出缓存根目录之外的 NTFS junction 点。GHSA-388v-wmr2-g2v2

Packaging updates(打包更新)

Rootless(无根模式)

29.6.1

2026-06-26

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Security(安全)

此版本包含影响 Docker Engine 的多个安全漏洞修复。

  • 恶意镜像可能提供恶意的 /etc/passwd/etc/group 风格的文件,导致内存消耗过大,可能因内存不足(OOM)条件而终止进程。GHSA-mjcv-p78q-w5fwGHSA-jpcc-p29g-p8mqGHSA-72x6-4j93-7w86
  • 自定义前端可能发送精心构造的构建请求,在用户未显式允许 security.insecure 权限的情况下,禁用构建容器的 Seccomp 和 AppArmor 保护。其他安全措施(如 Linux capabilities)仍会应用于这些容器。GHSA-7236-3392-c5c6

Bug fixes and enhancements(错误修复与增强)

Packaging updates(打包更新)

29.6.0

2026-06-18

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

New(新增)

  • POST /containers/{id}/update 现在支持按设备的 blkio 资源设置。moby/moby#52651
  • 新增 GET /images/{name}/attestations 端点,用于检索附加到镜像的 in-toto 证明语句(如 SLSA 来源证明和 SPDX SBOM)。支持可选的 platform 选择、predicate type 过滤,以及用于逐字返回语句正文的 statement 查询参数。

Bug fixes and enhancements(错误修复与增强)

  • docker image push 现在遵循 NO_COLORdocker/cli#6957
  • containerd 镜像存储:修复 docker system prune 在报告回收空间时未包含已解包的镜像数据的问题。moby/moby#52905
  • 修复 docker system df 镜像大小统计,使其仅统计镜像直接使用的快照。moby/moby#52901
  • 修复 worker 镜像拉取期间因仓库认证失败而被误报为 "No such image" 错误的问题。moby/moby#52698
  • 修复默认 BuildKit GC 策略,使其按预期清理可复现的缓存类型。moby/moby#52814
  • 修复显式文件模式被守护进程 umask 过滤的问题,包括 COPY --chmod 的权限。moby/moby#52892
  • 修复在 amd64 主机上,当镜像提供 amd64 变体特定的 manifest 时,containerd 镜像存储的镜像选择问题。moby/moby#52773
  • docker login--password 标志现在接受 -,以通过 STDIN 传入密码,作为 --password-stdin 的替代方式。docker/cli#7029

Packaging updates(打包更新)

Networking(网络)

  • 允许在未安装 nft 命令但链接了 libnftables 的守护进程上使用 nftables 防火墙模式。moby/moby#52820
  • 在动态分配端口时,不要在 net.ipv4.ip_local_reserved_ports 中列出的主机端口上发布容器端口。moby/moby#52818
  • 修复 overlay 网络批量同步中的竞态条件,该条件在新加入的 swarm 节点上导致约 30 秒的 DNS 解析延迟。moby/moby#52862
  • 通过将默认构建选项改为执行 nft 命令,缓解使用 nftables 作为防火墙后端时 libnftables 中的崩溃。从源码构建 dockerd 的用户可以通过 libnftables 构建标签选择链接 libnftables。moby/moby#52886

Rootless(无根模式)

Deprecations(弃用)

  • 当连接默认桥接网络且指定了 links 的容器被创建时,Engine 现在会返回弃用警告。moby/moby#47427

29.5.3

2026-06-03

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Bug fixes and enhancements(错误修复与增强)

  • 减少在 containerd 镜像存储下同时修剪镜像时 docker system df 的错误。moby/moby#52672

Packaging updates(打包更新)

Rootless(无根模式)

29.5.2

2026-05-20

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Bug fixes and enhancements(错误修复与增强)

  • 修复 29.5.1 引入的回归问题:当容器具有 bind 挂载,且其目标穿越了容器内符号链接(如 /var/run -> /run)时,docker cp 失败并提示 "mkdirat: file exists"。moby/moby#52655

29.5.1

2026-05-18

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Security(安全)

此版本包含影响 Docker Engine 的多个安全漏洞修复。

  • CVE-2026-41567 修复 docker cp 中的漏洞:在以主机 root 身份运行时,归档解压缩二进制文件(如 xzunpigz)通过容器内文件系统的 PATH 解析,允许恶意容器以主机 root 权限执行任意二进制文件。 GHSA-x86f-5xw2-fm2r

  • CVE-2026-41568 修复 docker cp 中的 TOCTOU 漏洞,该漏洞允许容器进程在主机文件系统的任意位置创建文件或目录。 GHSA-vp62-88p7-qqf5

  • CVE-2026-42306 修复 docker cp 中的 TOCTOU 漏洞,该漏洞允许容器进程将 bind 挂载重定向到主机文件系统的任意位置。 GHSA-rg2x-37c3-w2rh

Networking(网络)

  • 修复未绑定到特定 IP 地址时 UDP conntrack 条目未被删除的问题。moby/moby#52640

29.5.0

2026-05-14

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Note

Rootless(无根模式):gvisor-tap-vsock 现在是新的默认无根网络驱动,应优先于 slirp4netns(Docker 打包不再安装它)。

New(新增)

  • Rootless(无根模式):新增默认的 gvisor-tap-vsock 网络驱动。moby/moby#52319
  • 在受支持的内核上,默认启用容器的私有 time 命名空间。moby/moby#52326
  • local 日志驱动现在支持自定义属性,新增对 labellabel-regexenvenv-regextag 日志选项的支持。moby/moby#52348
  • Windows:守护进程现在支持在 Unix socket 上监听(-H unix://...),并可通过 --group 进行可选的基于组的访问控制。moby/moby#52365

Security(安全)

  • CVE-2026-32288:修复拒绝服务漏洞,拉取精心构造的恶意镜像时,守护进程在处理稀疏 tar 归档时会分配无限制的内存。GHSA-x4jj-h2v8-hqqvmoby/moby#52478

Bug fixes and enhancements(错误修复与增强)

  • docker ps --format 现在支持 .HealthStatus 占位符,以独立字段打印容器健康状态(startinghealthyunhealthy)。docker/cli#6913
  • 新增 "time-namespaces" 特性标志以禁用 time 命名空间。moby/moby#52577
  • containerd 集成:修复认证令牌请求忽略各主机 TLS 设置(自定义 CA、insecure-registries)的问题。moby/moby#52600
  • 守护进程 reload 事件现在表示守护进程 reload 已完全完成。moby/moby#52589
  • docker info 中暴露关于 userland 代理的诊断数据。moby/moby#52321
  • 修复 docker image ls --filter reference=...GET /images/json)以同时匹配完全限定的规范镜像名称(如 docker.io/library/alpine),而不仅仅是常见的简写形式。moby/moby#52333
  • 修复一个 bug:离开启用了 autolock 的 swarm 可能留下孤立状态,导致后续 swarm init 失败并提示 "Swarm is encrypted and needs to be unlocked"。moby/moby#52479
  • 修复日志错误在守护进程日志中显示为字符串而非失败消息的问题。moby/moby#52442
  • 通过在大小计算中纳入共享内容 blob,修复 docker system df -v 中 SHARED SIZE 和 UNIQUE SIZE 报告不正确的问题。moby/moby#52482
  • 修复对请求附加组 ID 的 CDI 规范的支持。moby/moby#52579
  • 修复卷子路径文件挂载到镜像中已存在文件之上时,因 "not a directory" 而失败导致容器创建的问题。moby/moby#52584
  • volumenetworkconfigsecret 格式化器的标签进行排序,以产生确定性输出。docker/cli#6954
  • Swarm:防止在 swarm 状态较大时 Raft 快照损坏。moby/moby#52441

Packaging updates(打包更新)

Networking(网络)

  • 修复当一个容器重启时,共享同一端口但位于不同 IP 的 UDP 容器的 conntrack 条目被错误删除的问题。moby/moby#52423
  • 修复滚动更新期间未移除 swarm 服务网络别名的陈旧 VIP DNS 记录。moby/moby#52236
  • 修复当先前对不可用后端的写入在套接字上留下陈旧的 ECONNREFUSED 错误时,userland 代理静默丢弃 UDP 数据报的问题。moby/moby#52483
  • Rootless(无根模式):正确支持 --net=host 和本地仓库。moby/moby#47103

Rootless(无根模式)

Go SDK

  • cli/config/configfile:GetAuthConfigGetCredentialsStore:在解析认证时规范化主机名。docker/cli#6846

Deprecations(弃用)

  • cli/command/image/build:移除已弃用的 DefaultDockerfileName 常量。docker/cli#6737
  • cli/command/image/build:移除已弃用的 DetectArchiveReader 工具函数。docker/cli#6737
  • cli/command/image/build:移除已弃用的 IsArchive 工具函数。docker/cli#6737
  • cli/command/image/build:移除已弃用的 ResolveAndValidateContextPath 工具函数。docker/cli#6737
  • cli/command/image/build:移除已弃用的 WriteTempDockerfile 工具函数。docker/cli#6737

29.4.3

2026-05-06

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Security(安全)

  • CVE-2026-31431:用针对性的 AppArmor(拒绝网络 alg)和 SELinux(alg_socket)规则替换会破坏 32 位程序的 socketcall(2) seccomp 拒绝,这些规则在 LSM 层阻止 AF_ALG,同时覆盖 socket(2) 和 socketcall(2) 路径,而不会干扰合法的 32 位工作负载。moby/moby#52537

    在基于 SELinux 的系统上,SELinux 缓解措施要求守护进程配置 selinux-enabled: true(通过 daemon.json--selinux-enabled CLI 标志)。该选项默认未启用。

  • 修复默认 AppArmor 配置文件在守护进程重启时未更新的问题,需要系统重启才能应用守护进程升级带来的配置变更。moby/moby#52537

29.4.2

2026-05-01

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Security(安全)

此版本包含针对 CVE-2026-31431 的加固。

  • 在默认 seccomp 配置文件中阻止 AF_ALG 套接字和 socketcall(2) 多路复用器,以防止通过内核加密 API("Copy Fail")在容器内提升权限。moby/moby#52501

Known issues(已知问题)

加固可能会破坏 32 位程序和 i386 镜像,包括 SteamCMD 和部分基于 Wine 的工作负载。moby/moby#52506

Workaround(变通方案)

Warning

不要使用 --security-opt seccomp=unconfined 来解决此问题。 不要使用 seccomp/v0.2.0 配置文件。

如果需要变通方案,请使用 moby/profiles 中的 seccomp/v0.2.1 配置文件。 确保使用包含 CVE-2026-31431 修复的内核。

该配置文件在保持 AF_ALGsocket 受阻的同时,解除对 socketcall 的阻止。

Important

仅对需要它的容器使用此变通方案。 使用此配置文件的容器仍可通过 socketcall 系统调用利用 CVE-2026-31431。

下载 seccomp/v0.2.1 配置文件:

$ curl -fsSL https://raw.githubusercontent.com/moby/profiles/refs/tags/seccomp/v0.2.1/seccomp/default.json \
  -o /etc/docker/seccomp-profile-v0.2.1.json

使用以下选项之一。无需同时使用两者。

  1. 若要在你控制 docker run 命令时为特定容器使用该配置文件,请使用 --security-opt
$ docker run --security-opt seccomp=<path> ...
  1. 若要将该配置文件作为守护进程创建的容器的默认配置,请在 daemon.json 中添加 seccomp-profile
{
  "seccomp-profile": "/etc/docker/seccomp-profile-v0.2.1.json"
}

29.4.1

2026-04-20

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Bug fixes and enhancements(错误修复与增强)

  • containerd 镜像存储:修复 docker image prune --filter label!=key=value 错误地跳过没有指定标签的镜像的问题。moby/moby#52338
  • 修复 --log-opt "tag={{.ImageID}}" 未剥离 digest 的算法部分的问题。moby/moby#52343
  • 通过在只读重新挂载时重试,修复在繁忙的 Swarm 节点上间歇性的容器启动失败(secrets/configs 重挂载时 EBUSY)。moby/moby#52235

Packaging updates(打包更新)

Networking(网络)

  • 如果容器具有 IPv4-only 或 IPv6-only 端点,且其 "gateway priority" 高于双栈端点,则该单栈端点现在将用作其地址族的默认网关。moby/moby#52328

29.4.0

2026-04-07

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Bug fixes and enhancements(错误修复与增强)

  • docker cp:报告内容大小和已传输大小。docker/cli#6800
  • 修复 docker stats --all 仍显示已移除容器的问题。docker/cli#6863
  • 修复可能导致容器无法移除的罕见 bug。moby/moby#51724
  • 修复特权容器在重启后丢失其显式 AppArmor 配置文件(--security-opt apparmor=<profile>)的问题。moby/moby#52215
  • 通过使用实时 containerd 任务状态(而非时间戳)改进重复的容器退出处理。moby/moby#52156
  • 通过为仓库连接启用 HTTP keep-alive,避免冗余的 TCP 和 TLS 握手,改进镜像拉取和推送性能。moby/moby#52198
  • shell 补全:为 docker rm --link 添加 shell 补全,并为容器名称排除旧式 links。docker/cli#6872
  • shell 补全:不提供已经使用过的补全。docker/cli#6871
  • 将 runc(静态二进制中)升级到 v1.3.5moby/moby#52244
  • Windows:修复 DOCKER_TMPDIR 未被遵守的问题。moby/moby#52181

Packaging updates(打包更新)

Networking(网络)

  • 防止升级后如果容器配置包含格式错误的 IP 地址,在启动期间守护进程崩溃。moby/moby#52275

Go SDK

Deprecations(弃用)

  • Go SDK:cli-plugins/hooks:弃用 HookMessage 并重命名为 cli-plugins/hooks.Responsedocker/cli#6859
  • Go SDK:cli-plugins/hooks:弃用 HookType 并重命名为 cli-plugins/hooks.ResponseTypedocker/cli#6859
  • Go SDK:cli-plugins/manager:弃用 HookPluginData 并移至 cli-plugins/hooks.Requestdocker/cli#6859

29.3.1

2026-03-25

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Security(安全)

此版本包含影响 Docker Engine 及相关组件的安全漏洞修复。

  • CVE-2026-34040 修复 AuthZ 插件中的授权绕过漏洞,在特定条件下可能允许授权插件被绕过。 GHSA-x744-4wpc-v9h2

  • CVE-2026-33997 修复 docker plugin install 中权限校验可能被部分绕过的缺陷,可能导致未授权的权限提升。 GHSA-pxq6-2prw-chj9

  • CVE-2026-33748 修复 BuildKit 中对 Git URL #ref:subdir 片段校验不足的问题,该问题可能允许访问预期仓库范围之外的文件。 GHSA-4vrq-3vrq-g6gg

  • CVE-2026-33747 修复 BuildKit 中不受信任的前端可能导致文件写入 BuildKit 状态目录之外的漏洞。 GHSA-3c29-8rgm-jvjj

Bug fixes and enhancements(错误修复与增强)

  • 修复当 .dockerignore 包含无效模式时,docker build 期间守护进程崩溃的问题。moby/moby#52214
  • 修复当 containerd 客户端使用已关闭的流时发生的 panic。moby/moby#52211

Packaging updates(打包更新)

Go SDK

  • 添加缺失的 build-tag,否则在导入 cli/command 包时可能导致 cannot range over 10 (untyped int constant) 错误。docker/cli#6884

29.3.0

2026-03-05

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

New(新增)

  • 为 bind 挂载的 --mount 标志添加 bind-create-src 选项。docker/cli#6792
  • CLI 插件钩子现在在命令失败时(不仅限于成功时)触发,插件可使用 "error-hooks" 仅在命令失败时显示提示。docker/cli#6794
  • 将最低 API 版本从 v1.44 降低到 v1.40(Docker 19.03)。moby/moby#52067

Packaging updates(打包更新)

Networking(网络)

API

  • POST /networks/{id}/connect 现在正确应用 EndpointSettings 中的 MacAddress 字段。该字段在 API v1.44 中添加,但此前被忽略。moby/moby#52040
  • GET /images/json 现在支持 identity 查询参数。设置后,响应包含 manifest 摘要,并可能包含每个 manifest 的 Identity 字段,带有可信身份和来源信息。moby/moby#52030

Bug fixes and enhancements(错误修复与增强)

  • --gpus 选项现在对 AMD GPU 使用基于 CDI 的注入。moby/moby#52048
  • 在通知守护进程 reload 其配置时,添加 sd_notify "RELOADING" 通知。moby/moby#52041
  • 同步发送 sd_notify "READY""STOPPING",以确保它们在继续之前已发送。moby/moby#52041
  • 添加对 systemd 253 Type=notify-reload 服务 reload 协议的支持。moby/moby#52041
  • 在启动期间,不再为已停止的容器记录 "failed to determine if container is already mounted" 警告。moby/moby#52076
  • 修复容器并发移除时 docker system prune 因 "rw layer snapshot not found" 而失败的问题。moby/moby#52090
  • 修复在 non-running 的 Windows 容器上运行 docker top 时的 panic。moby/moby#52025
  • 修复 v29.2.0 中的回归问题:如果系统要求尚未安装,会阻止在 Windows 上注册 dockerd 服务。moby/moby#52006
  • 修复多次挂载路径的共享挂载检测,该问题在使用 bind 传播时导致 "not a shared mount" 错误。moby/moby#51787
  • 修复关闭时虚假的 "ShouldRestart failed" 警告。moby/moby#52079
  • 存储 registry 密码时保留前导和尾随空白。docker/cli#6784
  • 在计算卷大小时防止记录 "not found" 警告。moby/moby#52018
  • 将 Go 运行时升级到 1.25.7moby/moby#52003docker/cli#6780

29.2.1

2026-02-02

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Bug fixes and enhancements(错误修复与增强)

  • 将 BuildKit 升级到 v0.27.1moby/moby#51962
  • 修复 docker system dfdocker system prune 并发运行时的失败问题。moby/moby#51979
  • 修复守护进程对重复容器退出事件的处理,以避免重复清理和状态转换。moby/moby#51925
  • 修复守护进程初始化失败后的 panic。moby/moby#51943
  • 修复加密 overlay 网络未向 v28 及更早版本 Engine 上的容器传递流量。加密 overlay 网络将不再向 v29.2.0 至 v29.0.0、v28.2.2、v25.0.14 或 v25.0.13 上的容器传递流量。moby/moby#51951
  • 修复 docker network prune 上潜在的 panic。moby/moby#51966

29.2.0

2026-01-26

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

新增功能

错误修复和增强

  • 改进 --detach-keys 命令行选项的验证。docker/cli#6742
  • 防止在不完整初始化后守护进程关闭时出现潜在的 panic。moby/moby#51797
  • 移除对匿名只读卷的限制。moby/moby#51682
  • dockerd 上的 --validate 标志现在还会验证系统要求,允许在启动守护进程之前检查系统要求。moby/moby#51868
  • 如果可能,使用 CDI 处理对 NVIDIA 设备的 --gpus 请求。moby/moby#50228

包更新

无根模式

API

Go SDK

弃用

  • 从 Windows 上用于 CLI 插件的路径列表中移除 %PROGRAMDATA%\Docker\cli-plugins。此路径是为了与旧安装向后兼容而存在的,但已被 %ProgramFiles%\Docker\cli-plugins 替代。docker/cli#6713

29.1.5

2026-01-16

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

包更新

网络

  • 修复了一个回归问题,其中在容器关闭宽限期期间可能会中断已建立的网络连接。moby/moby#51843

29.1.4

2026-01-08

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

错误修复和增强

包更新

29.1.3

2025-12-12

有关此版本中完整的拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

错误修复和增强

  • docker stack deploy --compose-file 添加 shell 补全。docker/cli#6690
  • containerd 镜像存储:修复导致 docker build 忽略显式设置的 unpack 镜像导出器选项的错误。moby/moby#51514
  • 修复 docker image ls 悬空镜像处理。docker/cli#6704
  • 修复可能导致 Engine 在关闭时将设置了自动移除的容器留在 'dead' 状态且永远不会回收它们的错误。moby/moby#51693
  • 修复在 i386 上的构建。moby/moby#51528
  • 修复当存在先前的 graphdriver 状态时,显式 graphdriver 配置("storage-driver")被当作 containerd 快照器处理的问题。moby/moby#51516
  • 修复可能创建孤立的 overlay2 层的问题。moby/moby#51703

网络


title: "29.0.0+" description: "Docker Engine 29.0.0+ 发布说明" keywords: "发布, Docker, Engine"

2025-11-12
  • 允许在容器网络未配置特定子网时创建具有特定 IP 地址的容器。moby/moby#51583
  • 修复在升级到 v29.1.2 之前通过 API 创建的容器(使用 PublishAll 和 nil 的 PortBindings 映射)启动时崩溃的问题。moby/moby#51691
  • 修复节点加入 Swarm 集群后阻止连接到非 swarm 范围网络的容器进行 DNS 解析的错误。moby/moby#51515
  • 修复使用远程网络驱动插件时导致守护进程崩溃的问题。moby/moby#51558
  • 修复在创建具有多个网络连接的容器时可能导致"端点未找到"错误的问题,当其中一个网络是非内部网络但没有自己的外部 IP 连接时。moby/moby#51538
  • 修复在 IPv6 禁用的主机上阻止无根 Docker 启动的问题。moby/moby#51543
  • 当容器使用指向容器端口 0 的端口映射创建时返回错误。moby/moby#51695

29.1.2

2025-12-02

有关此版本中的完整拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

安全性

Bug 修复和增强

  • containerd 镜像存储:修复 docker image inspect 在本地不可用所有可分发的 blob 时无法返回可用镜像数据的问题。moby/moby#51629
  • dockerd-rootless-setuptool.sh:修复 nsenter: no namespace specifiedmoby/moby#51622
  • 修复使用图形驱动程序作为存储时 docker system df 显示共享大小和唯一大小为 N/A 的问题。moby/moby#51631

打包更新

网络

  • 修复在使用 slirp4netns 时阻止无根模式下端口映射的错误。moby/moby#51616
  • 防止在使用 HostConfig.PublishAllPorts 设置(-P)且没有端口绑定的情况下进行 API 请求时崩溃。moby/moby#51621

29.1.1

2025-11-28

有关此版本中的完整拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

网络

  • 回滚破坏所有自定义桥接网络上外部 DNS 解析的 PR。moby/moby#51615

29.1.0

2025-11-27

有关此版本中的完整拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

打包更新

网络

  • 不再在容器重启时覆盖用户修改的 /etc/resolv.confmoby/moby#51507
  • 修复 Windows 容器的 --publish-all / -Pmoby/moby#51586
  • 修复在容器停止或网络断开期间网关配置失败时阻止容器重启或网络重新连接的问题。moby/moby#51592
  • Windows 容器:不要在端口映射中显示 IPv6 映射的 IPv4 地址。例如,显示 0.0.0.0:8080->80/tcp 而不是 [::ffff:0.0.0.0]:8080->80/tcpmoby/moby#51587

29.0.4

2025-11-24

有关此版本中的完整拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Bug 修复和增强

网络

  • 允许在容器网络未配置特定子网时创建具有特定 IP 地址的容器。moby/moby#51583

29.0.3

2025-11-24

有关此版本中的完整拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Bug 修复和增强

  • docker version --format json:恢复顶级 BuildTime 字段以使用 RFC3339Nano 格式。docker/cli#6668
  • 修复 docker image ls 忽略来自 docker.json 的自定义 imageFormat 的问题。docker/cli#6667

网络

  • 修复使用远程网络驱动插件时导致守护进程崩溃的问题。moby/moby#51558

29.0.2

2025-11-17

有关此版本中的完整拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

网络

  • 修复在创建具有多个网络连接的容器时可能导致"端点未找到"错误的问题,当其中一个网络是非内部网络但没有自己的外部 IP 连接时。moby/moby#51538
  • 修复在 IPv6 禁用的主机上阻止无根 Docker 启动的问题。moby/moby#51543

29.0.1

2025-11-14

有关此版本中的完整拉取请求和变更列表,请参阅相关的 GitHub 里程碑:

Bug 修复和增强

  • docker image ls 在输出重定向时(例如用于 grep)不再截断名称宽度。docker/cli#6656
  • docker image ls 现在考虑 NO_COLOR 环境变量来选择是否使用彩色输出。docker/cli#6654
  • containerd 镜像存储:修复了一个导致 docker build 忽略显式设置的 unpack 镜像导出器选项的错误。moby/moby#51514
  • 修复 docker image ls --all 无法显示未标记/悬空镜像的错误。docker/cli#6657
  • 修复在 i386 上的构建问题。moby/moby#51528
  • 修复当存在先前的图形驱动程序状态时,显式图形驱动程序配置("storage-driver")被当作 containerd 快照器处理的问题。moby/moby#51516
  • 修复 docker version --format=jsonApiVersionMinApiVersion 字段的输出格式,使其与先前版本对齐。docker/cli#6648

网络

  • 修复了一个错误,该错误阻止了附加到非 Swarm 范围网络的容器在节点加入 Swarm 集群后进行 DNS 解析。moby/moby#51515

29.0.0

2025-11-10

有关此版本中所有拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:

Caution

此版本包含多个破坏性变更和弃用。升级前请仔细查看发布说明。

  • 现在可以通过将 Docker 守护进程的 firewall-backend 选项设置为 nftables 来启用对 nftables 的实验性支持。更多信息,请参见 Docker Engine 文档
  • containerd 镜像存储现在是全新安装的默认选项。这不适用于配置了 userns-remap 的守护进程(参见 moby#47377)。

破坏性变更

  • Go 模块 github.com/docker/docker 已弃用,推荐使用 github.com/moby/moby/clientgithub.com/moby/moby/apigithub.com/moby/moby 模块被视为内部实现细节 - 唯一受支持的公共模块是 clientapi。 从 v29 开始,发布版本使用 docker- 前缀进行标记(例如,docker-v29.0.0)。这仅影响 Go 模块用户和包维护者。
  • 守护进程现在需要 API 版本 v1.44 或更高版本(Docker v25.0+)。
  • Debian armhf(32 位)包现在针对 ARMv7 CPU,无法在 ARMv6 设备上工作。
  • 不再提供官方 Raspbian(32 位)包。对于 64 位设备,请使用 Debian arm64 包,或对于 32 位 ARMv7 设备,请使用 Debian armhf 包。
  • cgroup v1 已弃用。 支持将持续到至少 2029 年 5 月,但请尽快迁移到 cgroup v2。参见 moby#51111
  • Docker Content Trust 已从 Docker CLI 中移除。可以作为单独的插件构建:https://github.com/docker/cli/blob/v29.0.0/cmd/docker-trust/main.go

新增功能

  • docker image loaddocker image save 现在通过 --platform 标志支持多平台选择(例如,docker image load --platform linux/amd64,linux/arm64 -i image.tar)。docker/cli#6126
  • docker image ls 现在默认使用新视图(类似于 --tree 但已折叠)。docker/cli#6566
  • docker run --runtime <...> 现在在 Windows 上受支持。moby/moby#50546
  • GET /containers/json 现在包含一个描述容器健康检查状态的 Health 字段。moby/moby#50281
  • 向构建器配置添加 device 权限。moby/moby#50386
  • docker service createdocker service update 命令添加对 memory-swapmemory-swappiness 标志的支持。docker/cli#6619
  • 允许 Docker CLI 在 Docker 上下文元数据中存在键值对("GODEBUG":"...")时设置 GODEBUG 环境变量。docker/cli#6371

错误修复和增强

  • docker image ls --tree 现在按名称字母顺序而不是创建日期对镜像进行排序。docker/cli#6595
  • docker image ls 在未提供 --all 标志时不再默认显示未标记的镜像。docker/cli#6574
  • docker save:修复了使用 overlay2 存储驱动程序导出镜像时 tar 成员时间戳不一致的问题。moby/moby#51365
  • 为 fluentd 日志驱动程序添加了一个新的日志选项(fluentd-read-timeout),该选项允许指定从 fluentd 连接读取确认的超时时间。moby/moby#50249
  • docker images 添加镜像名称自动补全功能。docker/cli#6452
  • 当设置了 --type 时,为 docker inspect 添加 shell 自动补全功能。docker/cli#6444
  • docker plugin 子命令添加 shell 自动补全功能。docker/cli#6445
  • api/types/container:使 ContainerState、HealthStatus 成为具体类型。moby/moby#51439
  • 当启用用户命名空间重新映射时,containerd 镜像存储暂时不可用,这是针对 moby#47377 的临时解决方案。moby/moby#51042
  • contrib:移除 contrib/httpserver,该组件仅用于集成测试。moby/moby#50654
  • daemon:改进 --dns 选项和 daemon.json 中相应 "dns" 字段的验证。moby/moby#50600
  • dockerd-rootless.sh:如果未安装 slirp4netns,尝试使用 pasta (passt)。moby/moby#51149
  • 修复 --mount type=image 在将同一镜像多次挂载到不同目标位置时的失败问题。moby/moby#50268
  • 修复 docker stats <container> 无法正常退出的问题。docker/cli#6582
  • 修复 API 服务器在有到 /events 端点的开放连接时无法快速关闭的错误。moby/moby#51448
  • 修复在"一次性"模式下收集容器统计信息时不会包含容器 ID 和名称的错误。moby/moby#51302
  • 修复在使用放置偏好扩展服务后,Swarm 中的所有新任务可能永远卡在 PENDING 状态的问题。moby/moby#50202
  • 修复使用 containerd 镜像存储时自定义元头没有传递的问题。moby/moby#51024
  • 修复以 --log-level=trace 运行守护进程时请求未被记录的问题。moby/moby#50986
  • 修复 firewalld 重新加载后 Swarm 服务无法从发布端口访问的问题。moby/moby#50443
  • 改进连接 API 失败时的错误,为用户提供更多上下文。moby/moby#50285
  • 改进 docker secretdocker config 子命令的 shell 自动补全功能。docker/cli#6446
  • 当使用 docker run --gpus 选择设备驱动程序时,优先使用显式的设备驱动程序名称而不是 GPU 功能。moby/moby#50717
  • 更新 runc 至 v1.3.3moby/moby#51393
  • 更新 SwarmKit 内部 TLS 配置以排除已知的不安全密码套件。moby/moby#51139
  • Windows:修复 BuildKit 创建的容器隔离模式与守护进程配置不一致的问题。moby/moby#50942

打包更新

  • client:从客户端配置中移除遗留的 CBC 密码套件。moby/moby#50126

  • contrib:移除 editorconfig,因为它已不再维护。moby/moby#50607

  • contrib:移除 nano 和 TextMate (tmbundle) 的 Dockerfile 语法高亮文件,因为它们已不再维护且过时。moby/moby#50606

  • contrib:移除 mkimage-xxx 脚本,因为它们已不再维护且未经过测试。moby/moby#50297

  • 如果 Docker 降级到不支持此功能的版本,网络将变得不可用,必须删除并重新创建。moby/moby#50114

  • Windows overlay 网络驱动程序现在支持 --dns 选项。moby/moby#51229

  • 更新 BuildKit 至 v0.25.2moby/moby#51397

  • 更新 containerd 至 v2.1.5moby/moby#51409

    containerd v2.1.5 现在使用 systemd 的默认 LimitNOFILE 用于容器, 将打开的文件描述符限制(ulimit -n)从 1048576 改为 1024。这扩展了 Docker Engine v25.0 中为构建容器引入的更改, 现在适用于所有容器。

    这防止了基于 ulimit 调整行为的程序在限制设置为 infinity 时消耗 过多内存。容器现在的行为与在主机上运行的程序相同。

    如果您的工作负载需要更高的限制,请使用 docker run--ulimit, 或在 /etc/docker/daemon.json 中设置默认值:

    {
      "default-ulimits": {
        "nofile": {
          "Name": "nofile",
          "Soft": 1048576,
          "Hard": 1048576
        }
      }
    }

    有关更多信息,请参见 moby#51485

  • 更新 Go 运行时至 1.25.4moby/moby#51418docker/cli#6632

  • 用户可以通过使用未指定地址来请求从默认池分配的网络的特定前缀大小,例如 --subnet 0.0.0.0/24 --subnet ::/96moby/moby#50114

网络

  • 添加守护进程选项 --bridge-accept-fwmark。带有此防火墙标记的数据包将被桥接网络接受,覆盖 Docker 的 iptables 或 nftables "drop" 规则。moby/moby#50476
  • api/types/system: 为类型特定字段弃用顶级 DiskUsage 字段。moby/moby#51235
  • 确保在桥接网络创建失败时移除桥接设备。moby/moby#51147
  • 确保 Engine 重启时,Windows NAT 网络使用其原始标签重新创建。moby/moby#50447
  • 使用传统链接在容器上设置的环境变量已被弃用,不再自动添加。moby/moby#50719
    • 守护进程可以使用 DOCKER_KEEP_DEPRECATED_LEGACY_LINKS_ENV_VARS=1 启动以恢复它们
    • 鼓励用户停止依赖这些功能,因为它们已被弃用,逃生机制将在后续版本中移除
  • 修复 NetworkDB 中的一个错误,该错误有时会导致某些节点上的条目卡在删除状态,导致覆盖网络上容器之间的连接问题。moby/moby#50342
  • 修复一个错误,该错误可能导致 Engine 和另一个主机进程绑定相同的 UDP 端口。moby/moby#50669
  • 修复一个死锁问题,如果在桥接网络驱动程序启动、创建或删除网络或创建端口映射时处理 firewalld 重载,可能会发生此问题。moby/moby#50620
  • 修复在特定接口上仅禁用 IPv6 时阻止容器启动或选择其网络网关的问题。moby/moby#48971
  • 对于 Linux,docker info 现在报告防火墙后端(如果可用)。docker/cli#6191
  • 大幅提高覆盖网络和 Swarm 路由网格的可靠性。moby/moby#50393
  • 改进 NetworkDB 的收敛速度,NetworkDB 是覆盖网络管理平面的一部分,在突发更新后。moby/moby#50193
  • 提高覆盖网络驱动程序的可靠性。moby/moby#50260
  • 改进容器连接到网络的错误处理。moby/moby#50945
  • macvlan 和 IPvlan-l2 网络:除非在 IPAM 配置中明确包含 --gateway,否则不会配置默认网关。这解决了在启用了 IPv6 自动配置的网络中可能导致容器启动失败的问题。moby/moby#50929
  • nftables: Docker 不会在主机上启用 IP 转发。如果桥接网络需要转发但未启用,守护进程启动或网络创建将失败并显示错误。您必须启用转发并确保防火墙规则到位以防止非 Docker 接口之间的不必要转发。或者,使用守护进程选项 --ip-forward=false 禁用检查,但某些桥接网络功能(包括端口转发)可能无法工作。有关从 iptables 迁移到 nftables 的更多信息,请参见 Engine Docsmoby/moby#50646
  • 在守护进程启动时,先重启共享其网络栈的容器,然后再重启需要这些栈的容器。moby/moby#50327
  • 发布的端口现在在网关模式为 "routed" 的网络中始终可访问。以前,只有当路由模式网络被选为容器的默认网关时,才会添加打开这些端口的规则。moby/moby#50140
  • 自 28.0.0 起,只有在设置了环境变量 DOCKER_IPTABLES_SCTP_CHECKSUM=1 时才会添加用于校验 SCTP 的 iptables mangle 规则。该规则现在已被移除,环境变量现在没有效果。moby/moby#50539
  • 桥接网络的 iptables 规则已更新,包括移除 DOCKER-ISOLATION-STAGE-1DOCKER-ISOLATION-STAGE-2 链。通过这些更改:moby/moby#49981
    • 当用户空间代理未运行时,容器现在可以访问发布到主机地址的端口
    • 容器现在可以访问具有 "nat-unprotected" 网关模式的其他网络上的容器地址端口
  • 当动态链接时,Docker 守护进程现在依赖于 libnftables。moby/moby#51033
  • Windows: network inspect: HNS 网络名称现在在选项 com.docker.network.windowsshim.networkname 中报告,而不是 Docker 网络名称,Docker 网络名称仅在守护进程重启后报告。moby/moby#50961
  • Windows: 在守护进程重启时恢复网络时,保留它们与非默认 IPAM 驱动程序的关联。moby/moby#50649

API

  • events API 现在为换行符分隔的 JSON 事件流报告内容类型为 application/x-ndjsonmoby/moby#50953
  • GET /images/{name}/getPOST /images/load 现在接受多个 platform 查询参数,允许导出和加载多个平台的镜像。moby/moby#50166
  • GET /images/{name}/json 现在在值为空时省略以下字段:ParentCommentDockerVersionAuthormoby/moby#51072
  • GET /images/{name}/json:在未设置时省略空的 Config 字段。moby/moby#50915
  • POST /images/{name:}/push:移除对 API v1.4 身份验证配置在请求体中的兼容性。moby/moby#50371
  • 添加对 Swarm 服务中内存交换比的支持。moby/moby#51114
    • GET /services 现在在 Resource 要求中返回 SwapBytesMemorySwappiness 字段
    • GET /services/{id} 现在在 Resource 要求中返回 SwapBytesMemorySwappiness 字段
    • POST /services/create 现在在 Resource 要求中接受 SwapBytesMemorySwappiness 字段
    • POST /services/{id}/update 现在在 Resource 要求中接受 SwapBytesMemorySwappiness 字段
    • GET /tasks 现在在 Resource 要求中返回 SwapBytesMemorySwappiness 字段
    • GET /tasks/{id} 现在在 Resource 要求中返回 SwapBytesMemorySwappiness 字段
  • api/types/build:将 CachePruneOptions 类型移动到 client.BuildCachePruneOptionsmoby/moby#50772
  • api/types/checkpoint:将检查点选项移动到客户端模块。moby/moby#50905
  • api/types/container:如果 OnBuild 的值为空或零,则现在会被省略。moby/moby#51154
  • api/types/container:使容器配置 MacAddress 在 v1.52 及更高版本中过时。请改用网络端点设置。moby/moby#51189
  • api/types/container:将 ResizeOptions 类型移动到客户端中的 ContainerResizeOptionsmoby/moby#50773
  • api/types/events:将 ListOptions 类型移动到客户端 EventsListOptionsmoby/moby#50774
  • api/types/image:将镜像选项移出到客户端。moby/moby#50776
  • api/types/network:将 CreateOptionsConnectOptionsDisconnectOptions 移动到客户端模块。moby/moby#50817
  • api/types/network:将 ListOptionsInspectOptions 类型移动到客户端。moby/moby#50786
  • api/types/plugin:将 ListResponse 改为非指针切片。moby/moby#51440
  • api/types/plugin:移除已弃用的 Config.DockerVersionmoby/moby#51458
  • api/types/registry:将 SearchOptions 移动到客户端中的 ImageSearchOptionsmoby/moby#50787
  • api/types/registry:将 ServiceConfig 遗留字段序列化支持移到守护进程后端。moby/moby#50826
  • api/types/registry:将编码/解码身份验证配置函数移到引用工具包。moby/moby#50785
  • api/types/storage:添加 Storage 类型并集成到容器检查中。moby/moby#50857
  • api/types/swarm:弃用并停止支持 PortConfigProtocol;请改用 network.IPProtocolmoby/moby#51094
  • api/types/swarm:将选项类型移动到客户端模块。moby/moby#50794
  • api/types/swarm:将 SecretListOptions 类型移动到客户端模块。moby/moby#50816
  • api/types/system:将 DiskUsageOptions 移动到客户端。moby/moby#50788
  • api/types/system:将 SecurityOptDecodeSecurityOptions 移动到客户端模块。moby/moby#50825
  • api/types/volume:将 ListResponse.Volumes 改为非指针切片。moby/moby#51454
  • api/types/volume:将 ListOptions 类型移动到客户端模块。moby/moby#50789
  • api/types/volume:将 UpdateOptions 移动到客户端模块。moby/moby#51205
  • api/types: daemon:将磁盘使用情况结构移动到后端服务器。moby/moby#50764
  • api:使 image.InspectResponse 中的 GraphDriver 字段变为可选。在使用旧版图形驱动程序时将继续发出此字段,而在使用 containerd 镜像后端时将省略此字段。moby/moby#50893
  • api:重新定义容器网络端口类型。moby/moby#50710
  • client: PluginListResult:将 Items 字段更改为非指针切片。moby/moby#51440
  • 使用 API v1.52 及更新版本检查网络时,提供分配给网络的子网的 IPAM 分配统计信息。moby/moby#50917
  • MAC 地址字段表示为与标准库 net.HardwareAddr 类型兼容的字节切片,而不是字符串。moby/moby#51355
  • NetworkSummaryNetworkInspect 添加的 Swagger 定义已添加到描述 Engine API 的 Swagger 规范中。moby/moby#50855
  • 将 API 版本更新为 1.52。moby/moby#50418

Go SDK

  • api/pkg/progressapi/pkg/streamformatter 已被移除。moby/moby#51153
  • api/types/registry: EncodeAuthConfig: 零值时使用空字符串。moby/moby#50426
  • api/types/versions 已移至客户端和守护进程。moby/moby#51284
  • client.ConfigCreateclient.ConfigListclient.ConfigInspectWithRawclient.ConfigUpdateclient.ConfigRemove 方法现在接受选项结构体而不是位置参数,并返回专用的结果结构体。moby/moby#51078
  • client.ImageBuildclient.BuildCancelclient.ImageListclient.ImageRemoveclient.ImageTagclient.ImageSearch 方法现在接受选项结构体而不是位置参数,并返回专用的结果结构体。moby/moby#51227
  • client: ContainerExec... 方法已重命名为 Exec...moby/moby#51262
  • client: 将 ImageInspectImageHistoryImageLoadImageSave 的返回值包装在结构体中。moby/moby#51236
  • ImagePull 现在返回一个对象,该对象具有 JSONMessages 方法,返回消息对象的迭代器。moby/moby#50935
  • ImagePush 现在返回一个对象,该对象具有 JSONMessages 方法,返回消息对象的迭代器。moby/moby#51148
  • api/types/container: 将 StatsResponseReader 移至 client 包。moby/moby#50521
  • api/types/container: 将容器选项移至客户端。moby/moby#50897
  • api/types/container: 将 Port 重命名为 PortSummarymoby/moby#50711
  • api/types/container: StatsResponse: 添加 OSType 字段。moby/moby#51305
  • api/types: 将 ErrorResponse 移至 common/ErrorResponsemoby/moby#50632
  • api: 移除未使用的 DefaultVersionMinSupportedAPIVersion 常量。moby/moby#50587
  • cli/command: 添加 WithUserAgent 选项。docker/cli#4574
  • client: ContainerCommitOptions: 移除 Pause 字段,改用 NoPausemoby/moby#51019
  • client: 添加 DefaultAPIVersion 常量,该常量定义了客户端支持的默认(和最大)API 版本。moby/moby#50433
  • client: 添加 ExecAPIClient 接口,用于客户端提供的 exec 方法。moby/moby#50997
  • client: Client.PluginList: 添加选项结构体。moby/moby#51207
  • client: ContainersPrune: 重写为使用选项结构体和结果。moby/moby#51200
  • client: ImagesPrune: 重写为使用选项结构体和结果。moby/moby#51200
  • client: NetworksPrune: 重写为使用选项结构体和结果。moby/moby#51200
  • client: 移除 client.ContainerStatsResult.OSType 字段。moby/moby#51305
  • client: VolumesPrune: 重写为使用选项结构体和结果。moby/moby#51200
  • daemon/config: 添加 DefaultAPIVersion 常量,该常量定义了守护进程支持的默认(和最大)API 版本。moby/moby#50436
  • 修复 ContainerExecStartContainerListEvents 中的数据竞争。moby/moby#50448
  • IP 地址和子网现在分别为 netip.Addrnetip.Prefix 类型。moby/moby#50956
  • 移除 NetworkSettingsBaseDefaultNetworkSettings 结构体。NetworkSettingsBase 中未被弃用的字段现在直接位于 NetworkSettings 中。moby/moby#50846
  • 客户端现在使用其自己的 client.Filters 类型来过滤 API 请求,具有更符合人体工程学的接口。使用 github.com/docker/docker/api/types/filters 包的用户在升级到 v29 客户端时需要重构。moby/moby#51115
  • 类型 "github.com/moby/moby/api/types/network".Summary"github.com/moby/moby/api/types/network".Inspect 不再是别名,它们的大多数字段已移至嵌入结构体中。在迁移到新的 github.com/moby/moby/api 模块时,Engine API 客户端可能需要一些源代码级别的更改。moby/moby#50878
  • 将最低 Go 版本更新为 1.24。docker/cli#6624

弃用

  • client/pkg/jsonmessage:移除已弃用的 ProgressMessageErrorMessageDisplayJSONMessagesToStreamStream 接口。moby/moby#49264

  • GET /events 不再包含已弃用的 statusidfrom 字段。这些字段在 API v1.22 中已被移除,但仍包含在响应中。使用 API v1.52 或更高版本时,这些字段现在将被省略。moby/moby#50832

  • api/types/network: CreateRequest:移除已弃用的 CheckDuplicate 字段。moby/moby#50998

  • api/types/plugin:弃用 Config.DockerVersion 字段。moby/moby#51109

  • api/types/registry:移除已弃用的 AuthConfig.Email 字段。moby/moby#51059

  • api/types/strslice:弃用 StrSlice,建议使用常规的 []stringmoby/moby#50292

  • api/types/sytem:移除已弃用的 DiskUsage.BuilderSizemoby/moby#51180

  • api/types:将插件类型移至 api/types/plugin。moby/moby#48114

  • API:弃用:当启动容器时,Engine 会自动用带有空 HostIP 和 HostPort 的 PortBinding 来填充空的 PortBindings 列表。此行为在 API 1.52 中已弃用,并将在 API 1.53 中移除。moby/moby#50874

  • build:移除经典构建器的 DCT 支持。docker/cli#6195

  • cli/command:移除已弃用的 ResolveDefaultContextdocker/cli#6555

  • client:ImageBuildResponse:移除 OSType 字段。moby/moby#50995

  • client:移除 ImageCreate 方法 - 请使用 ImagePullImageImport 代替。moby/moby#51366

  • client:移除已弃用的 ImageListOptions.ContainerCountmoby/moby#51006

  • client:移除对协商 API 版本 < v1.44 (docker 25.0) 的支持。moby/moby#51119

  • client:移除未使用的 Client.HTTPClient() 方法。moby/moby#51011

  • daemon/graphdriver:移除已弃用的 GetDriver()moby/moby#50377

  • daemon:将最低 API 版本提升至 v1.44。moby/moby#51186

  • 弃用 docker commit 中的 --pause 标志,推荐使用 --no-pausedocker/cli#6460

  • 弃用 cgroup v1。moby/moby#51360, docker/cli#6598

  • Go SDK:cli-plugins/manager:弃用元数据别名,推荐使用 cli-plugins/manager/metadata 中的等效项。docker/cli#6237

  • Go SDK:cli-plugins/manager:移除 Candidate 接口,该接口仅用于内部使用。docker/cli#6237

  • Go SDK:cli-plugins/manager:移除 NewPluginError 函数,该函数仅用于内部使用。docker/cli#6237

  • Go SDK:cli-plugins/manager:移除已弃用的 ResourceAttributesEnvvar 常量。docker/cli#6237

  • Go SDK:cli/command:移除 ErrPromptTerminatedDisableInputEchoPromptForInputPromptForConfirmation 工具。这些工具仅供内部使用,不再使用。docker/cli#6243

  • Go SDK:cli/registry/client:移除已弃用的 RepoNameForReferencedocker/cli#6206

  • Go SDK:api/types/build:移除已弃用的 BuildCache.Parent 字段。moby/moby#51185

  • Go SDK:api/types/container:移除已弃用的 ContainerTopOKBody 别名。moby/moby#50400

  • Go SDK:api/types/container:移除已弃用的 ContainerUpdateOKBody 别名。moby/moby#50400

  • Go SDK:api/types/container:移除已弃用的 Stats 类型。moby/moby#50492

  • Go SDK:api/types/filters:移除已弃用的 ToParamWithVersionmoby/moby#50561

  • Go SDK:api/types/image:InspectResponse:移除已弃用的 VirtualSizeContainerContainerConfigParentDockerVersion 字段。moby/moby#51103

  • Go SDK:api/types/image:移除已弃用的 Summary.VirtualSize 字段。moby/moby#51190

  • Go SDK:api/types/registry:移除已弃用的 ServiceConfig.AllowNondistributableArtifactsCIDRsServiceConfig.AllowNondistributableArtifactsHostnames 字段。moby/moby#50375

  • Go SDK:api/types/swarm:移除已弃用的 ServiceSpec.Networks 字段。moby/moby#51184

  • GO SDK:api/types/system:移除已弃用的 Commit.Expected 字段。moby/moby#51127

  • Go SDK:api/types:移除已弃用的别名。moby/moby#50452

  • Go SDK:api:弃用 NoBaseImageSpecifier 常量。此常量不再使用,将在下次发布中移除。moby/moby#50437

  • Go SDK:api:移除 NoBaseImageSpecifiermoby/moby#50574

  • Go SDK:cli/command/builder:移除 CachePrune(),该函数不再使用。docker/cli#6236

  • Go SDK:cli/command/builder:移除 NewBuilderCommandNewBakeStubCommanddocker/cli#6335

  • Go SDK:cli/command/checkpoint:移除 NewCheckpointCommanddocker/cli#6335

  • Go SDK:cli/command/checkpoint:移除已弃用的 NewFormatFormatWritedocker/cli#6339

  • Go SDK:cli/command/completion:移除已弃用的 NoCompletedocker/cli#6408

  • Go SDK:cli/command/config:移除 NewConfigCommanddocker/cli#6335

  • Go SDK:cli/command/config:移除已弃用的 NewFormatFormatWriteInspectFormatWritedocker/cli#6339

  • Go SDK:cli/command/config:移除已弃用的 RunConfigCreateCreateOptionsRunConfigInspectInspectOptionsRunConfigListListOptionsRunConfigRemoveRemoveOptionsdocker/cli#6370

  • Go SDK:cli/command/container:弃用 NewDiffFormatDiffFormatWrite。这些函数仅在内部使用,将在下次发布中移除。docker/cli#6187

  • Go SDK:cli/command/container:移除 NewBuildCommandNewPullCommandNewPushCommandNewImagesCommandNewImageCommandNewHistoryCommandNewImportCommandNewLoadCommandNewRemoveCommandNewSaveCommandNewTagCommandNewPruneCommanddocker/cli#6335

  • Go SDK:cli/command/container:移除 NewRunCommandNewExecCommandNewPsCommandNewContainerCommandNewAttachCommandNewCommitCommandNewCopyCommandNewCreateCommandNewDiffCommandNewExportCommandNewKillCommandNewLogsCommandNewPauseCommandNewPortCommandNewRenameCommandNewRestartCommandNewRmCommandNewStartCommandNewStatsCommandNewStopCommandNewTopCommandNewUnpauseCommandNewUpdateCommandNewWaitCommandNewPruneCommanddocker/cli#6335

  • Go SDK: cli/command/container: 移除不再使用的 RunPrune()docker/cli#6236

  • Go SDK: cli/command/container: 移除已弃用的 NewDiffFormatDiffFormatWritedocker/cli#6339

  • Go SDK: cli/command/context: 移除 NewContextCommanddocker/cli#6335

  • Go SDK: cli/command/context: 移除已弃用的 RunCreateCreateOptionsdocker/cli#6407

  • Go SDK: cli/command/context: 移除已弃用的 RunExportExportOptionsdocker/cli#6407

  • Go SDK: cli/command/context: 移除已弃用的 RunImportdocker/cli#6407

  • Go SDK: cli/command/context: 移除已弃用的 RunRemoveRemoveOptionsdocker/cli#6407

  • Go SDK: cli/command/context: 移除已弃用的 RunUpdateUpdateOptionsdocker/cli#6407

  • Go SDK: cli/command/context: 移除已弃用的 RunUsedocker/cli#6407

  • Go SDK: cli/command/formatter/swarm: 移除已弃用的 GetStacks 函数。docker/cli#6406

  • Go SDK: cli/command/image/build: 弃用 DefaultDockerfileNameDetectArchiveReaderWriteTempDockerfileResolveAndValidateContextPath。这些工具仅在内部使用,将在下一个版本中移除。docker/cli#6561

  • Go SDK: cli/command/image: 移除不再使用的 RunPrune()docker/cli#6236

  • Go SDK: cli/command/image: 移除已弃用的 AuthResolver 工具。docker/cli#6373

  • Go SDK: cli/command/image: 移除已弃用的 NewHistoryFormatHistoryWritedocker/cli#6339, docker/cli#6339

  • Go SDK: cli/command/manifest: 移除 NewManifestCommanddocker/cli#6335

  • Go SDK: cli/command/network: 移除 NewNetworkCommanddocker/cli#6335

  • Go SDK: cli/command/network: 移除不再使用的 RunPrune()docker/cli#6236

  • Go SDK: cli/command/network: 移除已弃用的 NewFormatFormatWritedocker/cli#6339

  • Go SDK: cli/command/node: 移除 NewNodeCommanddocker/cli#6335

  • Go SDK: cli/command/node: 移除已弃用的 NewFormatFormatWriteInspectFormatWritedocker/cli#6339

  • Go SDK: cli/command/plugin: 移除 NewPluginCommanddocker/cli#6335

  • Go SDK: cli/command/plugin: 移除已弃用的 NewFormatFormatWritedocker/cli#6339

  • Go SDK: cli/command/registry: 移除 NewLoginCommandNewLogoutCommandNewSearchCommanddocker/cli#6335

  • Go SDK: cli/command/registry: 移除已弃用的 NewSearchFormatSearchWritedocker/cli#6339

  • Go SDK: cli/command/registry: 移除已弃用的 OauthLoginEscapeHatchEnvVar 常量。docker/cli#6463

  • Go SDK: cli/command/secret: 移除 NewSecretCommanddocker/cli#6335

  • Go SDK: cli/command/secret: 移除已弃用的 NewFormatFormatWriteInspectFormatWritedocker/cli#6339

  • Go SDK: cli/command/service: 移除 NewServiceCommanddocker/cli#6335

  • Go SDK: cli/command/service: 移除已弃用的 NewFormatInspectFormatWritedocker/cli#6339

  • Go SDK: cli/command/stack/swarm: 移除已弃用的 RunPS 和 options.PS。docker/cli#6398

  • Go SDK: cli/command/stack: 移除 NewStackCommanddocker/cli#6335

  • Go SDK: cli/command/stack: 移除已弃用的 RunList 和 options.List。docker/cli#6398

  • Go SDK: cli/command/stack: 移除已弃用的 RunServices 和 swarm.GetServices。docker/cli#6398

  • Go SDK: cli/command/swarm: 移除 NewSwarmCommanddocker/cli#6335

  • Go SDK: cli/command/system: 移除 NewVersionCommandNewInfoCommandNewSystemCommandNewEventsCommandNewInspectCommanddocker/cli#6335

  • Go SDK: cli/command/task: 移除已弃用的 NewTaskFormatFormatWritedocker/cli#6339

  • Go SDK: cli/command/trust: 移除 NewTrustCommanddocker/cli#6335

  • Go SDK: cli/command/trust: 移除已弃用的 NewPruneCommanddocker/cli#6344

  • Go SDK: cli/command/trust: 移除已弃用的 SignedTagInfoSignerInfoNewTrustTagFormatNewSignerInfoFormatTagWriteSignerInfoWritedocker/cli#6339

  • Go SDK: cli/command/volume: 移除 NewVolumeCommandNewPruneCommanddocker/cli#6335

  • Go SDK: cli/command/volume: 移除不再使用的 RunPrune()docker/cli#6236

  • Go SDK: cli/command: 移除仅在内部使用的 AddTrustSigningFlagsAddTrustVerificationFlagsAddPlatformFlag 工具。docker/cli#6244

  • Go SDK: cli/command: 移除已弃用的 DockerCli.Applydocker/cli#6503

  • Go SDK: cli/command: 移除已弃用的 DockerCli.ContentTrustEnableddocker/cli#6502

  • Go SDK: cli/command: 移除已弃用的 DockerCli.DefaultVersiondocker/cli#6502

  • Go SDK: cli/command: 移除已弃用的 RegistryAuthenticationPrivilegedFuncdocker/cli#6349

  • Go SDK: cli/command: 移除已弃用的 WithContentTrustFromEnvWithContentTrust 选项。docker/cli#6502

  • Go SDK: cli/config/configfile: 移除已弃用的 ConfigFile.Experimental 字段。docker/cli#6464

  • Go SDK: cli/config/types: 移除已弃用的 AuthConfig.Email 字段。docker/cli#6515

  • Go SDK: cli/manifest/store: 移除已弃用的 IsNotFounddocker/cli#6523

  • Go SDK: cli: 移除已弃用的 VisitAllDisableFlagsInUseLine 工具。docker/cli#6296

  • Go SDK: client: 从 APIClient 接口中移除 ImageInspectWithRawmoby/moby#50485

  • Go SDK: client: 从 ImageAPIClient 接口中移除 ImageAPIClient.ImageInspectWithRawmoby/moby#50485

  • Go SDK: client: 从 ImageAPIClientDeprecated 中移除 ImageAPIClientDeprecated.ImageInspectWithRawmoby/moby#50485

  • Go SDK: client: 移除已弃用的 ErrorConnectionFailedIsErrNotFound 函数。moby/moby#50485

  • Go SDK: client: 移除已弃用的 NewClientNewEnvClient 函数。moby/moby#50485

  • Go SDK: client: 移除 CommonAPIClient 接口。moby/moby#50485

  • Go SDK:client:移除 ImageAPIClientDeprecated 接口。moby/moby#50485

  • Go SDK:client:移除已弃用的 Client.ImageInspectWithRaw 方法。moby/moby#50485

  • Go SDK:container:移除已弃用的 IsValidHealthStringmoby/moby#50378

  • Go SDK:container:移除已弃用的 IsValidStateStringmoby/moby#50378

  • Go SDK:container:移除已弃用的 StateStatusWaitCondition 以及相关的 WaitConditionNotRunningWaitConditionNextExitWaitConditionRemoved 常量。moby/moby#50378

  • Go SDK:弃用 pkg/stdcopy,该包已移至 api/pkg/stdcopymoby/moby#50462

  • Go SDK:弃用字段 NetworkSettingsBase.Bridge、结构体 NetworkSettingsBaseDefaultNetworkSettings 的所有字段以及结构体 DefaultNetworkSettingsmoby/moby#50848

  • Go SDK:弃用 pkg/stringid,建议使用 github.com/moby/moby/client/pkg/stringidmoby/moby#50504

  • Go SDK:弃用 profiles 包,该包已迁移至 github.com/moby/profilesmoby/moby#50481

  • Go SDK:oci:弃用 SetCapabilities,以及一些小的清理/修复。moby/moby#50461

  • Go SDK:opts:移除已弃用的 ListOpts.GetAll。它不再被使用,并被 ListOpts.GetSlice 替代。docker/cli#6293

  • Go SDK:opts:移除已弃用的 NewNamedListOptsRefNewNamedMapOptsNamedListOptsNamedMapOptsNamedOption。这些类型和函数不再被使用,将在下一个版本中移除。docker/cli#6293

  • Go SDK:opts:移除已弃用的 ParseEnvFile,建议使用 kvfile.Parsedocker/cli#6382

  • Go SDK:opts:移除已弃用的 QuotedStringdocker/cli#6293

  • Go SDK:opts:移除已弃用的 ValidateHostdocker/cli#6293

  • Go SDK:pkg/system 已被移除,现在是一个内部包。moby/moby#50559

  • Go SDK:pkg/system:弃用 EscapeArgs()IsAbs。这些函数仅在内部使用,将在下一个版本中移除。moby/moby#50399

  • Go SDK:registry:移除已弃用的 APIEndpoint.TrimHostNameAPIEndpoint.OfficialAPIEndpoint.AllowNondistributableArtifacts 字段。moby/moby#50376

  • Go SDK:registry:移除已弃用的 HostCertsDir()SetCertsDir() 函数。moby/moby#50373

  • Go SDK:registry:移除已弃用的 RepositoryInfo.OfficialRepositoryInfo.Class 字段。moby/moby#50498

  • Go SDK:registry:移除已弃用的 Service.ResolveRepository()moby/moby#50374

  • Go SDK:移除 buildkit.ClientOptsmoby/moby#50318

  • Go SDK:移除 pkg/fileutilsmoby/moby#50558

  • Go SDK:从 cli-plugins/manager 中移除已弃用的 IsNotFoundCommandAnnotationPluginCommandAnnotationPluginVendorCommandAnnotationPluginVersionCommandAnnotationPluginInvalidCommandAnnotationPluginCommandPathNamePrefixMetadataSubcommandNameHookSubcommandNameMetadataReexecEnvvar,建议使用其 cli-plugins/manager/metadata 等价物。docker/cli#6414

  • Go SDK:移除已弃用的 types/plugins/logdrivertypes/swarm/runtime 包;插件运行时规范现在通过 types/swarm.RuntimeSpectypes/swarm.RuntimePrivilege 暴露。moby/moby#50554

  • Go SDK:移除已弃用的 cli/command/formatter 包。docker/cli#6406

  • Go SDK:移除已弃用的 cli/registry/client 包。docker/cli#6462

  • Go SDK:移除已弃用的 pkg/idtools 包。moby/moby#50456

  • Go SDK:templates:移除已弃用的 NewParse 函数。docker/cli#6453

  • docker rundocker create 上隐藏 --kernel-memory 选项,并在使用时产生警告,因为它不再被守护进程和内核支持。docker/cli#6455

  • 在使用 JSON 格式时,从 docker image ls 输出中移除 VirtualSize 字段。docker/cli#6524

  • 移除 VirtualSize 格式化选项和输出。docker/cli#6524

  • 移除对 API 版本 < v1.44(Docker v24.0 及更早版本)的 API 版本兼容性。docker/cli#6551

  • 移除 --mount 的已弃用 bind-nonrecursive 选项。docker/cli#6241

  • 移除已弃用的包(pkg/archivepkg/chrootarchivepkg/atomicwriterpkg/reexecpkg/platformpkg/parsers)、pkg/system.MkdirAll。有关替代方案,请参见 github.com/moby/go-archivegithub.com/moby/sys 和标准库。moby/moby#50208

  • 移除对 --tlscacert--tlscert--tlskey 命令行标志的带引号值的特殊处理。docker/cli#6306

  • 移除对 API < 1.30 的 AutoRemove(--rm)支持。docker/cli#6525

  • 移除对加载旧版(Docker 1.10 之前)镜像的支持。moby/moby#50324