Docker Engine 26.0 发布说明
本页面描述了 Docker Engine 26.0 版本的最新更改、新增功能、已知问题和修复。
有关更多信息,请参阅:
- 已弃用和已移除的功能,请参阅已弃用的引擎功能。
- 对引擎 API 的更改,请参阅引擎 API 版本历史。
26.0.2
2024-04-18有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
- docker/cli,26.0.2 里程碑
- moby/moby,26.0.2 里程碑
- 已弃用和删除的功能,请参阅已弃用功能。
- Engine API 的更改,请参阅API 版本历史。
安全性
此版本包含针对 CVE-2024-32473 的安全修复,即 IPv4-only 接口上 IPv6 的意外配置。
错误修复和增强
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 版本历史。
错误修复和增强
- 修复了导致网络接口特定的
--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 里程碑
- 已弃用和删除的功能,请参阅已弃用功能。
- Engine API 的更改,请参阅API 版本历史。
安全性
此版本包含针对 CVE-2024-29018 的安全修复,即通过权威 DNS 服务器从“内部”网络潜在的数据泄露。
新增
- 为
VolumeOptions添加Subpath字段,使得可以挂载卷的子路径。moby/moby#45687 - 为挂载标志添加
volume-subpath支持(--mount type=volume,...,volume-subpath=<subpath>)。docker/cli#4331 - 在
docker stack deploy的 compose 文件中接受=分隔符和[ipv6]。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,或出于任何其他原因),则容器的
/etc/hosts文件将不包含 IPv6 条目。修复了当使用 xattrs 解压归档文件到不支持 xattrs 的文件系统时,
ADDDockerfile 指令失败并显示lsetxattr <file>: operation not supported的问题。moby/moby#47175修复了在与
--checkpoint一起使用时,docker container start失败的问题。moby/moby#47456恢复主机和内部桥接网络上容器之间的 IP 连接。moby/moby#47356
不对现有 swarm 网络强制执行新的验证规则。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
- 如果镜像配置中缺少
Created字段,GET /images/{id}/json会省略Created字段(此前为0001-01-01T00:00:00Z)。moby/moby#47451 - 对于 API 版本 <= 1.43,将
GET /images/{id}/json中缺失的Created字段填充为0001-01-01T00:00:00Z。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