Docker 引擎 25.0 发行说明
本页面介绍 Docker Engine 版本 25.0 的最新更改、添加内容、已知问题和修复。
欲了解更多信息:
- 已弃用和删除的功能,请参阅 已弃用的引擎功能。
- 引擎 API 的更改,请参阅 引擎 API 版本历史记录。
25.0.5
2024-03-19有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
安全
此版本包含CVE-2024-29018的安全修复程序 ,该修复程序可能会通过权威 DNS 服务器从“内部”网络泄露数据。
错误修复和增强功能
CVE-2024-29018:不要将仅连接到“内部”网络的容器的请求转发到外部 DNS 服务器。以前,如果主机的 DNS 服务器在环回地址上运行,例如 systemd 的 127.0.0.53,则请求会被转发。 莫比/莫比#47589
插件:修复在 UserNS 中运行时挂载 /etc/hosts 的问题。 莫比/莫比#47588
无根:修复
open /etc/docker/plugins: permission denied
。 莫比/莫比#47587修复多个并行
docker build
运行泄漏磁盘空间的问题。 莫比/莫比#47527
25.0.4
2024-03-07有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强功能
- 恢复 Windows 上默认“nat”网络中容器的 DNS 名称。 莫比/莫比#47490
- 修复与moby/moby
docker start
一起使用时失败的问题#47466--checkpoint
- 不要对现有群体网络强制执行新的验证规则 moby/moby#47482
- 恢复内部桥接网络上主机和容器之间的 IP 连接。 莫比/莫比#47481
- 修复 v25.0 中引入的回归,该回归阻止经典构建器添加
xattrs
在非 Linux 操作系统 moby/moby 上创建的 tar 存档#47483 - containerd 镜像存储:修复镜像拉取不发出
Pulling fs layer status
moby/moby#47484 - API:为了保持向后兼容性,在使用较旧的客户端(API 版本 < v1.44)时,默认情况下将只读挂载设置为非递归。 莫比/莫比#47393
- API:如果图像配置中缺少该字段,
则
GET /images/{id}/json
省略该Created
字段(以前是0001-01-01T00:00:00Z
) 。莫比/莫比#47451Created
- API:对于 API 版本 <= 1.43,
使用填充缺失
Created
字段。莫比/莫比#47387GET /images/{id}/json
0001-01-01T00:00:00Z
- API:修复了导致 API 套接字连接失败的回归,改为报告 API 版本协商失败。 莫比/莫比#47470
- API:当指定了容器范围的 MAC 地址,但
NetworkMode
名称或 id 与NetworkSettings.Networks
. 莫比/莫比#47510
包装更新
- 将 Go 运行时升级到 1.21.8。 莫比/莫比#47503
- 将 RootlessKit 升级到 v2.0.2。 莫比/莫比#47508
- 将 Compose 升级到 v2.24.7。 docker/docker-ce-packaging#998
- 将 Buildx 升级到 v0.13.0。 docker/docker-ce-packaging#997
25.0.3
2024-02-06有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强功能
docker image history
containerd 映像存储:修复了在内容存储中找不到清单时会失败的 错误。莫比/莫比#47348确保容器重启时不会恢复生成的 MAC 地址,但会保留配置的 MAC 地址。 莫比/莫比#47304
笔记
- 使用 Docker Engine 版本 25.0.0 创建的容器可能具有重复的 MAC 地址。它们必须被重新创建。
- 使用 Docker 引擎版本 25.0.0 或 25.0.1 创建的具有用户定义 MAC 地址的容器在使用 Docker 引擎版本 25.0.2 启动时会收到新的 MAC 地址。它们也必须被重新创建。
修复了
docker save <image>@<digest>
生成带有索引但没有清单的 OCI 存档的问题。 莫比/莫比#47294修复了在 RHEL 和 CentOS 7 上无法使用高于 1500 的 MTU 创建桥接网络的错误。 moby/moby#47308、 moby/moby#47311
修复容器无法通过
internal
网络通信的错误。 莫比/莫比#47303修复了守护进程选项的值被忽略的错误
ipv6
。 莫比/莫比#47310修复了尝试使用摘要修订版安装拉动会导致恐慌的错误。 莫比/莫比#47323
修复托管 Containerd Supervisor 中潜在的竞争状况。 莫比/莫比#47313
journald
修复了日志驱动程序导致 systemd 版本 255 无法正确跟踪容器日志的 问题。moby /moby47243seccomp:更新内置 seccomp 配置文件以包含内核 v5.17 - v6.7 中添加的系统调用,以使配置文件与 containerd 使用的配置文件保持一致。 莫比/莫比#47341
Windows:修复基于早于主机版本的 Windows 版本构建映像时不使用缓存的问题。 莫比/莫比#47307 , 莫比/莫比#47337
包装更新
- 删除了对 Ubuntu Lunar (23.04) 的支持。 docker/ce-packaging#986
25.0.2
2024-01-31有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
安全
此版本包含以下影响 Docker 引擎及其组件的 CVE 的安全修复程序。
CVE | 成分 | 修复版本 | 严重性 |
---|---|---|---|
CVE-2024-21626 | 朗克 | 1.1.12 | 高,CVSS 8.6 |
CVE-2024-23651 | 构建套件 | 1.12.5 | 高,CVSS 8.7 |
CVE-2024-23652 | 构建套件 | 1.12.5 | 高,CVSS 8.7 |
CVE-2024-23653 | 构建套件 | 1.12.5 | 高,CVSS 7.7 |
CVE-2024-23650 | 构建套件 | 1.12.5 | 中,CVSS 5.5 |
CVE-2024-24557 | Docker引擎 | 25.0.2 | 中,CVSS 6.9 |
上述漏洞的潜在影响包括:
- 未经授权访问主机文件系统
- 损害构建缓存的完整性
- 就 CVE-2024-21626 而言,这种情况可能会导致整个容器逃逸
有关此版本中解决的安全问题的更多信息,请参阅 博客文章。有关每个漏洞的详细信息,请参阅相关的安全公告:
包装更新
- 将 Containerd 升级到 v1.6.28。
- 将containerd升级到v1.7.13(仅限静态二进制文件)。 莫比/莫比#47280
- 将 runc 升级到 v1.1.12。 莫比/莫比#47269
- 将 Compose 升级到 v2.24.5。 docker/docker-ce-packaging#985
- 将 BuildKit 升级到 v0.12.5。 莫比/莫比#47273
25.0.1
2024-01-23有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强功能
- API:修复升级到 Docker Engine v25.0 之前创建的具有无效网络配置的容器的错误 HTTP 状态代码。 莫比/莫比#47159
- 确保在容器停止并重新启动时重新生成基于容器 IP 地址的 MAC 地址,以防生成的 IP/MAC 地址已被重复使用。 莫比/莫比#47171
- 修复了
host-gateway-ip
未通过配置设置时在构建期间无法工作的问题。 莫比/莫比#47192 - 修复了导致容器无法重命名两次的错误。 莫比/莫比#47196
- 修复了导致容器在检查时将其短 ID 添加到其网络别名的问题。 莫比/莫比#47182
- 修复了检测远程构建上下文是否为 Git 存储库时的问题。 莫比/莫比#47136
- 修复 OCI 清单中的层顺序问题。 莫比/莫比#47150
addr
修复传递或安装选项时出现的卷安装错误ip
。 莫比/莫比#47185- 改进了与由于命名空间属性名称不正确而无法设置的扩展属性相关的错误消息。 莫比/莫比#47178
- Swarm:修复了
start_interval
未传递到容器配置的问题。 莫比/莫比#47163
包装更新
- 将 Compose 升级到
2.24.2
. docker/docker-ce-packaging#981
25.0.0
2024-01-19有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
笔记
在 Docker Engine 的早期版本中,递归挂载(子挂载)始终会挂载为可写,即使指定只读挂载也是如此。对于在内核版本 5.12 或更高版本上运行的主机,此行为在 v25.0.0 中已更改。现在,只读绑定挂载默认情况下是递归只读的。
要获得与早期版本相同的行为,您可以指定
bind-recursive
该--mount
标志的选项。$ docker run --mount type=bind,src=SRC,dst=DST,readonly,bind-recursive=writable IMAGE
-v
或标志不支持此选项--volume
。有关更多信息,请参阅 递归安装。
新的
该守护进程现在使用 systemd 的默认
LimitNOFILE
.在 Docker Engine 的早期版本中,此限制设置为infinity
.这会导致最新版本的 systemd 出现问题,其中硬限制增加,导致基于 ulimit 调整其行为的程序消耗大量内存。 莫比/莫比#45534新设置使容器的行为方式与主机上运行的程序相同,但可能会导致基于软限制做出错误假设的程序出现异常行为。要获得以前的行为,您可以设置
LimitNOFILE=1048576
.docker build
此更改当前仅影响将BuildKit 与驱动程序一起使用时创建的构建容器docker
。未来版本的containerd也将使用这个限制,这将导致这种行为影响所有容器,而不仅仅是构建容器。如果您在 systemd v240 或更高版本中遇到更高 ulimit 的问题,请考虑添加系统
drop-in
或override
文件来配置您的设置的 ulimit 设置。Flatcar Container Linux 文档中有 一篇很棒的文章详细介绍了这个主题。添加 OpenTelemetry 跟踪。 莫比/莫比#45652 , 莫比/莫比#45579
添加对 Linux 下 CDI 设备的支持。 莫比/莫比#45134 , 泊坞窗/cli#4510 , 莫比/莫比#46004
添加一个额外的时间间隔,供容器启动期间运行状况检查使用。 莫比/莫比#40894 , 泊坞窗/cli#4405 , 莫比/莫比#45965
添加一个
--log-format
标志来dockerd
控制日志记录格式:文本(默认)或 JSON。 莫比/莫比#45737添加对递归只读挂载的支持。 莫比/莫比#45278 , 莫比/莫比#46037
添加对基于时间戳过滤图像的支持
docker image ls --filter=until=<timestamp>
。 莫比/莫比#46577
错误修复和增强功能
- API:修复无效策略的错误消息
ValidateRestartPolicy
。 莫比/莫比#46352 - API:更新
/info
端点以使用 singleflight。 莫比/莫比#45847 -f
添加使用 和指定 Dockerfile 文件名时的错误消息stdin
。 泊坞窗/cli#4346- 添加对
mac-address
和长格式link-local-ip
字段的支持--network
。 泊坞窗/cli#4419 - 添加对使用和指定多个
--network
标志的支持。 莫比/莫比#45906docker container create
docker run
- 指定 IPv6 子网时自动在网络上启用 IPv6。 莫比/莫比#46455
- 添加对基于 IPv6 传输的覆盖网络的支持。 莫比/莫比#46790
- 配置重新加载现在更加稳健:如果在配置重新加载过程中出现错误,则不会应用任何配置更改。 莫比/莫比#43980
- 实时恢复:具有自动删除(
docker run --rm
)功能的容器在引擎重新启动时不再被强制删除。 莫比/莫比#46857 - 实时恢复:当守护进程重新启动时,实时恢复的容器现在将获得另一个运行状况检查启动周期。 莫比/莫比#47051
- 容器健康状态刷新到磁盘的频率较低,从而减少了闪存存储的磨损。 莫比/莫比#47044
- 确保网络名称是唯一的。 莫比/莫比#46251
- 确保overlay2层元数据正确。 莫比/莫比#46471
- 修复
Downloading
图像拉取时的进度消息。 莫比/莫比#46515 - 修复
NetworkConnect
并ContainerCreate
改进数据验证,并立即返回所有验证错误。 莫比/莫比#46183 - 修复
com.docker.network.host_ipv4
启用 IPv6 和 ip6tables 时的选项。 莫比/莫比#46446 cleanupContainer
如果 Containerd 停止, 请修复守护进程。莫比/莫比#46213- 修复了为 libnetwork 错误返回不正确的 HTTP 状态代码的问题。 莫比/莫比#46146
- 修复 images/json API 过滤器和图像列表的各种问题。 莫比/莫比#46034
- CIFS 卷现在可以正确解析 FQDN。 莫比/莫比#46863
- 改进守护程序配置选项的验证
userland-proxy-path
。现在,验证在守护程序启动期间进行,而不是在使用端口映射启动容器时产生错误。 莫比/莫比#47000 - 当网络模式为短网络ID时,设置容器接口的MAC地址。 莫比/莫比#46406
- 在构建输出中显示之前对未使用的构建参数进行排序。 莫比/莫比#45917
- tarball
docker image save
输出现在符合 OCI 标准。 莫比/莫比#44598 - 该守护进程不再将规则附加到加密覆盖网络的 iptables 链
ACCEPT
的末尾。INPUT
根据防火墙配置,可能需要规则来允许传入的加密覆盖网络流量。 莫比/莫比#45280 - 现在,将具有扩展属性的层解压到不兼容的文件系统上将会失败,而不是默默地丢弃扩展属性。 莫比/莫比#45464
- 将守护程序 MTU 选项更新为 BridgeConfig 并在 Windows 上显示警告。 莫比/莫比#45887
- 创建网络时验证 IPAM 配置。自动修复在此版本之前创建的
--ip-range
大于 的网络--subnet
。 莫比/莫比#45759 - 仅连接到内部网络的容器现在不会设置默认路由,从而使
connect
系统调用快速失败。 莫比/莫比#46603 - containerd 图像存储:添加
push
、pull
和 的图像事件save
。 莫比/莫比#46405 - containerd 映像存储:添加对拉取旧 schema1 映像的支持。 莫比/莫比#46513
- containerd 镜像存储:添加对推送所有标签的支持。 莫比/莫比#46485
- containerd 映像存储:添加对注册表令牌的支持。 莫比/莫比#46475
- containerd 镜像存储:添加对显示使用镜像的容器数量的支持。 莫比/莫比#46511
ONBUILD
containerd 镜像存储:修复与、MAINTAINER
和Dockerfile 指令相关的错误HEALTHCHECK
。 莫比/莫比#46313- containerd 镜像存储:修复
Pulling from
进度消息。 莫比/莫比#46494 - containerd 图像存储:添加对通过带前缀的截断 ID 引用图像的支持
sha256:
。 莫比/莫比#46435 - containerd 图像存储:修复
docker images
默认显示中间层的问题。 莫比/莫比#46423 - containerd 镜像存储:修复获取镜像时检查指定平台是否存在的问题。 莫比/莫比#46495
- containerd 镜像存储:修复经典构建器使用
多个
ADD
或指令时出现的错误。莫比/莫比#46383COPY
- containerd 镜像存储:修复导入镜像时的堆栈溢出错误。 莫比/莫比#46418
- containerd 镜像存储:改进
docker pull
进度输出。 莫比/莫比#46412 - containerd 镜像存储:推送镜像后打印标签、摘要和大小。 莫比/莫比#46384
- containerd 镜像存储:消除
UpdateConfig
. 莫比/莫比#46433 - containerd 镜像存储:当镜像标签类似于摘要时返回错误。 莫比/莫比#46492
- containerd 映像存储:
docker image ls
现在显示正确的映像创建时间和日期。 莫比/莫比#46719 - containerd 映像存储:修复处理用户命名空间设置的问题。 莫比/莫比#46375
- containerd 镜像存储:添加对拉取所有标签的支持 (
docker pull -a
)。 莫比/莫比#46618 - containerd镜像存储:使用镜像引用中的域名作为默认的registry认证域。 莫比/莫比#46779
包装更新
- 将API升级到v1.44。 莫比/莫比#45468
- 将 Compose 升级到
2.24.1
. docker/docker-ce-packaging#980 - 将containerd升级到v1.7.12(仅限静态二进制文件)。 莫比/莫比#47070
- 将 Go 运行时升级到 1.21.6。 莫比/莫比#47053
- 将 runc 升级到 v1.1.11。 莫比/莫比#47007
- 将 BuildKit 升级到 v0.12.4。 莫比/莫比#46882
- 将 Buildx 升级到 v0.12.1。 docker/docker-ce-packaging#979
已删除
GET /images/json
API:删除和端点的 VirtualSize 字段GET /images/{id}/json
。 莫比/莫比#45469- 删除已弃用的
devicemapper
存储驱动程序。 莫比/莫比#43637 - 删除已弃用的协调器选项。 泊坞窗/cli#4366
- 删除对 Debian Upstart init 系统的支持。 莫比/莫比#45548 , 莫比/莫比#45551
- 删除
--oom-score-adjust
守护进程选项。 莫比/莫比#45484 - 删除已弃用文件的警告
~/.dockercfg
。 泊坞窗/cli#4281 - 删除
logentries
日志记录驱动程序。 莫比/莫比#46925
已弃用
- 弃用 1.24 之前的 API 版本。 弃用通知
- 弃用
IsAutomated
字段并is-automated
过滤docker search
. 弃用通知 - API:弃用( )
Container
及其ContainerConfig
属性。 莫比/莫比#46939/images/{id}/json
docker image inspect
已知的限制
tar 文件的扩展属性
在此版本中,处理档案的代码tar
变得更加严格,并且在无法写入扩展属性 ( xattr
) 时会产生错误。 macOS 的实现tar
在创建 tar 文件时默认生成附加扩展属性。这些属性前缀不是有效的 Linuxxattr
命名空间前缀,这会在 Docker 尝试处理这些文件时导致错误。例如,如果您尝试将 tar 文件与ADD
Dockerfile 指令一起使用,您可能会看到类似于以下内容的错误消息:
failed to solve: lsetxattr /sftp_key.ppk: operation not supported
v25.0.1中与扩展属性验证相关的错误消息已得到改进,以包含更多上下文
,但 Docker 无法处理文件的限制仍然存在。当 tar 文件与 Docker 一起使用时,使用默认参数使用 macOS 创建的 Tar 文件tar
将产生错误。
作为解决方法,如果您需要使用在 macOS 上生成的 Docker 的 tar 文件,您可以:
使用
--no-xattr
macOStar
命令的标志来go除所有扩展属性。如果您想保留扩展属性,则不建议选择此选项。安装并用于
gnu-tar
在 macOS 上创建 tarball,而不是默认tar
实现。使用 Homebrew安装gnu-tar
:$ brew install gnu-tar
安装后,将
gnu-tar
二进制文件添加到您的PATH
,例如通过更新您的.zshrc
文件:$ echo 'PATH="/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.zshrc $ source ~/.zshrc