Docker Engine 27 版本发行说明

Table of contents

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

有关更多信息,请参阅:

27.5

Docker Engine 27.5 版本的发行说明。

27.5.1

2025-01-22

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

错误修复和增强功能

  • 修复了在初始化默认网桥失败后可能持续阻止守护程序启动的问题。moby/moby#49307
  • 添加 DOCKER_IGNORE_BR_NETFILTER_ERROR 环境变量。将其设置为 1 允许在无法加载 br_netfilter 的主机上运行。某些功能将无法工作,包括在桥接网络中禁用容器间通信。如果禁用了用户空间代理,则无法从同一网络上的另一个容器访问某个容器已发布的端口。moby/moby#49306

软件包更新

27.5.0

2025-01-13

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

错误修复和增强功能

  • containerd 镜像存储:修复通过 tarball 将构建上下文传递给 /build 端点的问题。moby/moby#49194
  • 没有 keepStorage 值的构建器垃圾回收策略现在按预期继承 defaultKeepStorage 限制。moby/moby#49137
  • 在守护程序启动期间保留网络标签。moby/moby#49200
  • 修复了删除容器时可能出现的竞争条件错误。moby/moby#49239

Go SDK

  • pkg/sysinfo:弃用 NumCPU。此实用程序与 runtime.NumCPU 具有相同的行为。moby/moby#49247
  • pkg/fileutils:弃用 GetTotalUsedFds:此函数仅在内部使用,将在下一个版本中移除。moby/moby#49209
  • pkg/ioutils:弃用 BytesPipeNewBytesPipeErrClosedWriteCounterNewWriteCounterNewReaderErrWrapperNopFlusherNopWriterNopWriteCloser。它们仅在内部使用,将在下一个版本中移除。moby/moby#49246, moby/moby#49255
  • pkg/reexec:此包已弃用并移至单独的模块。请改用 github.com/moby/sys/reexecmoby/moby#49135

软件包更新

27.4

Docker Engine 27.4 版本的发行说明。

27.4.1

2024-12-18

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

错误修复和增强功能

  • 修复了未配置 OTel 时内存分配过多的问题。moby/moby#49079
  • docker info 命令和相应的 GET /info API 端点在守护程序启动时 bridge-nf-call-iptablesbridge-nf-call-ip6tables 被禁用的情况下不再包含警告。现在会在需要时尝试加载 br_netfilter 内核模块,这使得这些警告不准确。moby/moby#49090
  • 尝试在需要时使用在 Docker-in-Docker 容器内可能成功的方法加载内核模块,包括 ip6_tablesbr_netfiltermoby/moby#49043
  • 修复了一个错误,该错误可能导致 iptables DOCKER FILTER 链在失败时未被清理。moby/moby#49110

软件包更新

27.4.0

2024-12-09

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

API

  • 启用 manifests 选项的 GET /images/json 现在会保留清单在清单索引中出现的原始顺序。moby/moby#48712

错误修复和增强功能

  • 使用 jsonfilelocal 日志驱动程序读取日志时,任何尝试读取或解析底层日志文件的错误都会导致跳过文件的其余部分并移动到下一个日志文件(如果存在),而不是向客户端返回错误并关闭流。这些错误可在 Docker 守护程序日志中查看,并在配置了跟踪时导出到跟踪中。moby/moby#48842
  • 读取日志文件时,压缩的日志文件现在仅在需要时解压缩,而不是在启动日志流之前解压缩所有文件。moby/moby#48842
  • 修复了一个问题,该问题意味着当内核的 br_netfilter 模块未加载和启用时,桥接网络上某个容器的已发布端口无法从同一网络上禁用 userland-proxy 的另一个容器访问。守护程序现在在创建禁用用户空间代理的网络时,将尝试加载模块并启用 bridge-nf-call-iptablesbridge-nf-call-ip6tablesmoby/moby#48685
  • 修复了 bridgebr_netfilter 内核模块的加载。moby/moby#48966
  • containerd 镜像存储:修复了在使用 containerd 快照程序且存在大量构建/镜像时,Docker 守护程序因“context deadline exceeded error”而无法完全启动的问题。moby/moby#48954
  • containerd 镜像存储:修复了部分拉取的镜像未被垃圾回收的问题。moby#48910, moby/moby#48957
  • containerd 镜像存储:修复了 docker image inspectRepoDigests 中输出重复引用的问题。moby/moby#48785
  • containerd 镜像存储:修复了在 HTTPS 请求因非 TLS 相关错误而失败时无法连接到某些不安全注册表的问题。moby/moby#48758
  • containerd 镜像存储:在标记非悬空镜像时移除令人困惑的警告日志。moby/moby#49010
  • containerd 镜像存储:在 docker image ls --tree 中不为名称添加下划线。docker/cli#5519
  • containerd 镜像存储:将 docker image ls --tree 中的 USED 列名称更改为 IN USEdocker/cli#5518
  • dockerd-rootless-setuptool.sh install --force 现在忽略 RootlessKit 错误 moby/moby#48695
  • 为分配给属于桥接网络的网桥的地址禁用 IPv6 重复地址检测 (DAD)。moby/moby#48684
  • 移除 BuildKit 初始化超时。moby/moby#48963
  • 在 ZFS 上移除数据集时忽略“dataset does not exist”错误。moby/moby#48968
  • 客户端:防止空闲连接泄漏 FD。moby/moby#48764
  • 修复了通过 --mount 选项创建的匿名卷未被标记为匿名的问题。moby/moby#48755
  • 在使用 live-restore 重启守护程序后,确保 iptables 跳转到 DOCKER-USER 链的规则位于其他规则之前。moby/moby#48714
  • 修复了由 OTel meter 可能导致的内存泄漏。moby/moby#48693
  • 为每个镜像存储创建独立的构建历史数据库。moby/moby#48688
  • 修复了在紧密循环中进行 DNS 解析时导致内存使用过多的问题。moby/moby#48840
  • 修复了一个错误,该错误阻止了在 docker run 期间取消镜像拉取。docker/cli#5654
  • docker logindocker logout 命令在凭据未更改时不再更新配置文件。docker/cli#5569
  • 优化 docker stats 以减少闪烁问题。docker/cli#5588, docker/cli#5635
  • 修复了无法访问的插件路径阻止检测插件的问题。docker/cli#5652
  • 为 cobra 生成的 shell 补全添加对 events --filter 的支持。docker/cli#5614
  • 修复了 events --filter daemon= 的 bash 补全。docker/cli#5563
  • 改进了 docker rm 的容器 shell 补全。docker/cli#5540
  • --platform 标志添加 shell 补全。docker/cli#5540
  • rootless:使 /etc/cdi/var/run/cdi 可由容器设备接口 (CDI) 集成访问。moby/moby#49027

已移除

  • 弃用 Daemon.Exists()Daemon.IsPaused()。这些函数不再使用,将在下一个版本中移除。moby/moby#48719
  • 弃用 container.ErrNameReservedcontainer.ErrNameNotReservedmoby/moby#48697
  • 弃用 pkg/platform - 此包仅在内部使用,将在下一个版本中移除。moby/moby#48863
  • 弃用 RepositoryInfo.Class。此字段不再使用,将在下一个版本中移除。moby/moby#49013
  • Go SDK:修复 cli/command.ConfigureAuth() 的弃用,该函数自 v27.2.1 起已弃用。docker/cli#5552
  • Go SDK:弃用 cli.Errors 类型,改用 Go 的 errors.Join docker/cli#5548

软件包更新

27.3

Docker Engine 27.3 版本的发行说明。

27.3.1

2024-09-20

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

错误修复和增强功能

  • CLI:修复了命令执行指标未正确导出的问题。docker/cli#5457

软件包更新

27.3.0

2024-09-19

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

错误修复和增强功能

  • containerd 镜像存储:修复了 docker image prune -a 会取消标记由通过摘要引用启动的容器所使用的镜像的问题。moby/moby#48488
  • 为守护程序选项添加 --feature 标志。moby/moby#48487
  • 更新了 --gpus=0 标志的处理,以与 NVIDIA 容器运行时保持一致。moby/moby#48483
  • 支持 WSL2 镜像模式网络使用 loopback0 接口处理来自 Windows 主机的数据包。moby/moby#48514
  • 修复了一个问题,该问题在运行 --iptables=false--ip6tables=true(默认值)以及具有针对转发数据包的 DROP 规则的防火墙的主机上(其中 br_netfilter 内核模块通常未加载)时,阻止了 IPv4 桥接网络上容器之间的通信。moby/moby#48511
  • CLI:修复了 docker volume update 命令在未传递参数/卷时会导致 CLI 崩溃的问题。docker/cli#5426
  • CLI:在 Windows 上的 WSL 环境中运行时正确报告指标。docker/cli#5432

软件包更新

27.2

Docker Engine 27.2 版本的发行说明。

27.2.1

2024-09-09

错误修复和增强功能

  • containerd 镜像存储:修复了非容器镜像在 docker image ls 输出中被隐藏的问题。moby/moby#48402
  • containerd 镜像存储:改进了当镜像平台不匹配时 docker pull 的错误消息。moby/moby#48415
  • CLI:修复了导致 docker login 不从传入的注册表地址中移除仓库名称的问题,从而导致凭据存储在错误的键下。docker/cli#5385
  • CLI:修复了一个问题,该问题有时会导致在等待用户进行身份验证时,如果 CLI 进程挂起然后恢复,浏览器登录流程会失败。docker/cli#5376
  • CLI:docker login 现在在非交互方式调用时,如果使用了 --password--password-stdin 但没有 --user,则会返回错误而不是挂起。docker/cli#5402

软件包更新

27.2.0

2024-08-27

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

新增功能

此版本中的新功能包括:

设备代码登录

此版本增加了在向 Docker Hub 进行身份验证时使用设备代码登录的支持。

您仍然可以使用旧的用户名和密码或访问令牌登录方法,但设备代码登录更安全,并且不需要您在 CLI 中输入密码。

device-code-login
设备代码登录

要使用旧方法,请使用 docker login -u <username>

docker image ls 的多平台支持

Experimental

此功能处于实验阶段,可能会在任何时候发生更改,且没有任何向后兼容性。

启用 containerd 镜像存储后,docker image ls 命令(或简写 docker images)现在支持 --tree 标志,该标志现在可以显示镜像是否为多平台镜像。

API

  • GET /images/json 响应现在包含 Manifests 字段,其中包含有关镜像索引中包含的子清单的信息。这包括特定于平台的清单和构建证明等内容。

    仅当请求同时将 manifests 查询参数设置为 true 时,才会填充新字段。

    Experimental

    此功能处于实验阶段,可能会在任何时候发生更改,且没有任何向后兼容性。

错误修复和增强功能

  • CLI:修复了通过 SSH 连接远程上下文时的问题,该问题会导致 CLI 在连接到远程主机时分配伪 TTY,这在极少数情况下会导致问题。docker/cli#5351
  • 修复了一个问题,该问题阻止了以 64 位边界结束的 --ip-range 创建网络。moby/moby#48326
  • CLI:docker ps 中端口绑定显示的 IPv6 地址现在用方括号括起来。docker/cli#5365
  • containerd 镜像存储:修复了在解压镜像失败时 docker load 提前错误退出的问题。moby/moby#48376
  • containerd 镜像存储:修复了在 docker pull 后未将先前的镜像保留为悬空的问题。moby/moby#48380

软件包更新

已知问题

  • Docker CLI 在向注册表进行身份验证时存在一个已知问题(docker login [registry address]),如果提供的注册表地址包含仓库/镜像名称(例如 docker login index.docker.io/docker/welcome-to-docker),则仓库部分(docker/welcome-to-docker)不会被规范化,导致凭据存储不正确,这会导致后续从注册表拉取(docker pull index.docker.io/docker/welcome-to-docker)时无法进行身份验证。为防止这种情况,在运行 docker login 时,请勿在注册表地址中包含任何额外的后缀。
    Note

    使用包含 URL 路径段的地址进行 docker login 不是文档化的用例,被视为不受支持。推荐的用法是指定仅注册表主机名,以及可选的端口,作为 docker login 的地址。

27.1

Docker Engine 27.1 版本的发行说明。

27.1.2

2024-08-13

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

错误修复和增强功能