Docker Engine 24.0 发布说明
目录
本页面介绍 Docker Engine 24.0 版的最新更改、新增功能、已知问题和修复。
有关更多信息,请参阅:
- 已弃用和已移除的功能,请参阅已弃用的引擎功能。
- 对引擎 API 的更改,请参阅引擎 API 版本历史。
24.0.9
2024-01-31有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
安全性
此版本包含针对影响 Docker Engine 及其组件的以下 CVE 的安全修复。
| CVE | 组件 | 修复版本 | 严重性 |
|---|---|---|---|
| CVE-2024-21626 | runc | 1.1.12 | 高危,CVSS 8.6 |
| CVE-2024-24557 | Docker Engine | 24.0.9 | 中危,CVSS 6.9 |
重要请注意,此版本的 Docker Engine 不包含 BuildKit 中以下已知漏洞的修复。
要解决这些漏洞,请升级到 Docker Engine v25.0.2。
有关此版本中解决的安全问题以及 BuildKit 中未解决的漏洞的更多信息,请参阅博客文章。
有关每个漏洞的详细信息,请参阅相关的安全公告。
打包更新
- 将 runc 升级到 v1.1.12。moby/moby#47269
- 将 containerd 升级到 v1.7.13(仅限静态二进制文件)。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(仅限静态二进制文件)升级到 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(仅限静态二进制文件)。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 和导出问题。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 version 2, schema 1 镜像时发出警告。moby/moby#46290
- 修复具有自定义卷选项的卷的实时恢复问题。moby/moby#46366
- 修复以非 root 用户运行容器时错误地删除能力位的问题(注意:此更改由于回归已实际存在)。moby/moby#46221
- 修复网络隔离 iptables 规则阻止 IPv6 邻居请求数据包在容器之间交换的问题。moby/moby#46214
- 修复 Windows 上当二进制文件位于当前目录时
dockerd.exe --register-service不工作的问题。moby/moby#46215 - 在对 Docker Hub 执行
docker login时添加使用 PAT 的提示。docker/cli#4500 - 改进 Bash CLI 自动补全用户的 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(仅限静态二进制文件)。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 镜像存储:修复
docker load中错误地尝试解包伪镜像(包括 attestations)的问题。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
- 修复实时恢复期间各种网络相关故障。moby/moby#45658、moby/moby#45659
- 修复当守护程序意外终止时,正在运行的容器以零(成功)退出状态恢复的问题。moby/moby#45801
- 修复执行健康检查探测时可能发生的 panic。moby/moby#45798
- 修复容器 exec 启动中竞争条件导致的 panic。moby/moby#45794
- 修复将终端附加到不存在命令的 exec 时导致的异常。moby/moby#45643
- 通过将 IP 作为标签传递(还需要 docker/buildx#1894)修复 BuildKit 中的
host-gateway。moby/moby#45790 - 修复
POST /containers/{id}/stop在请求被取消时会强制终止容器的问题,而不是等待指定的超时时间进行“优雅”停止。moby/moby#45774 - 修复
docker cp -a从根目录 (/) 失败的问题。moby/moby#45748 - 通过更正确地设置 OCI 配置中的资源约束参数,提高与非 runc 容器运行时的兼容性。moby/moby#45746
- 修复在某些配置(例如 LDAP)中 rootless 模式下重叠的 subuid/subgid 范围导致的问题。moby/moby#45747、rootless-containers/rootlesskit#369
- 大大降低在填充
GET /info的 Debug 部分时的 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 上的 DNS 解析忽略
etc/hosts(%WINDIR%\System32\Drivers\etc\hosts) 的问题,包括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 pull requests
- CLI 标志
--host现在支持ssh://主机地址中的路径组件,允许在远程主机上无需配置即可使用备用套接字路径。docker/cli#4073 docker infoCLI 命令现在报告版本和平台字段。docker/cli#4180- 引入守护程序标志
--default-network-opt来配置新创建网络的选项。moby/moby#43197 - 在默认 seccomp 配置文件中限制对
socket(2)系统调用族的AF_VSOCK的访问。moby/moby#44562 - 引入对在容器上设置 OCI 运行时注释的支持。docker/cli#4156、moby/moby#45025
- 现在可以在
daemon.json中配置替代运行时,从而实现运行时名称别名和选项传递。moby/moby#45032 docker-init二进制文件现在除了PATH之外,还将在符合 FHS 标准的 libexec 目录中被发现。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的支持,转而使用标准出处证明。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 表示为<none>:<none>/<none>@<none>。在 API >= 1.43 上将返回空数组。moby/moby#45068
已弃用
- 弃用
--oom-score-adjust守护程序选项。moby/moby#45315 - API:弃用
GET /images/json和GET /images/{id}/json中的VirtualSize字段。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驱动程序创建 Swarm 级别网络。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