Docker Engine 26.0 发布说明
本页面描述了Docker Engine 26.0版本的最新变更、新增功能、已知问题和修复内容。
有关更多信息:
26.0.2
2024-04-18有关此版本中所有拉取请求和更改的完整列表,请参阅相关的GitHub里程碑:
- docker/cli, 26.0.2 里程碑
- moby/moby, 26.0.2 里程碑
- 已弃用和移除的功能,请参阅 已弃用功能。
- 对引擎API的更改,请参阅 API版本历史。
安全
此版本包含对CVE-2024-32473的安全修复,解决了在仅支持IPv4的接口上意外配置IPv6的问题。
Bug修复和增强
CVE-2024-32473: 确保在仅分配了IPv4地址的接口上禁用IPv6。 moby#GHSA-x84c-p2g9-rqv9
26.0.1
2024-04-11有关此版本中所有拉取请求和更改的完整列表,请参阅相关的GitHub里程碑:
- docker/cli, 26.0.1 里程碑
- moby/moby, 26.0.1 里程碑
- 已弃用和移除的功能,请参阅 已弃用功能。
- 对Engine API的更改,请参见 API版本历史。
Bug fixes and enhancements
- 修复了一个回归问题,该问题导致网络接口特定的
--sysctl选项阻止了容器启动。 moby/moby#47646 - 从
docker save输出的configOCI描述符中移除错误的platform。 moby/moby#47694 - containerd 镜像存储:由
docker save生成的 OCI 归档文件现在将在index.json中有一个非空的mediaType字段 moby/moby#47701 - 修复了一个回归问题,该问题阻止了内部解析器将来自IPvlan L3网络的请求转发到外部解析器。 moby/moby#47705
- 防止在没有指定父接口的情况下创建的IPvlan和Macvlan网络中使用外部解析器。 moby/moby#47705
包装更新
- 更新 Go 运行时到 1.21.9 moby/moby#47671, docker/cli#4987
- 更新 Compose 到 v1.26.1 , docker/docker-ce-packaging#1009
- 更新 containerd 至 v1.7.15 (仅静态二进制文件) moby/moby#47692
26.0.0
2024-03-20有关此版本中所有拉取请求和更改的完整列表,请参阅相关的GitHub里程碑:
- docker/cli, 26.0.0 里程碑
- moby/moby, 26.0.0 里程碑
- 已弃用和移除的功能,请参阅 已弃用功能。
- 对引擎API的更改,请参阅 API版本历史。
安全
此版本包含针对 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, 请在
create或run命令中使用选项--sysctl net.ipv6.conf.all.disable_ipv6=1, 或在Compose文件的服务配置部分中使用等效的sysctls选项。如果由于容器已明确禁用IPv6,或主机的网络堆栈未启用IPv6(或任何其他原因)导致容器中不可用IPv6, 则容器的
/etc/hosts文件将不包含IPv6条目。修复
ADDDockerfile 指令在将带有 xattrs 的存档解压到不支持它们的文件系统时失败,并显示lsetxattr的问题。 moby/moby#47175: operation not supported 修复了当与
--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#47512containerd 镜像存储:当使用
--userns-remap选项时,使用不同的 containerd 命名空间隔离镜像。 moby/moby#46786containerd 镜像存储:修复镜像拉取时不发出
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响应中移除Container和ContainerConfig字段。 moby/moby#47430
包装更新
- 更新 BuildKit 至 v0.13.1. moby/moby#47582
- 将Buildx更新至 v0.13.1. docker/docker-ce-packaging#1000
- 更新 Compose 至 v2.25.0. docker/docker-ce-packaging#1002
- 更新 Go 运行时到 1.21.8. moby/moby#47502
- 更新 RootlessKit 至 v2.0.2. moby/moby#47508
- 更新 containerd 到 v1.7.13(仅静态二进制文件) moby/moby#47278
- 更新 runc 二进制文件到 v1.1.12 moby/moby#47268
- 更新 OTel 到 v0.46.1 / v1.21.0 moby/moby#47245
已移除
从
GET /images/{name}/json响应中移除Container和ContainerConfig字段。 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#47128pkg/system: 移除已弃用的
ErrNotSupportedOperatingSystem,IsOSSupportedmoby/moby#47129pkg/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.ContainerLogsOptionscli/command/container: 移除已弃用的
NewStartOptions()docker/cli#4811cli/command: 移除已弃用的
DockerCliOption,InitializeOptdocker/cli#4810