Docker Engine 20.10 发行说明
本文档描述了 Docker Engine 20.10 版本的最新更改、新增功能、已知问题及修复内容。
20.10.24
2023-04-04更新
错误修复和功能增强
- 修复了若干可能导致 Swarm 加密覆盖网络无法维持其安全保证的问题,涉及
CVE-2023-28841、
CVE-2023-28840 以及
CVE-2023-28842。
- 现在,内核不支持加密的 overlay 网络会报告为错误。
- 加密的 overlay 网络会立即设置,而不是等待多个节点连接。
- 通过使用
xt_bpf内核模块,加密的 overlay 网络现在可以在 Red Hat Enterprise Linux 9 上使用。 - Swarm overlay 网络的用户应查阅 GHSA-vwm3-crmr-xfxw 以确保没有发生意外暴露。
- 将 github.com/containerd/fifo 升级到 v1.1.0 以修复潜在的 panic moby/moby#45216。
- 修复已安装 cli-plugins 的 Bash 补全缺失问题 docker/cli#4091。
20.10.23
2023-01-19此版本的 Docker Engine 包含更新版本的 Docker Compose、Docker Buildx、containerd,以及一些小的错误修复和增强功能。
更新
- 更新 Docker Compose 到 v2.15.1。
- 更新 Docker Buildx 到 v0.10.0。
- 更新 containerd(
containerd.io个包)至 v1.6.15。 - 更新
docker-compose-cli的软件包版本格式,以允许发行版版本更新 docker/docker-ce-packaging#822。 - 更新 Go 运行时到 1.18.10,
错误修复和功能增强
修复在启用 BuildKit 时使用
--add-host=host.docker.internal:host-gatewaydocker build会失败的问题 moby/moby#44650。撤销seccomp:在默认配置文件中将套接字调用阻止为
AF_VSOCKmoby/moby#44712。此更改从安全角度来看是有利的,但导致了一些使用场景的行为变化。因此,我们正在将其回滚,以确保受影响用户 的稳定性和兼容性。
然而,使用容器中
AF_VSOCK的用户应认识到,此(特殊)地址族在任何版本的Linux内核中目前都没有被命名空间化,可能会导致意外的行为,例如容器直接与主机虚拟机监控程序通信。未来版本将过滤
AF_VSOCK。需要允许容器通过未命名空间的AF_VSOCK进行通信的用户需要关闭 seccomp 限制或设置自定义 seccomp 配置文件。
20.10.22
2022-12-16此版本的 Docker Engine 包含更新版本的 Docker Compose、Docker Scan、containerd,以及一些小的错误修复和增强功能。
更新
- 更新 Docker Compose 到 v2.14.1。
- 更新 Docker 扫描至 v0.23.0。
- 更新 containerd(
containerd.io个包)至 v1.6.13, 以包含对 CVE-2022-23471 的修复。 - 更新 Go 运行时到 1.18.9, 以包含修复 CVE-2022-41716, CVE-2022-41717 和 CVE-2022-41720。
错误修复和功能增强
- 在尝试拉取不受支持的镜像格式或 OCI 艺术品时,改进错误信息 moby/moby#44413, moby/moby#44569。
- 修复在为容器选择随机端口时忽略主机临时端口范围的问题 moby/moby#44476。
- 在使用 OpenSSH 8.9 或更高版本的主机上,修复
ssh: parse error in message type 27个错误,共docker build个 moby/moby#3862。 - seccomp: 在默认配置文件中阻止对
AF_VSOCK的 socket 调用 moby/moby#44564。
20.10.21
2022-10-25此版本的 Docker Engine 包含更新版本的 Docker Compose、Docker Scan 和 containerd,为 Ubuntu 22.10 添加了软件包,并包含一些小的错误修复和增强功能。
新
- 为 Ubuntu 22.10 (Kinetic Kudu) 提供软件包。
- 添加对
allow-nondistributable-artifacts的支持以连接到 Docker Hub moby/moby#44313。
更新
- 更新 Docker Compose 到 v2.12.2。
- 更新 Docker 扫描至 v0.21.0。
- 更新 containerd(
containerd.io个包)至 v1.6.9。 - 将捆绑的 BuildKit 版本更新以修复
output clipped, log limit 1MiB reached错误 moby/moby#44339。
错误修复和功能增强
- 移除 bash 补全中针对
--platform的实验性开关 docker/cli#3824。 - 修复在 Windows 上使用旧版 CLI 将 Docker 引擎注册为服务时出现的
Invalid standard handle identifierpanic 问题 moby/moby#44326。 - 在 Windows 上的 Cygwin 中修复运行 Git 命令 moby/moby#44332。
20.10.20
2022-10-18此版本的 Docker Engine 包含对 Git 漏洞的部分缓解措施
(
CVE-2022-39253),
并已更新对 image:tag@digest 镜像引用的处理。
Git 漏洞允许恶意构造的 Git 仓库在用作构建上下文时,将任意文件系统路径复制到生成的容器/镜像中;这可能发生在守护进程和 API 客户端中,具体取决于所使用的版本和工具。
本次发布及其他使用守护进程 API 的消费者中提供的缓解措施不完整,仅保护构建 Git URL 上下文(例如 git+protocol://)的用户。
由于该漏洞仍可能通过手动运行与子模块交互并签出的 Git 命令被利用,用户应立即升级到修补后的 Git 版本以防范此漏洞。更多详情请参阅 GitHub 博客(
"Git 安全漏洞公告")。
更新
- 更新 Docker Compose 到 v2.12.0。
- 更新了对
image:tag@digest引用的处理。在使用image:tag@digest(“按摘要拉取”)拉取镜像时,镜像解析通过内容可寻址的摘要进行,而image和tag不被使用。虽然这是预期的行为,但可能导致令人困惑的行为,并且可能通过社会工程手段被利用,从而运行本地镜像存储中已存在的镜像。Docker 现在会检查摘要是否与用于拉取镜像的仓库名称匹配,否则将产生错误。 - 更新了对
image:tag@digest引用的处理。详情请参阅上文的“守护程序”部分。
错误修复和功能增强
- 为使用 Git URL 作为构建上下文的经典构建器添加了针对 CVE-2022-39253 的缓解措施。CVE-2022-39253,
- 为经典 Builder 添加了缓解措施,并将 BuildKit 更新到 v0.8.3-31-gc0149372, 以应对 CVE-2022-39253。
20.10.19
2022-10-14此版本的 Docker Engine 包含一些错误修复,并更新了 Docker Compose 的版本。
更新
- 更新 Docker Compose 到 v2.11.2。
- 更新 Go 运行时到 1.18.7, 其中包含对 CVE-2022-2879, CVE-2022-2880, 以及 CVE-2022-41715的修复。
错误修复和功能增强
- 修复在
docker builder prune或docker system prunemoby/moby#44122 期间可能导致 panic 的问题。 - 修复一个错误:在守护进程使用“live restore”并重新启动的情况下,使用
docker volume prune会移除仍在使用的卷 moby/moby#44238。
20.10.18
2022-09-09此版本的 Docker Engine 包含对一个低严重性安全问题的修复、一些次要的错误修复,以及更新版本的 Docker Compose、Docker Buildx、containerd 和 runc。
更新
- 更新 Docker Buildx 到 v0.9.1。
- 更新 Docker Compose 到 v2.10.2。
- 更新 containerd(
containerd.io个包)至 v1.6.8。 - 将 runc 版本更新到 v1.1.4。
- 更新 Go 运行时到 1.18.6, 其中包含对 CVE-2022-27664 和 CVE-2022-32190 的修复。
错误修复和功能增强
- 为 Docker Compose 添加 Bash 自动补全功能 docker/cli#3752。
- 修复在构建过程中文件能力未被保留的问题 moby/moby#43876。
- 修复可能导致由并发映射读取和映射写入引起的 panic 的问题 moby/moby#44067。
- 修复与辅助组权限相关的安全漏洞,该漏洞可能允许容器进程绕过容器内的主组限制 CVE-2022-36109, GHSA-rc4r-wh2q-q6c4。
- seccomp: 在默认策略中添加对 Landlock 系统调用的支持 moby/moby#43991。
- seccomp: 更新默认策略以支持内核 5.12 - 5.16 引入的新系统调用 moby/moby#43991。
- 修复镜像清单缓存查找失败的问题,导致对镜像仓库的冗余往返请求 moby/moby#44109。
- 修复一个在超时情况下,
exec进程和健康检查未被终止的问题 moby/moby#44018。
20.10.17
2022-06-06此版本的 Docker Engine 包含更新的 Docker Compose 版本以及 containerd 和 runc 组件的更新版本,并且还包含一些小的错误修复。
更新
- 更新 Docker Compose 到 v2.6.0。
- 更新 containerd(
containerd.io个包)至 v1.6.6, 其中包含对 CVE-2022-31030 的修复 - 将 runc 版本更新到 v1.1.2,其中包含针对 CVE-2022-29162 的修复。
- 更新 Go 运行时到 1.17.11, 其中包含对 CVE-2022-30634, CVE-2022-30629, CVE-2022-30580 和 CVE-2022-29804 的修复
错误修复和功能增强
- 从 zsh 完成脚本中移除 docker 命令中的星号 docker/cli#3648。
- 修复在主机模式下使用 overlay 时发布的端口与 Windows 端口冲突的问题 moby/moby#43644。
- 确保始终对libnetwork沙箱应用性能调优 moby/moby#43683。
20.10.16
2022-05-12此版本的 Docker Engine 修复了 macOS 上 Docker CLI 构建的回归问题,修复了使用 containerd 1.5 及更高版本时出现的 docker stats 问题,并更新了 Go 运行时以包含对
CVE-2022-29526 的修复。
更新
- 更新 golang.org/x/sys 依赖项,其中包含对 CVE-2022-29526 的修复。
- 更新了包含修复程序的构建时依赖项
golang.org/x/sysCVE-2022-29526。 - 更新 Go 运行时到 1.17.10, 其中包含对 CVE-2022-29526 的修复。
错误修复和功能增强
- 修复了在 macOS 的Binaries中引入的回归问题(版本 20.10.15),该问题导致程序崩溃。 docker/cli#43426。
- 修复了一个问题:在使用 containerd 1.5.0 及以上版本时,
docker stats显示为空的统计信息 moby/moby#43567。 - 对
docker scanCLI插件使用了“弱”依赖,以防止用户从下载的RPM软件包执行离线安装时出现“请求冲突”错误 docker/docker-ce-packaging#659。
20.10.15
2022-05-05此版本的 Docker Engine 包含更新的 compose、buildx、containerd 和 runc 组件版本,以及一些小的错误修复。
更新
- 更新 Docker Compose 到 v2.5.0。
- 更新 Docker Buildx 到 v0.8.2。
- 更新 Go 运行时到 1.17.9。
- 更新 containerd(
containerd.io个包)至 v1.6.4。 - 更新 runc 版本至 v1.1.1。
错误修复和功能增强
- 使用 RWMutex 为 stateCounter 加锁以防止潜在的锁拥堵 moby/moby#43426。
- 防止在某些条件下守护进程无法找到可用的IP范围的问题 moby/moby#43360
- 为 CentOS 9 stream 和 Fedora 36 添加软件包。
已知问题
- 我们已识别出 20.10.15 版本中 macOS 命令行工具Binaries 存在一个问题。此问题已在 20.10.16 版本中得到解决。
20.10.14
2022-03-23此版本的 Docker Engine 更新了容器的默认可继承功能,以解决
CVE-2022-24769,
还包含 containerd.io 运行时的新版本以解决相同问题。
更新
- 更新默认可继承的能力。
- 更新在构建过程中使用的容器的默认可继承功能。
- 更新 containerd(
containerd.io个包)至 v1.5.11。 - 更新
docker buildx到 v0.8.1。
20.10.13
2022-03-10此版本的 Docker Engine 包含一些错误修复和打包更改,
更新了 docker scan 和 docker buildx 命令,更新了 Go 运行时版本,并提供了 containerd.io 运行时的新版本。
与此次发布一起,我们现在还提供 Docker Compose V2 的 .deb 和 .rpm 包,
可以使用(可选的)docker-compose-plugin 包进行安装。
新
- 为 Docker Compose V2 提供
.deb和.rpm包。 Docker Compose v2.3.3 现在可以使用docker-compose-plugin包在 Linux 上安装,该包在 Docker CLI 上提供docker compose子命令。Docker Compose 插件也可以独立安装和运行,作为docker-compose(Docker Compose V1)的即插即用替代品 docker/docker-ce-packaging#638。compose-cli-plugin包也可用于支持 CLI 插件的旧版本 Docker CLI(Docker CLI 18.09 及更高版本)。 - 为即将发布的 Ubuntu 22.04 "Jammy Jellyfish" LTS 版本提供软件包 docker/docker-ce-packaging#645, docker/containerd-packaging#271。
更新
- 更新了捆绑的 buildx 版本到 v0.8.0。
- 更新
docker buildx到 v0.8.0。 - 更新
docker scan(docker-scan-plugin) 到 v0.17.0。 - 更新 containerd(
containerd.io个包)至 v1.5.10。 - 更新捆绑的 runc 版本至 v1.0.3。
- 将 Golang 运行时更新到 Go 1.16.15。
- 更新 fluentd 日志驱动程序,以防止潜在的守护程序崩溃,并防止在使用
fluentd-async-connect=true且远程服务器无法访问时容器挂起 moby/moby#43147。
错误修复和功能增强
- 修复在更新容器状态时的竞态条件 moby/moby#43166。
- 更新 etcd 依赖以防止守护进程错误地持有文件锁 moby/moby#43259
- 修复在配置默认
net.ipv4.ping_group_rangesysctl 时用户命名空间的检测 moby/moby#43084。 - 在拉取镜像时,如果连接失败,重试下载镜像清单 moby/moby#43333。
- 命令行参考和API文档中的各种修复。
- 使用“local”日志驱动程序时,防止容器生成大量日志消息导致 OOM moby/moby#43165。
20.10.12
2021-12-13
此版本的 Docker Engine 仅包含打包更改,并对 docker scan 和 docker buildx 命令进行了更新。在 v0.11.0 之前的 docker scan 版本无法检测
Log4j 2 CVE-2021-44228。
我们在此版本中提供了 docker scan 的更新版本,以帮助您扫描镜像中的此漏洞。
注意
Linux 上的
docker scan命令目前仅在 x86 平台上受支持。 我们尚未为 Linux 上的其他硬件架构提供软件包。
docker scan 功能作为单独的包提供,根据您的升级或安装方式,'docker scan' 可能不会自动更新到最新版本。请使用以下说明将 docker scan 更新到最新版本。您也可以使用这些说明在不升级 Docker Engine 的情况下安装或升级 docker scan 包:
在基于 .deb 的发行版上,例如 Ubuntu 和 Debian:
$ apt-get update && apt-get install docker-scan-plugin
在基于rpm的发行版上,例如CentOS或Fedora:
$ yum install docker-scan-plugin
升级后,验证您已安装最新版本的 docker scan:
$ docker scan --accept-license --version
Version: v0.12.0
Git commit: 1074dd0
Provider: Snyk (1.790.0 (standalone))
阅读我们关于CVE-2021-44228的博客文章
了解如何使用 docker scan 命令检查镜像是否存在漏洞。
打包
20.10.11
2021-11-17
重要
由于在 net/http更改 中的 Go 1.16,通过
$HTTP_PROXY环境变量配置的 HTTP 代理不再用于 TLS(https://)连接。请确保同时设置$HTTPS_PROXY环境变量以处理对https://URL 的请求。请参阅 配置守护进程以使用代理 了解如何配置 Docker 守护进程以使用代理服务器。
分发版
- 处理模糊的OCI清单解析以缓解 CVE-2021-41190 / GHSA-mc8v-mgrf-8f4m。 详情请参阅 GHSA-xmmx-7jpf-fx42。
Windows
- 修复 panic.log 文件具有只读属性设置的问题 moby/moby#42987。
打包
- 将 containerd 更新到 v1.4.12 以缓解 CVE-2021-41190。
- 将 Golang 运行时更新到 Go 1.16.10。
20.10.10
2021-10-25
重要
由于 net/http 变更 在 Go 1.16,通过
$HTTP_PROXY环境变量配置的 HTTP 代理不再用于 TLS(https://)连接。请确保同时设置$HTTPS_PROXY环境变量以处理对https://URL 的请求。请参阅 HTTP/HTTPS 代理部分 了解如何配置 Docker 守护程序以使用代理服务器。
构建器
- 修复平台匹配逻辑以修复
docker build,在使用 BuildKit 时,Arm 设备无法在本地镜像缓存中找到镜像的问题 moby/moby#42954
运行时
- 在默认的 seccomp 策略中添加对
clone3系统调用的支持,以支持运行基于最新版本 Fedora 和 Ubuntu 的容器。 moby/moby/#42836。 - Windows:更新 hcsshim 库以修复容器镜像中稀疏文件处理的错误,该错误由 Windows 的最近更改引发 moby/moby#42944。
- 修复某些情况下
docker stop可能会永远挂起的问题 moby/moby#42956。
Swarm
- 修复在服务更新失败时不会回滚的问题 moby/moby#42875。
打包
- 为 Ubuntu 21.10 "Impish Indri" 和 Fedora 35 添加软件包。
- 更新
docker scan到 v0.9.0 - 将 Golang 运行时更新到 Go 1.16.9。
20.10.9
2021-10-04
此版本是一个安全版本,修复了CLI和运行时的安全问题,并更新了containerd.io包的版本。
重要
由于 net/http 变更 在 Go 1.16,通过
$HTTP_PROXY环境变量配置的 HTTP 代理不再用于 TLS(https://)连接。请确保同时设置$HTTPS_PROXY环境变量以处理对https://URL 的请求。请参阅 HTTP/HTTPS 代理部分 了解如何配置 Docker 守护程序以使用代理服务器。
客户端
- CVE-2021-41092 确保默认身份验证配置设置了地址字段,以防止凭据发送到默认注册表。
运行时
- CVE-2021-41089
在执行
docker cp期间,在chroot内部创建父目录,以防止特制容器更改主机文件系统中现有文件的权限。 - CVE-2021-41091
锁定文件权限以防止非特权用户发现并执行
/var/lib/docker中的程序。
打包
已知问题
随此版本静态包发布的
ctrBinaries并非静态链接,因此在使用 alpine 作为基础镜像的 Docker 镜像中无法运行。用户可以安装libc6-compat包,或下载早期版本的ctrBinaries作为解决方法。有关此问题的更多详情,请参阅 containerd 的相关工单: containerd/containerd#5824。
- 将 Golang 运行时更新到 Go 1.16.8,其中包含对 CVE-2021-36221 和 CVE-2021-39293 的修复
- 更新静态Binaries以及 containerd.io 的 rpm 和 deb 软件包至 containerd v1.4.11 和 runc v1.0.2,以解决 CVE-2021-41103。
- 将捆绑的 buildx 版本更新到 v0.6.3,适用于 rpm 和 deb 软件包。
20.10.8
2021-08-03
重要
由于 net/http 变更 在 Go 1.16,通过
$HTTP_PROXY环境变量配置的 HTTP 代理不再用于 TLS(https://)连接。请确保同时设置$HTTPS_PROXY环境变量以处理对https://URL 的请求。请参阅 HTTP/HTTPS 代理部分 了解如何配置 Docker 守护程序以使用代理服务器。
已弃用
- 弃用对加密的 TLS 私钥的支持。在 RFC 1423 中指定的旧版 PEM 加密在设计上是不安全的。由于它不对密文进行身份验证,因此容易受到填充 oracle 攻击,攻击者可以利用这种攻击恢复明文。对加密的 TLS 私钥的支持现已标记为弃用,并将在即将发布的版本中移除。 docker/cli#3219
- 弃用 Kubernetes 堆栈支持。随着 Compose on Kubernetes 的弃用,
Docker CLI 中
stack和context命令的 Kubernetes 支持现在被标记为已弃用,将在即将发布的版本中移除 docker/cli#3174。
客户端
- 在 Windows 上修复
Invalid standard handle identifier个错误 docker/cli#3132。
无根模式
- 避免在 SELinux 主机上出现
can't open lock file /run/xtables.lock: Permission denied错误 moby/moby#42462。 - 在与 SELinux 一起运行时禁用 overlay2 以防止权限被拒绝错误 moby/moby#42462。
- 修复 openSUSE Tumbleweed 上的
x509: certificate signed by unknown authority错误 moby/moby#42462。
运行时
- 在使用
--platform选项拉取与指定架构不匹配的单架构镜像时打印警告 moby/moby#42633。 - 修复在cgroups v2下运行时的错误
Your kernel does not support swap memory limit警告 moby/moby#42479。 - Windows:修复一种情况,即如果
HcsShutdownComputeSystem返回ERROR_PROC_NOT_FOUND错误,则不会停止容器 moby/moby#42613
Swarm
- 修复一种可能性,即由于节点未能清理其旧的负载均衡器IP,重叠的IP地址可能存在 moby/moby#42538
- 修复日志代理中的死锁("dispatcher is stopped") moby/moby#42537
打包
已知问题
随此版本静态包发布的
ctrBinaries并非静态链接,因此在使用 alpine 作为基础镜像的 Docker 镜像中无法运行。用户可以安装libc6-compat包,或下载早期版本的ctrBinaries作为解决方法。有关此问题的更多详情,请参阅 containerd 的相关工单: containerd/containerd#5824。
- 移除 Ubuntu 16.04 "Xenial" 和 Fedora 32 的打包,因为它们已达到生命周期终点(EOL) docker/docker-ce-packaging#560
- 更新 Golang 运行时到 Go 1.16.6
- 更新rpm和deb包中捆绑的buildx版本至v0.6.1 docker/docker-ce-packaging#562
- 更新静态Binaries以及 containerd.io 的 rpm 和 deb 软件包至 containerd v1.4.9 和 runc v1.0.1: docker/containerd-packaging#241, docker/containerd-packaging#245, docker/containerd-packaging#247。
20.10.7
2021-06-02
客户端
- 抑制因使用已弃用的 cgroups 而产生的警告 docker/cli#3099。
- 在 Linux 和 macOS 上防止向容器发送
SIGURG信号。Go 运行时(从 Go 1.14 开始)内部使用SIGURG信号作为中断以支持可抢占的系统调用。在 Docker CLI 附加到容器的情况下,这些中断会被转发到容器。此修复更改了 Docker CLI 以忽略SIGURG信号 docker/cli#3107, moby/moby#42421。
构建器
- 将 BuildKit 更新到版本 v0。8.3-3-g244e8cde
moby/moby#42448:
- 在执行器中将 exec 挂载的相对挂载点转换,以规避 runc v1.0.0-rc94 及更高版本中的破坏性更改。 moby/buildkit#2137.
- 在镜像推送 5xx 错误时添加重试。 moby/buildkit#2043.
- 修复使用通配符的
COPY命令复制文件重命名时构建缓存未失效的问题。请注意,此更改会使使用通配符的复制命令的现有构建缓存失效。 moby/buildkit#2018. - 修复使用挂载时构建缓存未失效的问题 moby/buildkit#2076.
- 修复在使用旧版schema 1镜像时,当
FROM镜像未缓存时的构建失败问题 moby/moby#42382。
日志记录
- 更新 hcsshim SDK 以使 Windows 上的守护程序日志不那么冗长 moby/moby#42292。
无根模式
- 修复在启用用户命名空间的守护程序上构建镜像时,功能未被遵守的问题 moby/moby#42352。
网络
- 更新 libnetwork 以修复在具有内核启动参数
ipv6.disable=1的环境中发布端口的问题,并修复导致内部 DNS 查找失败的死锁 moby/moby#42413。
贡献者
- 将 rootlesskit 更新到 v0.14.2 以修复在使用
slirp4netns端口驱动程序启动用户空间代理时出现的超时问题 moby/moby#42294。 - 在无根守护程序上运行 docker-in-docker 时,修复“Device or resource busy”错误 moby/moby#42342。
打包
- 将 containerd 更新到 v1.4.6,将 runc 更新到 v1.0.0-rc95 以解决 CVE-2021-30465 moby/moby#42398, moby/moby#42395, docker/containerd-packaging#234
- 将 containerd 更新到 v1.4.5,runc v1.0.0-rc94 moby/moby#42372, moby/moby#42388, docker/containerd-packaging#232。
- 更新 Docker 扫描插件包(
docker-scan-plugin)至 v0.8 docker/docker-ce-packaging#545。
20.10.6
2021-04-12
客户端
- Docker CLI 对 Apple Silicon (darwin/arm64) 的支持 docker/cli#3042
- config: 当回退到 v1.7.0 之前的配置文件时,打印弃用警告
~/.dockercfg。此文件的支持将在未来的版本中移除 docker/cli#3000
构建器
- 修复经典构建器静默忽略不受支持的 Dockerfile 选项,并提示启用 BuildKit moby/moby#42197
日志记录
- json-file: 修复偶发的意外 EOF 错误 moby/moby#42174
网络
- 修复 Docker 20.10 中的一个回归问题,该问题导致在映射端口时默认不再绑定 IPv6 地址 moby/moby#42205
- 修复隐式 IPv6 端口映射未包含在 API 响应中的问题。在 docker 20.10 之前,发布的端口默认可通过 IPv4 和 IPv6 访问,但 API 仅包含关于 IPv4(0.0.0.0)映射的信息 moby/moby#42205
- 修复 Docker 20.10 中的一个回归问题,导致 docker-proxy 在所有情况下未被终止 moby/moby#42205
- 修复容器移除后 iptables 转发规则未被清理的问题 moby/moby#42205
打包
- 更新 containerd 的静态Binaries到 v1.4.4。apt/yum 仓库中的 containerd.io 软件包已提前更新至该版本。包含修复 CVE-2021-21334。 moby/moby#42124
- 适用于 Debian/Raspbian 11 Bullseye、Ubuntu 21.04 Hirsute Hippo 和 Fedora 34 的软件包 docker/docker-ce-packaging#521 docker/docker-ce-packaging#522 docker/docker-ce-packaging#533
- 在 Linux amd64 上通过
docker-scan-plugin软件包作为docker-ce-cli软件包的推荐依赖项提供 Docker 扫描 CLI 插件 docker/docker-ce-packaging#537 - 包含 arm64 的 VPNKit Binaries moby/moby#42141
插件
- 修复 docker 插件创建,使其生成与旧版本 Docker 兼容的插件 moby/moby#42256
无根模式
- 更新 RootlessKit 至 v0.14.1(另请参阅 v0.14.0 v0.13.2) moby/moby#42186 moby/moby#42232
- dockerd-rootless-setuptool.sh:创建 CLI 上下文 "rootless"
moby/moby#42109 - dockerd-rootless.sh: 禁止以root身份运行 moby/moby#42072
- 修复在绑定挂载现有挂载点时出现的“operation not permitted”错误 moby/moby#42233
- overlay2: 修复 "createDirWithOverlayOpaque(...) ... 输入/输出错误" moby/moby#42235
- overlay2: 支持 "userxattr" 选项(内核 5.11) moby/moby#42168
- btrfs: 允许无特权用户删除子卷 (内核 >= 4.18) moby/moby#42253
- cgroup2: 将 cgroup v2 移出实验阶段 moby/moby#42263
20.10.5
2021-03-02
客户端
- 撤销docker/cli#2960 以修复
docker start --attach中的挂起问题并删除多余的Unsupported signal: <nil>. Discarding消息。 docker/cli#2987。
20.10.4
2021-02-26
构建器
- 修复内联缓存导入且层为空时的错误缓存匹配 moby/moby#42061
- 将 BuildKit 更新至 v0.8.2
moby/moby#42061
- 解析器:避免在获取令牌时发生错误缓存
- fileop:修复校验和以包含输入索引,防止特定缓存未命中
- 修复带挂载引用的类型错误的引用计数问题(修复
invalid mutable ref类错误) - git:仅为主远程访问设置令牌,允许使用不同凭据克隆子模块
- 确保在拉取后删除 /var/lib/docker/buildkit/content/blobs/sha256 中的 blob。要清理旧状态,请运行
builder prunemoby/moby#42065 - 修复并行拉取同步回归问题 moby/moby#42049
- 确保 libnetwork 状态文件不会泄露 moby/moby#41972
客户端
- 当不存在配置文件时,修复因
docker login引发的panic docker/cli#2959 - 修复
WARNING: Error loading config file: .dockercfg: $HOME is not defineddocker/cli#2958
运行时
- docker info: 静默处理无法处理的警告 moby/moby#41958
- 避免为XGlobalHeader创建父目录 moby/moby#42017
- 创建缺失目录时使用0755权限 moby/moby#42017
- 在镜像配置中没有匹配的平台时回退到清单列表 moby/moby#42045 moby/moby#41873
- 修复在配置了自定义默认运行时的设置上守护程序崩溃的问题 moby/moby#41974
- 修复守护进程配置为空时的 panic 错误 moby/moby#41976
- 修复在使用无效设备 cgroup 规则启动容器时守护程序 panic 的问题 moby/moby#42001
- 修复 userns-remap 选项在用户名与 UID 匹配时的问题 moby/moby#42013
- 静态:将runcBinaries更新到v1.0.0-rc93 moby/moby#42014
日志记录器
- 即使未设置
labels,也尊重labels-regex配置 moby/moby#42046 - 正确处理长日志消息,防止在非阻塞模式下 awslogs 将大于 16kB 的事件拆分 mobymoby#41975
无根模式
- 通过将systemd的KillMode设置为mixed,防止服务在停止时挂起 moby/moby#41956
- dockerd-rootless.sh: 添加拼写错误防护 moby/moby#42070
- 将 rootlesskit 更新到 v0.13.1 以修复 IPv6 地址的处理问题 moby/moby#42025
- 在userns中允许创建FIFO moby/moby#41957
安全
- 配置文件: seccomp: 更新至 Linux 5.11 系统调用列表 moby/moby#41971
Swarm
- 修复重启后心跳信息无法持久化的问题 moby/moby#42060
- 修复可能停滞的任务 moby/moby#42060
- 修复仅提供
--update-order或--rollback-order时的--update-order和--rollback-order标志问题 docker/cli#2963 - 修复在某些情况下
docker service rollback返回非零退出代码的问题 docker/cli#2964 - 修复在
docker service rollback上进度条方向不一致的问题 docker/cli#2964
20.10.3
2021-02-01
安全
- CVE-2021-21285 防止无效镜像导致 Docker 守护进程崩溃
- CVE-2021-21284 锁定文件权限以防止重映射的 root 用户访问 Docker 状态
- 在使用 BuildKit 构建时,请确保应用 AppArmor 和 SELinux 配置文件
客户端
- 在导入上下文之前进行检查,以降低提取的文件逃逸上下文存储的风险
- Windows: 阻止从当前目录执行某些Binaries docker/cli#2950
20.10.2
2021-01-04
运行时
- 修复在恢复具有重启策略但持续无法启动的容器时,守护程序启动挂起的问题 moby/moby#41729
- overlay2: 修复一个会导致当 data-root 为 24 字节长时无法构建或运行容器的 off-by-one 错误 moby/moby#41830
- systemd: 关闭时发送
sd_notify STOPPING=1moby/moby#41832
网络
- 修复 IPv6 端口转发 moby/moby#41805 moby/libnetwork#2604
Swarm
- 修复服务模式为
replicated-job和global-job时的过滤问题 moby/moby#41806
打包
- buildx 更新至 v0.5.1 docker/docker-ce-packaging#516
20.10.1
2020-12-14
构建器
- buildkit: 更新至 v0.8.1,包含多项错误修复 moby/moby#41793
打包
- 撤销systemd单元中的更改,该更改可能会由于启动顺序冲突而阻止docker启动 docker/docker-ce-packaging#514
- buildx 更新至 v0.5.0 docker/docker-ce-packaging#515
20.10.0
2020-12-08
已弃用 / 已移除
要查看所有已弃用功能的概述,请参阅 已弃用的引擎功能 页面。
- 从不支持按摘要拉取的不合规注册表
docker pull-ing 时的警告和弃用通知 docker/cli#2872 - 对未经过身份验证的 TCP 访问发出更严厉的警告和弃用通知 moby/moby#41285
- 弃用 KernelMemory (
docker run --kernel-memory) moby/moby#41254 docker/cli#2652 - 弃用
aufs存储驱动程序 docker/cli#1484 - 弃用主机发现和使用外部k/v存储的overlay网络 moby/moby#40614 moby/moby#40510
- 弃用 Dockerfile 旧的 'ENV name value' 语法,改用
ENV name=valuedocker/cli#2743 - 移除 API v1.41 及以上版本中已弃用的“filter”参数 moby/moby#40491
- 在推送时禁用分发清单 v2 schema 1 moby/moby#41295
- 移除 hack MalformedHostHeaderOverride,这会破坏旧版 docker 客户端 (<= 1.12),在这种情况下,设置
DOCKER_API_VERSIONmoby/moby#39076 - 移除 "docker engine" 子命令 docker/cli#2207
- 从“dab”文件中移除实验性的“deploy” docker/cli#2216
- 移除已弃用的
docker search --automated和--stars标志 docker/cli#2338 - 不允许在引擎标签中使用保留的命名空间 docker/cli#2326
API
- 将 API 版本更新到 v1.41
- 不要在指标 API 中使用“experimental” moby/moby#40427
GET /events在资源清理完成后现在返回prune个事件 moby/moby#41259- 清理事件会为
container、network、volume、image和builder返回,并包含一个reclaimed属性,表示回收的空间量(以字节为单位)
- 清理事件会为
- 添加
one-shotstats 选项以不预热 stats moby/moby#40478 - 在系统信息的API中添加操作系统版本信息(
/info) moby/moby#38349 - 在 docker info 中添加 DefaultAddressPools moby/moby#40714
- 为服务添加 PidsLimit 的 API 支持 moby/moby#39882
构建器
- buildkit,dockerfile: 支持
RUN --mount选项,无需指定实验性 dockerfile#syntax指令。 moby/buildkit#1717 - dockerfile:
ARG命令现在支持在同一行上定义多个构建参数,类似于ENVmoby/buildkit#1692 - dockerfile:
--chown标志在ADD中现在允许参数扩展 moby/buildkit#1473 - buildkit: 获取授权令牌已移至客户端(如果客户端支持)。密码不再泄露到构建守护程序中,用户可以从构建输出中看到何时访问凭据或令牌。 moby/buildkit#1660
- buildkit: 与注册表进行推送和拉取通信时的连接错误现在会触发重试 moby/buildkit#1791
- buildkit: Git 源现在支持通过构建机密进行令牌身份验证 moby/moby#41234 docker/cli#2656 moby/buildkit#1533
- buildkit: 从 git 源构建现在支持转发 SSH 套接字进行身份验证 moby/buildkit#1782
- buildkit: 避免生成过多日志导致崩溃或减慢构建的构建。需要时将进行剪裁。 moby/buildkit#1754
- buildkit: 将默认的 Seccomp 配置文件更改为 Docker 提供的配置文件 moby/buildkit#1807
- buildkit: 在 Windows 上暴露 SSH 代理套接字的支持已改进 moby/buildkit#1695
- buildkit: 默认情况下使用 --progress=plain 时禁用截断 moby/buildkit#1435
- buildkit: 允许在多个构建共享时,更好地处理客户端会话丢失 moby/buildkit#1551
- buildkit: 秘密:允许使用环境变量提供秘密
moby/moby#41234
docker/cli#2656
moby/buildkit#1534
- 支持将
--secret id=foo,env=MY_ENV作为将秘密值存储到文件的替代方案。 --secret id=GIT_AUTH_TOKEN如果环境变量存在且文件不存在,将加载环境变量。
- 支持将
- buildkit: 支持镜像回退、不安全的 TLS 和自定义 TLS 配置 moby/moby#40814
- buildkit: remotecache: 遍历结果时,每个项目仅访问一次
moby/moby#41234
moby/buildkit#1577
- 提升大型图的性能和CPU利用率
- buildkit: 当本地镜像平台不匹配时检查远程镜像 moby/moby#40629
- buildkit: 镜像导出:在创建新的层 blob 时使用正确的媒体类型 moby/moby#41234 moby/buildkit#1541
- buildkit: progressui: 修复日志时间格式化问题 moby/moby#41234 docker/cli#2656 moby/buildkit#1549
- buildkit: 缓解并行推送时的 containerd 问题 moby/moby#41234 moby/buildkit#1548
- buildkit: 内联缓存:修复重复 blob 的处理问题
moby/moby#41234
moby/buildkit#1568
- 修复 https://github.com/moby/buildkit/issues/1388 cache-from 工作不可靠的问题
- 修复 https://github.com/moby/moby/issues/41219 从缓存层构建的镜像缺少数据的问题
- 允许 ssh:// 用于远程上下文 URL moby/moby#40179
- builder: 移除遗留构建的会话处理(曾为实验性)moby/moby#39983
客户端
- 在CLI中添加对swarm作业的支持 docker/cli#2262
- 将
-a/--all-tags添加到 docker push docker/cli#2220 - 添加对 Kubernetes 用户名/密码认证的支持 docker/cli#2308
- 将
--pull=missing|always|never添加到run和create命令 docker/cli#1498 - 向
docker exec添加--env-file标志以从文件中解析环境变量 docker/cli#2602 - 为
--tail选项添加简写-ndocker/cli#2646 - 为服务检查的“pretty”格式添加日志驱动程序和选项 docker/cli#1950
- docker run:使用
--cgroupns指定 cgroup 命名空间模式 docker/cli#2024 docker manifest rm从本地存储中删除清单列表草稿的命令 docker/cli#2449- 在“docker version”和“docker info”中添加“context” docker/cli#2500
- 将平台标志传播到容器创建API docker/cli#2551
docker ps --format标志现在具有.State占位符,用于打印容器的状态,而不包含有关运行时间和健康检查的详细信息 docker/cli#2000- 添加对 docker-compose 模式 v3.9 的支持 docker/cli#2073
- 添加对 docker push
--quiet的支持 docker/cli#2197 - 在启用 BuildKit 时,隐藏 BuildKit 不支持的标志 docker/cli#2123
- 将标志
docker rm -v的描述更新为澄清该选项仅移除匿名(未命名)卷 docker/cli#2289 - 改善docker服务的任务打印 docker/cli#2341
- docker info: 按字母顺序列出 CLI 插件 docker/cli#2236
- 修复在
docker service update上处理--label-add/--label-rm、--container-label-add/--container-label-rm和--env-add/--env-rm标志的顺序,以允许替换现有值 docker/cli#2668 - 修复
docker rm --force在一个或多个容器不存在时返回非零退出代码 docker/cli#2678 - 通过使用
total_inactive_file代替cache来改进内存统计显示 docker/cli#2415 - 防范YAML文件过度使用别名的问题 docker/cli#2117
- 在仅使用 source 字段设置配置或密钥时,允许使用高级语法 docker/cli#2243
- 修复读取包含
username和password身份验证的配置文件,即使auth为空 docker/cli#2122 - docker cp: 防止在无法获取目标状态时出现NPE docker/cli#2221
- config: 保留配置文件的所有权和权限 docker/cli#2228
日志记录
- 支持所有日志驱动程序(尽力而为)读取
docker logsmoby/moby#40543 - 为与启用索引确认的 Splunk HEC 配合使用,添加
splunk-index-acknowledgment日志选项 moby/moby#39987 - 向journald日志添加部分元数据 moby/moby#41407
- 减少日志文件读取器的分配 moby/moby#40796
- Fluentd: 添加 fluentd-async、fluentd-request-ack,并弃用 fluentd-async-connect moby/moby#39086
运行时
- 支持 cgroup2 moby/moby#40174 moby/moby#40657 moby/moby#40662
- cgroup2: 当可用时,默认使用“systemd” cgroup 驱动程序 moby/moby#40846
- 新的存储驱动:fuse-overlayfs moby/moby#40483
- 更新 containerd Binaries至 v1.4.3 moby/moby#41732
docker push现在默认为latest标签,而不是所有标签 moby/moby#40302- 在配置文件中添加 max-download-attempts 以在拉取镜像时连接丢失期间更改重新连接尝试次数的能力 moby/moby#39949
- 通过使用默认的
io.containerd.runc.v2运行时,添加对containerd v2 shim的支持 moby/moby#41182 - cgroup v1: 将默认运行时更改为 io.containerd.runc.v2。需要 containerd v1.3.0 或更高版本。建议使用 v1.3.5 或更高版本。 moby/moby#41210
- 在自己的 cgroup 命名空间中启动容器 moby/moby#38377
- 为CIFS卷启用DNS查找 moby/moby#39250
- 使用 MemAvailable 而不是 MemFree 来估算实际可用内存 moby/moby#39481
- 在特权模式下启动容器时,
--device标志在docker run中现在将被尊重。 moby/moby#40291 - 强制保留内部标签 moby/moby#40394
- 将最小内存限制提高到6M,以考虑容器启动期间运行时更高的内存使用 moby/moby#41168
- 供应商 runc v1.0.0-rc92 moby/moby#41344 moby/moby#41317
- info: 添加关于缺少 blkio cgroup 支持的警告 moby/moby#41083
- 在创建容器时接受平台规范 moby/moby#40725
- 修复查找包含空格的用户和组名称的处理 moby/moby#41377
网络
- 在 Linux 上的 dockerd 中支持 host.docker.internal moby/moby#40007
- 在 /etc/hosts 中包含链接容器的 IPv6 地址 moby/moby#39837
--ip6tables启用 IPv6 iptables 规则(仅在实验性模式下)moby/moby#41622- 如果主机名 != 容器名称,则为主机名添加别名 moby/moby#39204
- 更好的 DNS 服务器选择(使用 systemd) moby/moby#41022
- 将 docker 接口添加到 firewalld 的 docker 区域
moby/moby#41189
moby/libnetwork#2548
- 修复 CentOS8 上的 DNS 问题 docker/for-linux#957
- 在 RHEL 8 上使用 FirewallBackend=nftables 运行 firewalld 时修复端口转发 moby/libnetwork#2496
- 修复在 CreateEndpoint 期间报告“获取网络失败”的问题 moby/moby#41189 moby/libnetwork#2554
- 记录错误而非禁用IPv6路由器通告失败 moby/moby#41189 moby/libnetwork#2563
- 不再忽略某些情况下的
--default-address-pool选项 moby/moby#40711 - 生成具有无效地址池的错误 moby/moby#40808 moby/libnetwork#2538
- 修复
DOCKER-USER链在 IPTableEnable=false 时未创建的问题 moby/moby#40808 moby/libnetwork#2471 - 在systemd环境中修复启动时的panic moby/moby#40808 moby/libnetwork#2544
- 修复阻止容器通过macvlan内部网络通信的问题 moby/moby#40596 moby/libnetwork#2407
- 修复 InhibitIPv4 nil panic moby/moby#40596
- 修复 Windows overlay 网络删除中的 VFP 泄漏问题 moby/moby#40596 moby/libnetwork#2524
打包
- docker.service: 在单元文件的 After= 中添加 multi-user.target moby/moby#41297
- docker.service: 允许套接字激活 moby/moby#37470
- seccomp: 移除 dockerd 对 libseccomp 的依赖 moby/moby#41395
无根模式
- 无root权限: 毕业于实验阶段 moby/moby#40759
- 添加 dockerd-rootless-setuptool.sh moby/moby#40950
- 支持
--exec-opt native.cgroupdriver=systemdmoby/moby#40486
安全
- 修复在 Glibc 的 chroot 内加载基于 nsswitch 的配置中的 CVE-2019-14271 moby/moby#39612
- seccomp: 白名单
clock_adjtime.CAP_SYS_TIME仍需要用于时间调整 moby/moby#40929 - seccomp: 将 openat2 和 faccessat2 添加到默认的 seccomp 配置文件 moby/moby#41353
- seccomp: 在默认的 seccomp 配置文件中允许 'rseq' 系统调用 moby/moby#41158
- seccomp: 允许 membarrier 系统调用 moby/moby#40731
- seccomp: 白名单 io-uring 相关系统调用 moby/moby#39415
- 为允许ping套接字和特权端口而无需权限添加默认sysctls moby/moby#41030
- 修复 clone 系统调用的 seccomp 配置文件 moby/moby#39308
Swarm
- 为swarm作业添加支持 moby/moby#40307
- 为 stack/service 命令添加 capabilities 支持 docker/cli#2687 docker/cli#2709 moby/moby#39173 moby/moby#41249
- 添加对向下发送服务运行和期望任务计数的支持 moby/moby#39231
- 服务:支持
--mount type=bind,bind-nonrecursivemoby/moby#38788 - 在 Swarm 服务上支持 ulimits。 moby/moby#41284 docker/cli#2712
- 修复了服务日志在工作节点上泄漏 goroutine 的问题 moby/moby#40426