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