Docker Engine 26.0 发布说明

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

有关更多信息:

26.0.2

2024-04-18

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

安全

此版本包含对CVE-2024-32473的安全修复,解决了在仅支持IPv4的接口上意外配置IPv6的问题。

Bug修复和增强

26.0.1

2024-04-11

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

Bug fixes and enhancements

  • 修复了一个回归问题,该问题导致网络接口特定的--sysctl选项阻止了容器启动。 moby/moby#47646
  • docker save输出的config OCI描述符中移除错误的platformmoby/moby#47694
  • containerd 镜像存储:由 docker save 生成的 OCI 归档文件现在将在 index.json 中有一个非空的 mediaType 字段 moby/moby#47701
  • 修复了一个回归问题,该问题阻止了内部解析器将来自IPvlan L3网络的请求转发到外部解析器。 moby/moby#47705
  • 防止在没有指定父接口的情况下创建的IPvlan和Macvlan网络中使用外部解析器。 moby/moby#47705

包装更新

26.0.0

2024-03-20

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

安全

此版本包含针对 CVE-2024-29018的安全修复,该漏洞可能导致通过权威DNS服务器从“内部”网络进行数据泄露。

  • 添加 Subpath 字段到 VolumeOptions,使得可以挂载卷的子路径。 moby/moby#45687
  • 添加volume-subpath支持到挂载标志(--mount type=volume,...,volume-subpath=)。 docker/cli#4331
  • 接受=分隔符和[ipv6]docker stack deploy的compose文件中。 docker/cli#4860
  • rootless: 通过将环境变量 DOCKERD_ROOTLESS_ROOTLESSKIT_DISABLE_HOST_LOOPBACK 设置为 false(默认为 true)来支持启用主机回环。这使得容器可以通过使用 IP 地址 10.0.2.2 连接到主机。 moby/moby#47352
  • containerd 镜像存储:docker image ls 不再为多平台镜像创建重复条目。 moby/moby#45967
  • containerd 镜像存储:发送 Prometheus 指标。 moby/moby#47555

错误修复和增强功能

  • CVE-2024-29018: 不要将请求转发到外部DNS服务器,如果容器仅连接到“内部”网络。以前,如果主机的DNS服务器运行在环回地址上,如systemd的127.0.0.53,请求会被转发。 moby/moby#47589

  • 确保在容器重新启动时不会恢复生成的MAC地址,但会保留配置的MAC地址。 moby/moby#47233

    警告

    使用Docker Engine 25.0.0创建的容器可能会有重复的MAC地址,必须重新创建。 使用版本25.0.0或25.0.1创建的用户定义MAC地址的容器,在使用25.0.2启动时将获得生成的MAC地址。它们也必须重新创建。

  • 始终尝试在容器的环回接口上启用IPv6,并且只有在成功时才在/etc/hosts中包含IPv6。 moby/moby#47062

    注意

    默认情况下,当容器未连接到支持IPv6的网络时,IPv6将在容器的环回接口上保持启用状态。 例如,仅连接到仅支持IPv4的网络的容器现在在其环回接口上具有::1地址。

    要在容器中禁用IPv6, 请在createrun命令中使用选项--sysctl net.ipv6.conf.all.disable_ipv6=1, 或在Compose文件的服务配置部分中使用等效的sysctls选项。

    如果由于容器已明确禁用IPv6,或主机的网络堆栈未启用IPv6(或任何其他原因)导致容器中不可用IPv6, 则容器的/etc/hosts文件将不包含IPv6条目。

  • 修复 ADD Dockerfile 指令在将带有 xattrs 的存档解压到不支持它们的文件系统时失败,并显示 lsetxattr : operation not supported 的问题。 moby/moby#47175

  • 修复了当与--checkpoint一起使用时,docker container start失败的问题。 moby/moby#47456

  • 恢复主机和内部桥接网络上容器之间的IP连接。 moby/moby#47356

  • 不要对现有的群集网络强制执行新的验证规则。 moby/moby#47361

  • 在Windows上恢复默认“nat”网络中容器的DNS名称。 moby/moby#47375

  • 当使用模糊参数调用 docker image ls 时打印提示。 docker/cli#4849

  • 在OpenBSD上清理@docker_cli_[UUID]文件。 docker/cli#4862

  • 添加明确的 弃用通知 消息,当使用没有TLS的远程TCP连接时。 docker/cli#4928, moby/moby#47556

  • 使用主机的resolv.conf中的IPv6域名服务器作为Docker Engine内部DNS的上游解析器,而不是在容器的resolv.conf中列出它们。 moby/moby#47512

  • containerd 镜像存储:当使用 --userns-remap 选项时,使用不同的 containerd 命名空间隔离镜像。 moby/moby#46786

  • containerd 镜像存储:修复镜像拉取时不发出 Pulling fs layer 状态的问题。 moby/moby#47432

API

  • 为了保持向后兼容性,当使用较旧的客户端(API版本 < v1.44)时,默认情况下只读挂载不是递归的。 moby/moby#47391
  • GET /images/{id}/json 如果镜像配置中缺少 Created 字段,则省略 Created 字段(之前为 0001-01-01T00:00:00Z)。 moby/moby#47451
  • 在API版本 <= 1.43 中,使用 0001-01-01T00:00:00Z 填充 GET /images/{id}/json 中缺失的 Created 字段。 moby/moby#47387
  • POST /images/search 端点结果中的 is_automated 字段现在始终为 false。因此,搜索 is-automated=true 将不会返回任何结果,而 is-automated=false 将不会有任何效果。 moby/moby#47465
  • GET /images/{name}/json响应中移除ContainerContainerConfig字段。 moby/moby#47430

包装更新

已移除

  • GET /images/{name}/json响应中移除ContainerContainerConfig字段。 moby/moby#47430

  • 弃用接受未使用TLS的远程TCP连接的能力。 弃用通知 docker/cli#4928 moby/moby#47556.

  • 移除已弃用的API版本(API < v1.24) moby/moby#47155

  • 默认情况下禁用拉取已弃用的图像格式。这些图像格式已被弃用,未来版本中将移除支持。 moby/moby#47459

  • image: 移除已弃用的IDFromDigest moby/moby#47198

  • 移除已弃用的 github.com/docker/docker/pkg/loopback 包。 moby/moby#47128

  • pkg/system: 移除已弃用的 ErrNotSupportedOperatingSystem, IsOSSupported moby/moby#47129

  • pkg/homedir: 移除已弃用的 Key() 和 GetShortcutString() moby/moby#47130

  • pkg/containerfs: 移除已弃用的 ResolveScopedPath moby/moby#47131

  • 守护进程标志 --oom-score-adjust 在 v24.0 中已被弃用,现已被移除。 moby/moby#46113

  • 从api/types包中移除已弃用的别名。这些类型在v25.0.0中已被弃用,当时提供了临时的别名。 moby/moby#47148 这些别名现已被移除:types.Info, types.Commit, types.PluginsInfo, types.NetworkAddressPool, types.Runtime, types.SecurityOpt, types.KeyValue, types.DecodeSecurityOptions, types.CheckpointCreateOptions, types.CheckpointListOptions, types.CheckpointDeleteOptions, types.Checkpoint, types.ImageDeleteResponseItem, types.ImageSummary, types.ImageMetadata, types.ServiceUpdateResponse, types.ServiceCreateResponse, types.ResizeOptions, types.ContainerAttachOptions, types.ContainerCommitOptions, types.ContainerRemoveOptions, types.ContainerStartOptions, types.ContainerListOptions, types.ContainerLogsOptions

  • cli/command/container: 移除已弃用的 NewStartOptions() docker/cli#4811

  • cli/command: 移除已弃用的 DockerCliOption, InitializeOpt docker/cli#4810