Docker Engine 24.0 发布说明
本页介绍了 Docker Engine 24.0 的最新更改、新增功能、已知问题和修复内容。
关于以下内容的更多信息:
- 已弃用和移除的功能,请参见 已弃用的引擎功能。
- 引擎 API 的变更,请参阅 引擎 API 版本历史。
24.0.9
2024-01-31关于本次版本中所有拉取请求和变更的完整列表,请参阅相关的 GitHub 里程碑:
安全
此版本包含针对以下 CVE 的安全修复, 这些 CVE 影响 Docker Engine 及其组件。
| CVE | 组件 | 修复版本 | 严重性 |
|---|---|---|---|
| CVE-2024-21626 | runc | 1.1.12 | 高,CVSS 8.6 |
| CVE-2024-24557 | Docker 引擎 | 24.0.9 | Medium, CVSS 6.9 |
重要
请注意,此版本的 Docker Engine 不包含针对 BuildKit 中以下已知漏洞的修复程序:
为解决这些漏洞,请升级到 Docker Engine v25.0.2。
有关本次发布解决的安全问题以及 BuildKit 中未解决的漏洞的更多信息, 请参阅 博客文章。
有关每个漏洞的详细信息,请参阅相关的安全公告:
软件包更新
- 将 runc 升级到 v1.1.12。 moby/moby#47269
- 将 containerd 升级到 v1.7.13(仅静态Binaries)。 moby/moby#47280
24.0.8
2024-01-25关于本次版本中所有拉取请求和变更的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和功能增强
- 实时恢复:具有自动删除(
docker run --rm)的容器在引擎重启时不再被强制删除。 moby/moby#46857
软件包更新
- 将 Go 升级到
go1.20.13。 moby/moby#47054, docker/cli#4826, docker/docker-ce-packaging#975 - 仅升级 containerd(静态Binaries)到 v1.7.12 moby/moby#47096
- 将 runc 升级到 v1.1.11。 moby/moby#47010
24.0.7
2023-10-27关于本次版本中所有拉取请求和变更的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和功能增强
- 原子地写入 overlay2 层元数据。 moby/moby#46703
- 修复在systemd 250及更高版本上的“Rootful-in-Rootless”Docker-in-Docker问题。 moby/moby#46626
- 修复用户名包含反斜杠时返回
dockerd-rootless-setuptools.sh的问题。 moby/moby#46407 - 修复一个错误,该错误会在停止没有网络附件的容器并使用
dockerd --bridge=none时,阻止网络沙箱被完全删除。 moby/moby#46702 - 修复取消 API 请求会中断容器重启的错误。 moby/moby#46697
- 修复在提供范围大于子网的
--ip-range时容器无法启动的问题。 docker/for-mac#6870 - 修复使用 zstd 输出时的数据损坏问题。 moby/moby#46709
- 修复容器 MAC 地址应用的条件。 moby/moby#46478
- 改善统计收集器的性能。 moby/moby#46448
- 修复源策略规则顺序错误的问题。 moby/moby#46441
软件包更新
- 添加对 Fedora 39 和 Ubuntu 23.10 的支持。 docker/docker-ce-packaging#940, docker/docker-ce-packaging#955
- 修复在卸载
docker-ceRPM 软件包时docker.socket未被禁用的问题。 docker/docker-ce-packaging#852 - 将 Go 升级到
go1.20.10。 docker/docker-ce-packaging#951 - 将 containerd 升级到
v1.7.6(仅静态Binaries)。 moby/moby#46103 - 升级
containerd.io包到v1.6.24。
安全
默认情况下,拒绝容器访问
/sys/devices/virtual/powercap。此更改可防止 CVE-2020-8694、 CVE-2020-8695 和 CVE-2020-12912, 以及一种称为 PLATYPUS 攻击 的攻击。
24.0.6
2023-09-05关于本次版本中所有拉取请求和变更的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和功能增强
- containerd 存储后端:修复当容器镜像不再存在于内容存储中时
docker ps失败的问题。 moby/moby#46095 - containerd 存储后端:修复当容器镜像配置不再存在于内容存储中时,
docker ps -s -a和docker container prune失败的问题。 moby/moby#46097 - containerd 存储后端:修复当容器镜像配置不再(或从未)存在于内容存储中时
docker inspect失败的问题。 moby/moby#46244 - containerd 存储后端:通过使用引用计数的 rootfs 挂载,修复
overlayfs快照器的 diff 和 export。 moby/moby#46266 - containerd 存储后端:修复本地可用的镜像平台与期望平台不匹配时出现的误导性错误信息。 moby/moby#46300
- containerd 存储后端:修复使用经典构建器时的
FROM scratchDockerfile 指令问题。 moby/moby#46302 - containerd 存储后端:修复使用经典构建器时出现的
mismatched image rootfs and manifest layers错误。 moby/moby#46310 - 从所有注册表拉取 Docker Image Format v1 和 Docker Image manifest 版本 2,模式 1 的镜像时发出警告。 moby/moby#46290
- 修复带自定义卷选项的卷的 live-restore。 moby/moby#46366
- 修复以非root用户身份运行容器时错误地丢弃capabilities位的问题(注意:由于回归问题,此更改实际上已经存在)。 moby/moby#46221
- 修复网络隔离 iptables 规则,防止容器之间交换 IPv6 邻居请求数据包。 moby/moby#46214
- 修复在 Windows 上当前目录中存在Binaries时
dockerd.exe --register-service无法工作的问题。 moby/moby#46215 - 添加一个提示,建议使用PAT将
docker login针对Docker Hub进行操作。 docker/cli#4500 - 改善使用 CLI 的 Bash 补全功能的用户的 shell 启动时间。 docker/cli#4517
- 通过在可能的情况下跳过
GET /_ping来提高某些命令的速度。 docker/cli#4508 - 在使用PAT在Docker Hub上
docker manifest inspect镜像时修复凭据范围。 docker/cli#4512 - 修复
docker events不支持--format=json的问题。 docker/cli#4544
软件包更新
- 将 Go 升级到
go1.20.7。 moby/moby#46140, docker/cli#4476, docker/docker-ce-packaging#932 - 将 containerd 升级到
v1.7.3(仅静态Binaries)。 moby/moby#46103 - 将 Compose 升级到
v2.21.0。 docker/docker-ce-packaging#936
24.0.5
2023-07-24关于本次版本中所有拉取请求和变更的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和功能增强
- Go 客户端现在避免在 HTTP
Host:标头中使用 UNIX 套接字路径,以兼容在go1.20.6中引入的更改。 moby/moby#45962, moby/moby#45990 - containerd 存储后端:修复
Variant不被包含在docker image inspect和GET /images/{name}/json中的问题。 moby/moby#46025 - containerd 存储后端:在导出镜像时防止内容被垃圾回收。 moby/moby#46021
- containerd 存储后端:防止在
RepoDigests中出现重复的摘要条目。 moby/moby#46014 - containerd 存储后端:修复在使用标签和摘要引用的镜像时,对错误标签执行操作的问题。 moby/moby#46013
- containerd 存储后端:修复由使用遗留构建器构建容器时出现的
EXPOSE引发的 panic。 moby/moby#45921 - 修复一个回归问题,当尝试在非Swarm节点上创建
overlay网络时,会导致不直观的错误返回。 moby/moby#45974 - 从命令行解析卷规范时正确报告错误。 docker/cli#4423
- 修复在CLI配置文件中找到
auths: null时引发的panic。 docker/cli#4450
软件包更新
- 使用由 moby/moby 提供的初始化脚本
contrib/init。 docker/docker-ce-packaging#914, docker/docker-ce-packaging#926 - 从
contrib/init中移除 Upstart。 moby/moby#46044 - 将 Go 升级到
go1.20.6。 docker/cli#4428, moby/moby#45970, docker/docker-ce-packaging#921 - 将 Compose 升级到
v2.20.2。 docker/docker-ce-packaging#924 - 将 buildx 升级到
v0.11.2。 docker/docker-ce-packaging#922
24.0.4
2023-07-07关于本次版本中所有拉取请求和变更的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和功能增强
- 修复在24.0.3期间引入的回归,该回归会导致具有绑定挂载的容器在实时恢复期间发生panic。 moby/moby#45903
24.0.3
2023-07-06关于本次版本中所有拉取请求和变更的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和功能增强
- containerd 镜像存储:修复一个无法与不包含默认平台清单的多平台镜像交互的问题。 moby/moby#45849
- containerd 镜像存储:修复在容器构建中尝试缓存
FROM scratch的错误行为。 moby/moby#45822 - containerd 镜像存储:修复与无法多次挂载相同内容的快照程序一起使用时出现的
docker cp问题。 moby/moby#45780, moby/moby#45786 - containerd 镜像存储:修复构建时
type=image未被正确解包/存储的问题。 moby/moby#45692 - containerd 镜像存储:修复错误地尝试解包伪镜像(包括 attestation)在
docker load. moby/moby#45688 - containerd 镜像存储:正确设置用户代理,并在与注册表交互时包含快照器等附加信息。 moby/moby#45671, moby/moby#45684
- containerd 镜像存储:修复在快照程序之间切换后,解压已拉取内容失败的问题。 moby/moby#45678
- containerd 镜像存储:修复已被重新标记或所有标签被移除但仍被使用的镜像被清理的问题。 moby/moby#45857
- 修复 Swarm CSI 问题,其中 Topology 字段未传播到 NodeCSIInfo 中。 moby/moby#45810
- 修复由于非常大的 raft 日志导致无法添加新的 Swarm 管理器的问题。 moby/moby#45703, moby/swarmkit#3122, moby/swarmkit#3128
name_to_handle_at(2)现在在默认的 seccomp 配置文件中始终被允许。 moby/moby#45833- 修复一个阻止加密的Swarm overlay网络在默认端口(4789)之外工作的错误。 moby/moby#45637
- 修复在实时恢复期间未能恢复挂载引用计数的故障。 moby/moby#45824
- 修复在 live-restore 期间的各种与网络相关的故障。 moby/moby#45658, moby/moby#45659
- 修复在守护进程意外终止时,正在运行的容器恢复时退出状态为零(成功)的问题。 moby/moby#45801
- 修复在执行健康检查探针时可能出现的 panic 错误。 moby/moby#45798
- 修复容器执行启动中由竞态条件引起的 panic。 moby/moby#45794
- 修复因将终端附加到包含不存在命令的exec而引发的异常。 moby/moby#45643
- 通过将 IP 作为标签传递使用 BuildKit 修复
host-gateway(还需要 docker/buildx#1894)。 moby/moby#45790 - 修复一个问题,当请求被取消时,
POST /containers/{id}/stop会强制终止容器,而不是等待指定的超时时间进行“优雅”停止。 moby/moby#45774 - 修复一个从根目录(
/)访问docker cp -a会失败的问题。 moby/moby#45748 - 通过在OCI配置中更正确地设置资源约束参数,提高与非runc容器运行时的兼容性。 moby/moby#45746
- 修复在无root模式下,由于在某些配置(例如 LDAP)中重叠的子UID/子GID范围引起的问题。 moby/moby#45747, rootless-containers/rootlesskit#369
- 在填充
GET /info的调试部分时,大大减少 CPU 和内存使用。 moby/moby#45856 - 修复一个在仅客户端处于调试模式时,
docker info期间调试信息未正确打印的问题。 docker/cli#4393 - 修复通过SSH连接到主机时因连接挂起导致的问题。 docker/cli#4395
软件包更新
- 将 Go 升级到
go1.20.5。 moby/moby#45745, docker/cli#4351, docker/docker-ce-packaging#904 - 将 Compose 升级到
v2.19.1。 docker/docker-ce-packaging#916 - 将 buildx 升级到
v0.11.1。 docker/docker-ce-packaging#918
24.0.2
2023-05-26关于本次版本中所有拉取请求和变更的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和功能增强
- 修复在引用本地标记的镜像时构建期间发生的 panic。 moby/buildkit#3899, moby/moby#45582
- 修复在执行大量并发构建阶段时,构建可能因
exit code: 4294967295而失败的问题。 moby/moby#45620 - 修复 Windows 忽略
etc/hosts(%WINDIR%\System32\Drivers\etc\hosts) 的 DNS 解析,包括localhost的解析。 moby/moby#45562 - 应用一个解决containerd漏洞的变通方法,该漏洞会导致并发
docker exec命令的执行时间显著超过预期。 moby/moby#45625 - containerd 镜像存储:修复一个镜像
Created字段包含错误值的问题。 moby/moby#45623 - containerd 镜像存储:调整镜像拉取进度的输出,使其格式在启用或未启用 containerd 镜像存储时保持一致。 moby/moby#45602
- containerd 镜像存储:现在在默认镜像存储和 containerd 镜像存储之间切换需要重启守护进程。 moby/moby#45616
软件包更新
- 将 Buildx 升级到
v0.10.5。 docker/docker-ce-packaging#900
24.0.1
2023-05-19关于本次版本中所有拉取请求和变更的完整列表,请参阅相关的 GitHub 里程碑:
已移除
- 移除在24.0主要版本中删除的存储驱动程序的CLI自动补全。 docker/cli#4302
错误修复和功能增强
- 修复一个外部服务器对DNS查询的NXDOMAIN回复被转发给客户端作为SERVFAIL的问题。 moby/moby#45573
- 修复一个问题,其中
docker pull --platform会报告关于指向同一镜像的另一个标签的No such image。 moby/moby#45562 - 修复在配置重载期间会忘记不安全注册表配置的问题。 moby/moby#45571
- containerd 镜像存储:修复一个当镜像没有图层时不会在
docker images -a中列出的问题 moby/moby#45588 - API:修复一个问题,其中
GET /images/{id}/json会返回null而不是空的RepoTags和RepoDigests。 moby/moby#45564 - API:修复一个问题,其中
POST /commit不接受空的请求体。 moby/moby#45568
软件包更新
- 将 Compose 升级到
v2.18.1。 docker/docker-ce-packaging#896
24.0.0
2023-05-16关于本次版本中所有拉取请求和变更的完整列表,请参阅相关的 GitHub 里程碑:
新
- 引入对 containerd 作为内容存储的实验性支持(替换现有的存储驱动程序)。 moby/moby#43735, 其他 moby/moby 拉取请求
--hostCLI 标志现在支持在ssh://主机地址中使用路径组件,允许在远程主机上无需配置即可使用备用套接字路径。 docker/cli#4073docker infoCLI 命令现在报告一个版本和平台字段。 docker/cli#4180- 引入守护程序标志
--default-network-opt以配置新创建网络的选项。 moby/moby#43197 - 在默认的 seccomp 配置文件中,限制对
AF_VSOCK在socket(2)系列系统调用的访问。 moby/moby#44562 - 在容器上引入对设置 OCI 运行时注释的支持。 docker/cli#4156,moby/moby#45025
- 现在可以在
daemon.json中配置替代运行时,启用运行时名称的别名设置并传递选项。 moby/moby#45032 docker-initBinaries现在将在符合 FHS 的 libexec 目录中被发现,除了PATH。 moby/moby#45198- API: 在
GET /info中显示守护进程级的--no-new-privileges。 moby/moby#45320
已移除
docker info不再报告IndexServiceAddress。 docker/cli#4204- libnetwork: 移除用于过时内核版本的回退代码。 moby/moby#44684, moby/moby#44802
- libnetwork: 移除与经典 Swarm 相关的未使用代码。 moby/moby#44965
- libnetwork: 移除在加密的 Swarm overlay 网络中使用
xt_u32内核模块。 moby/moby#45281 - 移除对 BuildKit 已弃用的
buildinfo的支持,改为使用标准的 provenance 证明。 moby/moby#45097 - 移除已弃用的 AUFS 和旧版
overlay存储驱动程序。 moby/moby#45342, moby/moby#45359 - 移除已弃用的
overlay2.override_kernel_check存储驱动选项。 moby/moby#45368 - 从 AppArmor 配置文件中移除针对已废弃的
apparmor_parser版本的变通方案。 moby/moby#45500 - API:不再使用
GET /images/json表示空的 RepoTags 和 RepoDigests,而是返回空数组(API >= 1.43)。现在使用<none>:<none>/<none>@<none>表示。moby/moby#45068
已弃用
- 弃用
--oom-score-adjust守护程序选项。 moby/moby#45315 - API:弃用
VirtualSize字段在GET /images/json和GET /images/{id}/json中。 moby/moby#45346
错误修复和功能增强
docker stack命令不再验证 Compose 文件的build部分。 docker/cli#4214- 在超时后修复残留的健康检查进程。 moby/moby#43739
- 使用
overlay2存储驱动程序时,减少容器启动的开销。 moby/moby#44285 - API:在
GET /images中处理多个before=和since=过滤器。 moby/moby#44503 - 修复用户自定义网络所使用的嵌入式DNS解析器实现中的多个错误。 moby/moby#44664
- 在事件属性的映射中添加
execDuration字段。 moby/moby#45494 - 现在可以使用 Windows
internal、l2bridge和nat驱动程序创建群集级网络。 moby/swarmkit#3121, moby/moby#45291
软件包更新
- 将 Go 更新到
1.20.4。 docker/cli#4253, moby/moby#45456, docker/docker-ce-packaging#888 - 更新
containerd到v1.7.1。 moby/moby#45537 - 更新
buildkit到v0.11.6。 moby/moby#45367