Docker Engine 27 版发行说明

本页介绍 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`:弃用 `BytesPipe`、`NewBytesPipe`、`ErrClosed`、`WriteCounter`、`NewWriteCounter`、`NewReaderErrWrapper`、`NopFlusher`、`NopWriter`、`NopWriteCloser`。它们只在内部使用,将在下一个版本中移除。moby/moby#49246moby/moby#49255
  • `pkg/reexec`:此包已弃用并移至单独的模块。请改用 `github.com/moby/sys/reexec`。moby/moby#49135

打包更新

27.4

Docker Engine 27.4 版本发行说明。

27.4.1

2024-12-18

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

错误修复和增强

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

打包更新

27.4.0

2024-12-09

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

API

  • 启用了 `manifests` 选项的 `GET /images/json` 现在会保留 manifest-index 中 manifest 出现的原始顺序。moby/moby#48712

错误修复和增强

  • 当使用 `jsonfile` 或 `local` 日志驱动程序读取日志时,尝试读取或解析底层日志文件时出现的任何错误将导致跳过文件的其余部分并移动到下一个日志文件(如果存在),而不是向客户端返回错误并关闭流。这些错误可以在 Docker Daemon 日志中查看,并在配置跟踪时导出到跟踪。moby/moby#48842
  • 读取日志文件时,现在只有在需要时才解压缩压缩的日志文件,而不是在开始日志流之前解压缩所有文件。moby/moby#48842
  • 修复了一个问题:当在禁用 `userland-proxy` 的桥接网络上运行时,如果内核的 `br_netfilter` 模块未加载且未启用,则同一网络上的一个容器的已发布端口无法从另一个容器访问。现在,当创建禁用用户空间代理的网络时,守护进程将尝试加载该模块并启用 `bridge-nf-call-iptables` 或 `bridge-nf-call-ip6tables`。moby/moby#48685
  • 修复 `bridge` 和 `br_netfilter` 内核模块的加载问题。moby/moby#48966
  • containerd 镜像存储:修复 Docker 守护进程在使用 containerd 快照器和许多构建/镜像时,因“上下文截止日期超出错误”而无法完全启动的问题。moby/moby#48954
  • containerd 镜像存储:修复部分拉取的镜像未被垃圾回收的问题。moby#48910moby/moby#48957
  • containerd 镜像存储:修复 `docker image inspect` 在 `RepoDigests` 中输出重复引用。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 USE`。docker/cli#5518
  • `dockerd-rootless-setuptool.sh install --force` 现在会忽略 RootlessKit 错误 moby/moby#48695
  • 禁用属于桥接网络的桥接器所分配地址的 IPv6 重复地址检测 (DAD)。moby/moby#48684
  • 移除 BuildKit 初始化超时。moby/moby#48963
  • 在 ZFS 上删除数据集时,忽略“数据集不存在”错误。moby/moby#48968
  • 客户端:防止空闲连接泄漏文件描述符。moby/moby#48764
  • 修复通过 `--mount` 选项创建的匿名卷未标记为匿名的问题。moby/moby#48755
  • 在守护进程使用 live-restore 重启后,确保 iptables 跳转到 `DOCKER-USER` 链的操作放置在其他规则之前。moby/moby#48714
  • 修复 OTel 仪表可能导致的内存泄漏。moby/moby#48693
  • 为每个镜像存储创建独立的构建历史数据库。moby/moby#48688
  • 修复了当 DNS 解析在紧密循环中进行时导致内存使用过多的问题。moby/moby#48840
  • 修复了 `docker run` 期间无法取消镜像拉取操作的错误。docker/cli#5654
  • 如果凭据未更改,`docker login` 和 `docker logout` 命令不再更新配置文件。docker/cli#5569
  • 优化 `docker stats` 以减少闪烁问题。docker/cli#5588docker/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.ErrNameReserved` 和 `container.ErrNameNotReserved`。moby/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 里程碑:

错误修复和增强

打包更新

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`(默认)、以及在未正常加载 `br_netfilter` 内核模块的主机上,防火墙对转发的数据包设置了 DROP 规则时,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 `。

`docker image ls` 的多平台支持

实验性功能

这是一个实验性功能,随时可能更改,不提供任何向后兼容性。

在启用 containerd 镜像存储的情况下,`docker image ls` 命令(或 `docker images` 简写)现在支持一个 `--tree` 标志,该标志现在显示镜像是否是多平台镜像。

API

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

    只有当请求也将 `manifests` 查询参数设置为 `true` 时,才会填充新字段。

    实验性功能

    这是一个实验性功能,随时可能更改,不提供任何向后兼容性。

错误修复和增强

  • CLI:修复了通过 SSH 进行远程上下文时,CLI 在连接到远程主机时会分配伪 TTY 的问题,这在极少数情况下会导致问题。docker/cli#5351
  • 修复了网络创建时 `--ip-range` 以 64 位边界结束时出现的问题。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 [注册表地址]`),存在一个已知问题:如果提供的注册表地址包含仓库/镜像名称(例如 `docker login index.docker.io/docker/welcome-to-docker`),则仓库部分(`docker/welcome-to-docker`)未规范化,导致凭据存储不正确,从而导致后续从注册表拉取镜像(`docker pull index.docker.io/docker/welcome-to-docker`)时未进行认证。为防止此问题,在运行 `docker login` 时,请勿在注册表地址中包含任何多余的后缀。
    注意

    使用包含 URL 路径段的地址进行 `docker login` 不是文档中记载的使用案例,被认为是不受支持的。建议的使用方式是仅指定注册表主机名,并可选地指定端口,作为 `docker login` 的地址。

27.1

Docker Engine 27.1 版本发行说明。

27.1.2

2024-08-13

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

错误修复和增强

  • 修复了在从大型 Dockerfile 构建时可能导致 `ResourceExhausted desc = grpc: received message larger than max` 错误的回归问题。moby/moby#48245
  • CLI:修复 `docker attach` 打印虚假 `context cancelled` 错误消息的问题。docker/cli#5296
  • CLI:修复 `docker attach` 在 `SIGINT` 上退出,而不是将信号转发到容器并等待其退出。docker/cli#5302
  • CLI:修复 `--device-read-bps` 和 `--device-write-bps` 选项不生效的问题。docker/cli#5339
  • CLI:修复在运行插件时某些情况下发生的崩溃。docker/cli#5337

打包更新

27.1.1

2024-07-23

安全性

此版本包含对 CVE-2024-41110 / GHSA-v23v-6jw2-98fq 的修复,该漏洞影响使用 授权插件 (AuthZ) 进行访问控制的设置。此版本中不包含其他更改,对于不使用 AuthZ 插件的用户,此版本与之前的版本完全相同。

打包更新

27.1.0

2024-07-22

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

错误修复和增强

  • rootless: 添加 `Requires=dbus.socket` 以防止在 cgroup v2 主机上使用 systemd 启动守护进程时出现错误。moby/moby#48141
  • containerd 集成:使用 BuildKit 构建镜像时,现在会正确发出 `image tag` 事件。moby/moby#48182
  • CLI:为 `docker image rm`、`docker image history` 和 `docker image inspect` 启用 shell 补全。moby/moby#5261
  • CLI:添加并改进了各种标志的 shell 补全。moby/moby#5261
  • CLI:向 `docker service create` 和 `docker stack` 添加 OOMScoreAdj。docker/cli#5274
  • CLI:添加对 `DOCKER_CUSTOM_HEADERS` 环境变量的支持(实验性)。docker/cli#5271
  • CLI:containerd 集成:修复 `docker push` 在不受支持的 API 版本上将 `--platform` 标志默认设置为 `DOCKER_DEFAULT_PLATFORM` 环境变量值的问题。docker/cli#5248
  • CLI:修复:`login` 提示上的上下文取消。docker/cli#5260
  • CLI:修复:在连接到容器时向 CLI 发送终止请求时,等待容器退出后再关闭流。docker/cli#5250

已弃用

  • `pkg/rootless/specconv` 包已弃用,将在下一个版本中移除。moby/moby#48185
  • `pkg/containerfs` 包已弃用,将在下一个版本中移除。moby/moby#48185
  • `pkg/directory` 包已弃用,将在下一个版本中移除。moby/moby#48185
  • `api/types/system`:移除已弃用的 `Info.ExecutionDriver`。moby/moby#48184

打包更新

27.0

Docker Engine 27.0 的发行说明。

27.0.3

2024-07-01

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

错误修复和增强

  • 修复了一个回归问题,该问题错误地将从主机 IPv6 地址到仅 IPv4 容器的端口映射报告为错误。moby/moby#48090
  • 修复了创建网络时导致重复子网分配的回归问题。moby/moby#48089
  • 修复了在使用 rootless 模式并在支持带有用户命名空间的本机 overlay 的系统上尝试拉取镜像时导致 `fail to register layer: failed to Lchown` 错误的回归问题。moby/moby#48086

27.0.2

2024-06-27

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

错误修复和增强

已移除

  • api/types: 弃用 `ContainerJSONBase.Node` 字段和 `ContainerNode` 类型。这些定义被独立的(“经典”)Swarm API 使用,但从未在 Docker Engine 本身中实现。moby/moby#48055

27.0.1

2024-06-24

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

新增

  • containerd 镜像存储:向 `docker image push` 添加了 `--platform` 标志,并改进了在多平台镜像并非所有平台都在本地可用时的默认行为。docker/cli#4984moby/moby#47679
  • 为 `docker stack deploy` 添加了对服务网络中 `driver_opts` 的支持。docker/cli#5125
  • 在查找带 `docker-` 前缀的用户空间代理二进制文件时,考虑额外的 `/usr/local/libexec` 和 `/usr/libexec` 路径。moby/moby#47804

错误修复和增强

  • `*client.Client` 实例现在始终可以安全地被多个 goroutine 并发使用。以前,在使用 `WithAPIVersionNegotiation()` 选项时,这可能导致数据竞争。moby/moby#47961
  • 修复了 Docker CLI 在某些情况下会泄漏 `$TMPDIR` 中的 Unix socket 的错误。docker/cli#5146
  • 当与 `--privileged` 结合使用时,不要忽略自定义 seccomp 配置文件。moby/moby#47500
  • rootless: overlay2: 在 Linux 内核版本 5.11 及更高版本中使用 rootless 模式时,支持本机 overlay diff。moby/moby#47605
  • 修复了健康检查的 `StartInterval` 默认值,以反映文档中的值 5 秒。moby/moby#47799
  • 修复了当用户取消操作(例如使用 Ctrl+C)时,`docker save` 和 `docker load` 未在守护进程端结束的问题。moby/moby#47629
  • 容器的 `StartedAt` 属性现在在容器启动前记录,保证 `StartedAt` 始终在 `FinishedAt` 之前。moby/moby#47003
  • Windows 容器在 Windows 上使用的内部 DNS 解析器现在默认将请求转发到外部 DNS 服务器。这使得 `nslookup` 能够解析外部主机名。此行为可以通过 `daemon.json` 禁用,使用 `"features": { "windows-dns-proxy": false }`。该配置选项将在未来的版本中移除。moby/moby#47826
  • 当 CLI 没有权限读取配置文件时,打印警告。docker/cli#5077
  • 修复容器附加时的 goroutine 和文件描述符泄漏。moby/moby#45052
  • 在守护进程启动期间,清除所有已停止或已死亡容器的网络状态。moby/moby#47984
  • 原子地写入卷选项 JSON,以避免系统崩溃后出现“无效 JSON”错误。moby/moby#48034
  • 允许具有相同父级的多个 macvlan 网络。moby/moby#47318
  • 允许 BuildKit 在宣传它的 Windows 守护进程上使用。docker/cli#5178

网络

  • 允许在容器创建和网络连接期间为每个接口设置 sysctls。moby/moby#47686
    • 在未来的版本中,这将是唯一设置每个接口 sysctl 选项的方法。例如,在 `docker run` 命令的命令行中,`--network mynet --sysctl net.ipv4.conf.eth0.log_martians=1` 将被拒绝。相反,您必须使用 `--network name=mynet,driver-opt=com.docker.network.endpoint.sysctls=net.ipv4.conf.IFNAME.log_martians=1`。
IPv6
  • `ip6tables` 不再是实验性功能。您可以移除 `experimental` 配置选项并继续使用 IPv6,如果其他功能不需要它。
  • `ip6tables` 现在默认在 Linux 桥接网络上启用。moby/moby#47747
    • 这使得 IPv4 和 IPv6 行为相互一致,并降低了启用 IPv6 的容器意外暴露于网络的风险。
    • 如果您运行 Docker Engine 时启用了 `ip6tables`(新默认值),则没有影响。
    • 如果您在没有 `ip6tables` 的情况下使用启用了 IPv6 的桥接网络,这可能是一个破坏性更改。只有已发布的容器端口(`-p` 或 `--publish`)可以从 Docker 桥接网络外部访问,并且出站连接伪装成主机。
    • 要恢复早期版本的行为,即完全不使用 `ip6tables`,请在 `daemon.json` 中设置 `"ip6tables": false`,或使用 CLI 选项 `--ip6tables=false`。或者,保留 `ip6tables` 启用状态,发布端口,并启用直接路由。
    • 在启用 `ip6tables` 的情况下,如果 `ip6tables` 在您的主机上无法正常工作,Docker Engine 将启动,但无法创建启用 IPv6 的网络。
IPv6 网络配置改进
  • 如果 `default-address-pools` 参数未手动配置,或者不包含任何 IPv6 前缀,则会自动向其添加一个唯一的本地地址 (ULA) 基本前缀。moby/moby#47853
    • 在此版本之前,要创建启用 IPv6 的网络,需要使用 `--subnet` 选项指定一个 IPv6 子网,或者在 `daemon.json` 中向 `default-address-pools` 添加 IPv6 范围。
    • 从本版本开始,当使用 `--ipv6` 创建桥接网络且这些选项未定义 IPv6 子网时,将使用 IPv6 唯一本地地址 (ULA) 基本前缀。
    • ULA 前缀源自 Engine 主机 ID,因此它在不同主机和不同时间都是唯一的。
  • 现在可以将任何大小的 IPv6 地址池添加到 `default-address-pools`。moby/moby#47768
  • 现在可以通过在 `daemon.json` 中使用 `"default-network-opts": { "bridge": {"com.docker.network.enable_ipv6": "true"}}`,或者在命令行上使用 `dockerd --default-network-opt=bridge=com.docker.network.enable_ipv6=true`,默认在所有自定义桥接网络上启用 IPv6。moby/moby#47867
  • 启用了 `ip6tables` 的 IPv6 网络的直接路由。moby/moby#47871
    • 新增了桥接驱动程序选项 `com.docker.network.bridge.gateway_mode_ipv6=`。
    • 默认行为 `nat` 与之前启用了 `ip6tables` 的版本保持不变。为每个已发布的容器端口设置了 NAT 和伪装规则。
    • 当设置为 `routed` 时,不为已发布的端口配置 NAT 或伪装规则。这使得可以直接 IPv6 访问容器,如果主机的网络可以将容器地址的数据包路由到主机。已发布的端口将在容器的防火墙中打开。
    • 当端口映射仅适用于 `routed` 模式时,只允许地址 `0.0.0.0` 或 `::`,并且不得给出主机端口。
    • 请注意,在 `nat` 或 `routed` 模式下,如果网络中设置了路由,则已发布的容器端口可以从任何远程地址访问,除非 Docker 主机的防火墙有额外的限制。例如:`docker network create --ipv6 -o com.docker.network.bridge.gateway_mode_ipv6=routed mynet`。
    • 选项 `com.docker.network.bridge.gateway_mode_ipv4=` 也可用,行为与 IPv4 相同。
  • 如果主机上正在运行 firewalld,Docker 将创建策略 `docker-forwarding` 以允许从任何区域转发到 `docker` 区域。这使得配置具有可路由 IPv6 地址且无 NAT 或伪装的桥接网络成为可能。moby/moby#47745
  • 当发布端口时未指定主机端口,或给出了主机端口范围时,将为 IPv4 和 IPv6 分配相同的端口。moby/moby#47871
    • 例如,`-p 80` 将导致为 `0.0.0.0` 和 `::` 分配相同的临时端口,而 `-p 8080-8083:80` 将从该范围为这两个地址族选择相同的端口。
    • 同样,发布到特定地址的端口也将分配相同的端口。例如,`-p 127.0.0.1::80 -p '[::1]::80'`。
    • 如果所有所需地址上都没有可用端口,则容器创建将失败。
  • 在 26.1.1 版本中引入的环境变量 `DOCKER_ALLOW_IPV6_ON_IPV4_INTERFACE` 不再有任何作用。moby/moby#47963
    • 如果由于 `/proc/sys/net` 是只读的而无法在接口上禁用 IPv6,则环境变量允许容器无论如何都可以启动。
    • 在此版本中,如果无法为接口禁用 IPv4,则只需在创建网络时使用 `--ipv6` 即可明确为网络启用 IPv6。其他解决方法是配置操作系统默认禁用新接口上的 IPv6,挂载 `/proc/sys/net` 为读写,或使用不支持 IPv6 的内核。
  • 对于启用 IPv6 的桥接网络,不要尝试将桥接器的内核分配的链路本地地址替换为 `fe80::1`。moby/moby#47787

已移除

  • 弃用实验性 GraphDriver 插件。moby/moby#48050docker/cli#5172
  • pkg/archive:弃用 `NewTempArchive` 和 `TempArchive`。这些类型仅用于测试,将在下一个版本中移除。moby/moby#48002
  • pkg/archive:弃用 `CanonicalTarNameForPath` moby/moby#48001
  • 弃用 pkg/dmesg。此包不再使用,将在下一个版本中移除。moby/moby#47999
  • 弃用 `pkg/stringid.ValidateID` 和 `pkg/stringid.IsShortID` moby/moby#47995
  • runconfig: 弃用 `SetDefaultNetModeIfBlank` 并将 `ContainerConfigWrapper` 移至 `api/types/container`。moby/moby#48007
  • runconfig: 弃用 `DefaultDaemonNetworkMode` 并移至 `daemon/network`。moby/moby#48008
  • runconfig: 弃用 `opts.ConvertKVStringsToMap`。此实用程序不再使用,将在下一个版本中移除。moby/moby#48016
  • runconfig: 弃用 `IsPreDefinedNetwork`。moby/moby#48011

API

  • containerd 镜像存储:`POST /images/{name}/push` 现在支持 `platform` 参数(JSON 编码的 OCI Platform 类型),允许从多平台镜像中选择特定的平台清单。这是一个实验性功能,可能会在未来的 API 版本中更改。moby/moby#47679
  • `POST /services/create` 和 `POST /services/{id}/update` 现在支持 `OomScoreAdj`。moby/moby#47950
  • `ContainerList` API 返回容器注释。moby/moby#47866
  • `POST /containers/create` 和 `POST /services/create` 现在接受 `Options` 作为 `HostConfig.Mounts.TmpfsOptions` 的一部分,允许设置 tmpfs 挂载的选项。moby/moby#46809
  • 当使用低于 v1.44 的 API 版本更新 Swarm 服务时,`Healthcheck.StartInterval` 属性现在已正确忽略。moby/moby#47991
  • `GET /events` 现在支持镜像 `create` 事件,该事件在构建新镜像时发出,无论是否标记。moby/moby#47929
  • `GET /info` 现在包含一个 `Containerd` 字段,其中包含有关 containerd API socket 位置以及守护进程用于运行容器和插件的 containerd 命名空间的信息。moby/moby#47239
  • 弃用镜像检查输出中的非标准(config)字段。此端点(用于 `docker image inspect`)返回的 `Config` 字段返回了不属于镜像配置且不属于 Docker 镜像规范OCI 镜像规范 的附加字段。这些字段从未设置(并且总是返回该类型的默认值),但在为空时不会在响应中省略。由于这些字段不打算作为镜像配置响应的一部分,因此它们已被弃用,并将在未来的 API 版本中移除。
  • 弃用守护进程标志 `--api-cors-header` 和相应的 `daemon.json` 配置选项。这些将在下一个主要版本中移除。moby/moby#45313

以下已弃用的字段目前包含在 API 响应中,但不属于底层镜像的 `Config`:moby/moby#47941

  • Hostname
  • Domainname
  • AttachStdin
  • AttachStdout
  • AttachStderr
  • Tty
  • OpenStdin
  • StdinOnce
  • Image
  • `NetworkDisabled`(除非设置,否则已省略)
  • `MacAddress`(除非设置,否则已省略)
  • `StopTimeout`(除非设置,否则已省略)

Go SDK 更改

  • 以下函数的客户端 API 回调现在需要上下文参数。moby/moby#47536
    • client.RequestPrivilegeFunc
    • client.ImageSearchOptions.AcceptPermissionsFunc
    • image.ImportOptions.PrivilegeFunc
  • 删除 Image 类型的已弃用别名。moby/moby#47900
    • ImageImportOptions
    • ImageCreateOptions
    • ImagePullOptions
    • ImagePushOptions
    • ImageListOptions
    • ImageRemoveOptions
  • 引入 `Ulimit` 类型别名,指向 `github.com/docker/go-units.Ulimit`。API 中使用的 `Ulimit` 类型定义在一个 Go 模块中,该模块将在未来迁移到新位置。添加类型别名是为了减少将类型移动到新位置带来的摩擦。该别名确保现有代码继续工作,但其定义可能会在未来更改。建议用户使用此别名而不是直接使用 `units.Ulimit`。moby/moby#48023

移动和重命名类型,更改其导入路径和导出名称。moby/moby#47936moby/moby#47873moby/moby#47887moby/moby#47882moby/moby#47921moby/moby#48040

  • 将以下类型移动到 `api/types/container`
    • BlkioStatEntry
    • BlkioStats
    • CPUStats
    • CPUUsage
    • ContainerExecInspect
    • ContainerPathStat
    • ContainerStats
    • ContainersPruneReport
    • CopyToContainerOptions
    • ExecConfig
    • ExecStartCheck
    • MemoryStats
    • NetworkStats
    • PidsStats
    • StatsJSON
    • Stats
    • StorageStats
    • ThrottlingData
  • 将以下类型移动到 `api/types/image`
    • ImagesPruneReport
    • ImageImportSource
    • ImageLoadResponse
  • 将 `ExecStartOptions` 类型移动到 `api/types/backend`。
  • 将 `VolumesPruneReport` 类型移动到 `api/types/volume`。
  • 将 `EventsOptions` 类型移动到 `api/types/events`。
  • 将 `ImageSearchOptions` 类型移动到 `api/types/registry`。
  • 删除 `Network` 前缀并将以下类型移动到 `api/types/network`
    • NetworkCreateResponse
    • NetworkConnect
    • NetworkDisconnect
    • NetworkInspectOptions
    • EndpointResource
    • NetworkListOptions
    • NetworkCreateOptions
    • NetworkCreateRequest
    • NetworksPruneReport
  • 将 `NetworkResource` 移动到 `api/types/network`。

打包更新

27.0.0

由于在 27.0.0-rc.1 在 GitHub 上预发布期间的失误,导致创建了 v27.0.0 标签,因此没有 27.0.0 版本。不幸的是,该标签已被 Go Module Mirror 拾取,因此无法干净地更改 v27.0.0。为解决此问题,27.0.1 将成为 27.0 的第一个版本。

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.