Docker Engine 24.0 发行说明
本页介绍了 Docker Engine 版本 24.0 的最新更改、新增功能、已知问题和修复。
有关以下内容的更多信息:
- 已弃用和已删除的功能,请参阅已弃用的引擎功能。
- 对 Engine API 的更改,请参阅 Engine API 版本历史记录。
24.0.9
2024-01-31有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
安全
此版本包含针对以下 CVE 的安全修复程序 影响 Docker Engine 及其组件。
CVE 漏洞 | 元件 | 修复版本 | 严厉 |
---|---|---|---|
CVE-2024-21626漏洞 | 朗克 | 1.1.12 | 高,CVSS 8.6 |
CVE-2024-24557漏洞 | Docker 引擎 | 24.0.9 | 中等,CVSS 6.9 |
重要
请注意,此版本的 Docker Engine 不包括以下修复程序 BuildKit 中的已知漏洞如下:
为了解决这些漏洞, 升级到 Docker Engine v25.0.2。
有关此版本中解决的安全问题的更多信息, 以及 BuildKit 中未解决的漏洞, 请参阅博客文章。
有关每个漏洞的详细信息,请参阅相关的安全公告:
打包更新
- 升级 runc 至 v1.1.12。白鲸/白鲸 #47269
- 将 containerd 升级到 v1.7.13(仅限静态Binaries)。白鲸/白鲸 #47280
24.0.8
2024-01-25有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强功能
- 实时还原:具有自动删除功能 (
docker run --rm
) 不再在引擎重新启动时被强制删除。白鲸/白鲸#46857
打包更新
- 升级 转到
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。白鲸/白鲸#47010
24.0.7
2023-10-27有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强功能
- 以原子方式写入 overlay2 层元数据。白鲸/白鲸#46703
- 修复 systemd 版本 250 及更高版本上的 “Rootful-in-Rootless” Docker-in-Docker。白鲸/白鲸#46626
- 修复
dockerd-rootless-setuptools.sh
当 username 包含反斜杠时。白鲸/白鲸#46407 - 修复了一个错误,该错误会在停止没有网络连接的容器时以及
dockerd --bridge=none
被使用。白鲸/白鲸#46702 - 修复了取消 API 请求可能会中断容器重启的 bug。白鲸/白鲸#46697
- 修复了在提供
--ip-range
范围大于子网。docker/for mac 的 #6870 - 使用 zstd 输出修复数据损坏。白鲸/白鲸#46709
- 修复容器的 MAC 地址的应用条件。白鲸/白鲸#46478
- 提高统计信息收集器的性能。白鲸/白鲸#46448
- 修复了源策略规则以错误顺序结束的问题。白鲸/白鲸#46441
打包更新
- 添加对 Fedora 39 和 Ubuntu 23.10 的支持。docker/docker-ce-packaging#940、docker/docker-ce-packaging#955
- 修复
docker.socket
卸载 时未被禁用docker-ce
RPM 软件包。docker/docker-ce-packaging的 #852 - 升级 转到
go1.20.10
.docker/docker-ce-packaging的 #951 - 将 containerd 升级到
v1.7.6
(仅限静态Binaries)。白鲸/白鲸#46103 - 升级
containerd.io
package 设置为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
当 Content Store 中不再存在容器镜像时失败。白鲸/白鲸#46095 - containerd 存储后端:修复
docker ps -s -a
和docker container prune
当 Content Store 中不再存在容器镜像配置时失败。白鲸/白鲸#46097 - containerd 存储后端:修复
docker inspect
当容器镜像配置不再(或从未)存在于 Content Store 中时失败。白鲸/白鲸 #46244 - containerd 存储后端:修复 diff 并使用
overlayfs
snapshotter 使用引用计数的 rootfs 挂载。白鲸/白鲸#46266 - containerd storage backend:修复了本地可用的镜像平台与所需平台不匹配时的误导性错误消息。白鲸/白鲸#46300
- containerd 存储后端:修复
FROM scratch
Dockerfile 指令。白鲸/白鲸#46302 - containerd 存储后端:修复
mismatched image rootfs and manifest layers
Classic Builder 的错误。白鲸/白鲸 #46310 - 从所有注册表中提取 Docker 镜像格式 v1 和 Docker 镜像清单版本 2、架构 1 镜像时发出警告。白鲸/白鲸#46290
- 使用自定义卷选项修复卷的实时还原。白鲸/白鲸#46366
- 修复了以非 root 用户身份运行容器时错误地删除功能位的问题(注意:由于回归,此更改实际上已经存在)。白鲸/白鲸#46221
- 修复网络隔离 iptables 规则,阻止容器之间交换 IPv6 Neighbor Solicitation 数据包。白鲸/白鲸#46214
- 修复
dockerd.exe --register-service
当Binaries位于 Windows 上的当前目录中时不起作用。白鲸/白鲸#46215 - 添加一个提示,建议使用 PAT 来
docker login
针对 Docker Hub 的 Docker Hub 进行攻击。docker/cli #4500 命令 - 缩短了 CLI 的 Bash 完成的 shell 启动时间。docker/cli #4517
- 通过跳过提高某些命令的速度
GET /_ping
如果可能的话。docker/cli #4508 - 使用 PAT 修复凭证范围
docker manifest inspect
Docker Hub 上的镜像。docker/cli #4512 命令 - 修复
docker events
不支持--format=json
.docker/cli #4544 命令
打包更新
- 升级 转到
go1.20.7
.moby/moby#46140、docker/cli#4476、docker/docker-ce-packaging#932 - 将 containerd 升级到
v1.7.3
(仅限静态Binaries)。白鲸/白鲸#46103 - 将 Compose 升级到
v2.21.0
.docker/docker-ce-packaging的 #936
24.0.5
2023-07-24有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强功能
- Go 客户端现在避免在 HTTP 中使用 UNIX 套接字路径
Host:
标头,以便与go1.20.6
.白鲸/白鲸#45962、白鲸/白鲸#45990 - containerd 存储后端:修复
Variant
未包含在docker image inspect
和GET /images/{name}/json
.白鲸/白鲸#46025 - containerd storage backend:防止在镜像导出期间对内容进行潜在的垃圾回收。白鲸/白鲸#46021
- containerd storage backend:防止
RepoDigests
.白鲸/白鲸#46014 - containerd storage backend:修复在处理 tag 和 digest 引用的镜像时针对不正确的标签执行的作。白鲸/白鲸#46013
- containerd storage backend:修复由
EXPOSE
使用旧版构建器构建容器时。白鲸/白鲸 #45921 - 修复了在尝试创建
overlay
network 在非 Swarm 节点上。白鲸/白鲸#45974 - 从命令行正确报告解析卷规范的错误。docker/cli 的 #4423
- 修复
auths: null
位于 CLI 配置文件中。docker/cli #4450
打包更新
- 使用 moby/moby 中提供的 init 脚本
contrib/init
.docker/docker-ce-packaging#914、docker/docker-ce-packaging#926 - 从 Upstart 中丢弃
contrib/init
.白鲸/白鲸#46044 - 升级 转到
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。白鲸/白鲸#45903
24.0.3
2023-07-06有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强功能
- containerd 镜像存储:修复了不包含默认平台清单的多平台镜像无法与之交互的问题。白鲸/白鲸#45849
- containerd 镜像存储:修复似是而非的缓存尝试
FROM scratch
在容器构建中。白鲸/白鲸#45822 - containerd 镜像存储:修复
docker cp
使用无法多次挂载相同内容的快照程序。白鲸/白鲸 #45780、白鲸/白鲸 #45786 - containerd 镜像存储:使用
type=image
未正确解包/存放。白鲸/白鲸#45692 - containerd 镜像存储:修复错误地尝试解压缩
docker load
.白鲸/白鲸#45688 - containerd 镜像存储:正确设置用户代理,并在与注册表交互时包含其他信息,例如快照程序。白鲸/白鲸#45671、白鲸/白鲸#45684
- containerd image store:修复了在快照程序之间切换后无法解压缩已拉取的内容的问题。白鲸/白鲸#45678
- containerd 镜像存储:修复已重新标记或删除所有标记的镜像,这些镜像在仍在使用时被修剪。白鲸/白鲸#45857
- 修复了 Topology 字段未传播到 NodeCSIInfo 的 Swarm CSI 问题。白鲸/白鲸#45810
- 修复了由于非常大的 raft log 而导致的添加新 Swarm 管理器失败的问题。白鲸/白鲸#45703、白鲸/SwarmKit#3122、白鲸/SwarmKit#3128
name_to_handle_at(2)
现在,在默认 seccomp 配置文件中始终允许。白鲸/白鲸#45833- 修复了阻止加密的 Swarm 覆盖网络在默认端口以外的端口上工作的问题 (4789)。白鲸/白鲸#45637
- 修复了在实时还原期间无法还原 mount reference-counts 的问题。白鲸/白鲸#45824
- 修复实时还原期间各种与网络相关的故障。白鲸/白鲸 #45658、白鲸/白鲸 #45659
- 修复了在守护程序意外终止时以零(成功)退出状态恢复正在运行的容器的问题。白鲸/白鲸 #45801
- 修复在执行 healthcheck 探测时可能出现的 panic。白鲸/白鲸#45798
- 修复 container exec start 中由争用条件引起的 panic。白鲸/白鲸#45794
- 修复了使用不存在的命令将终端附加到 exec 而导致的异常。白鲸/白鲸#45643
- 修复
host-gateway
使用 BuildKit,将 IP 作为标签传递(也需要 docker/buildx#1894)。白鲸/白鲸#45790 - 修复
POST /containers/{id}/stop
将在请求被取消时强制终止容器,而不是等到指定的超时才“正常”停止。白鲸/白鲸#45774 - 修复
docker cp -a
从 root () 目录将失败。白鲸/白鲸#45748/
- 通过在 OCI 配置中更正确地设置资源约束参数,提高与非 runc 容器运行时的兼容性。白鲸/白鲸#45746
- 修复了在无根模式下某些配置(例如 LDAP)中因 subuid/subgid 范围重叠而导致的问题。moby/moby#45747,无根容器/rootlesskit#369
- 在填充 Debug 部分时大大降低 CPU 和内存使用率
GET /info
.白鲸/白鲸#45856 - 修复了调试信息在执行期间无法正确打印的问题
docker info
当只有客户端处于调试模式时。docker/cli 命令 #4393 - 修复了通过 SSH 连接连接到主机时与挂起连接相关的问题。docker/cli 命令 #4395
打包更新
- 升级 转到
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
在执行多个并发构建阶段时。白鲸/白鲸 #45620 - 修复 Windows 上的 DNS 解析忽略
etc/hosts
(%WINDIR%\System32\Drivers\etc\hosts
),包括localhost
.白鲸/白鲸#45562 - 对导致并发的 containerd 错误应用解决方法
docker exec
命令花费的时间明显长于预期。白鲸/白鲸#45625 - containerd 镜像存储:修复镜像
Created
field 将包含不正确的值。白鲸/白鲸 #45623 - containerd image store:调整镜像拉取进度的输出,以便无论是否启用了 containerd image store,输出都具有相同的格式。白鲸/白鲸#45602
- containerd 镜像存储:现在,在默认镜像存储和 containerd 镜像存储之间切换需要重新启动守护程序。白鲸/白鲸#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 转发到客户端的问题。白鲸/白鲸#45573
- 修复
docker pull --platform
会举报的No such image
关于指向同一镜像的另一个标签。白鲸/白鲸#45562 - 修复了在重新加载配置期间会忘记不安全的注册表配置的问题。白鲸/白鲸#45571
- containerd 镜像存储:修复了没有层的镜像不会在
docker images -a
白鲸/白鲸#45588 - API:修复了
GET /images/{id}/json
会返回null
而不是空的RepoTags
和RepoDigests
.白鲸/白鲸#45564 - API:修复了
POST /commit
未接受空请求正文。白鲸/白鲸#45568
打包更新
- 将 Compose 升级到
v2.18.1
.docker/docker-ce-packaging的 #896
24.0.0
2023-05-16有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
新增功能
- 引入对 containerd 作为内容存储的实验性支持(替换现有的存储驱动程序)。moby/moby#43735,其他 moby/moby 拉取请求
- 这
--host
CLI 标志现在支持ssh://
host address,允许在远程主机上使用备用套接字路径,而无需在远程主机上进行配置。docker/cli #4073 - 这
docker info
CLI 命令现在报告 version 和 platform 字段。docker/cli #4180 的 - 引入守护进程标志
--default-network-opt
为新创建的网络配置选项。白鲸/白鲸#43197 - 限制对
AF_VSOCK
在socket(2)
默认 seccomp 配置文件中的 syscall 系列。白鲸/白鲸#44562 - 引入对在容器上设置 OCI 运行时注释的支持。docker/cli #4156、moby/moby#45025
- 现在可以在
daemon.json
,允许为运行时名称设置别名并传递选项。白鲸/白鲸#45032 - 这
docker-init
binary 现在将在符合 FHS 的 libexec 目录中发现,此外还有PATH
.白鲸/白鲸#45198 - API:显示守护程序级别
--no-new-privileges
在GET /info
.白鲸/白鲸#45320
删除
docker info
不再报告IndexServiceAddress
.docker/cli 命令 #4204- libnetwork:删除过时内核版本的回退代码。白鲸/白鲸 #44684、白鲸/白鲸 #44802
- libnetwork:删除与传统 Swarm 相关的未使用代码。白鲸/白鲸#44965
- libnetwork:删除
xt_u32
kernel 模块。白鲸/白鲸 #45281 - 删除对 BuildKit 已弃用的支持
buildinfo
支持标准的出处证明。白鲸/白鲸#45097 - 删除已弃用的 AUFS 和旧版
overlay
存储驱动程序。白鲸/白鲸 #45342, 白鲸/白鲸 #45359 - 移除已弃用的
overlay2.override_kernel_check
storage driver 选项。白鲸/白鲸#45368 - 删除过时版本的 解决方法
apparmor_parser
从 AppArmor 配置文件。白鲸/白鲸#45500 - 应用程序接口:
GET /images/json
不再将空的 RepoTags 和 RepoDigests 表示为<none>:<none>
/<none>@<none>
.在 API >= 1.43 上返回空数组。白鲸/白鲸#45068
荒废的
- 弃用
--oom-score-adjust
daemon 选项。白鲸/白鲸#45315 - API:弃用
VirtualSize
字段输入GET /images/json
和GET /images/{id}/json
.白鲸/白鲸#45346
错误修复和增强功能
- 这
docker stack
命令不再验证build
部分。docker/cli #4214 - 修复达到超时后延迟的 healthcheck 进程。白鲸/白鲸#43739
- 减少使用
overlay2
storage 驱动程序。白鲸/白鲸#44285 - API:处理多个
before=
和since=
过滤器GET /images
.白鲸/白鲸#44503 - 修复了用户定义网络使用的嵌入式 DNS 解析器实现中的许多错误。白鲸/白鲸#44664
- 加
execDuration
字段添加到事件属性的映射中。白鲸/白鲸#45494 - 现在可以使用 Windows 创建 Swarm 级别的网络
internal
,l2bridge
和nat
司机。白鲸/SwarmKit#3121、白鲸/白鲸#45291
打包更新
- 更新 转到
1.20.4
.docker/cli#4253、moby/moby#45456、docker/docker-ce-packaging#888 - 更新
containerd
自v1.7.1
.白鲸/白鲸#45537 - 更新
buildkit
自v0.11.6
.白鲸/白鲸#45367