Docker Engine 20.10 发行说明
本文档描述了 Docker Engine 20.10 版本的最新变更、新增功能、已知问题和修复。
20.10.24
2023-04-04更新
错误修复和增强
- 修复了多个可能导致 Swarm 加密覆盖网络无法维持其保证的问题,解决了 CVE-2023-28841、CVE-2023-28840 和 CVE-2023-28842。
- 内核不支持加密覆盖网络现在会报告为错误。
- 加密覆盖网络会立即设置,而不是等待多个节点附加。
- 通过使用
xt_bpf内核模块,加密覆盖网络现在可以在 Red Hat Enterprise Linux 9 上使用。 - Swarm 覆盖网络的用户应查阅 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,
错误修复和增强
修复了在使用
--add-host=host.docker.internal:host-gateway且启用了 BuildKit 时docker build失败的问题 moby/moby#44650。还原 seccomp:在默认配置文件中阻止对
AF_VSOCK的套接字调用 moby/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 Scan 更新至 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 或更高版本的主机上执行
docker build期间出现的ssh: parse error in message type 27错误 moby/moby#3862。 - seccomp:在默认配置文件中阻止对
AF_VSOCK的套接字调用 moby/moby#44564。
20.10.21
2022-10-25此版本的 Docker Engine 包含了更新版本的 Docker Compose、Docker Scan、containerd,为 Ubuntu 22.10 增加了软件包,以及一些小的错误修复和增强。
新增
- 为 Ubuntu 22.10 (Kinetic Kudu) 提供软件包。
- 增加了对 Docker Hub 的
allow-nondistributable-artifacts支持 moby/moby#44313。
更新
- 将 Docker Compose 更新至 v2.12.2。
- 将 Docker Scan 更新至 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 Engine 为服务时出现的
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 添加了缓解措施。
- 为经典构建器添加了缓解措施,并将 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 prune期间导致 panic 的问题 moby/moby#44122。 - 修复了一个 bug,即如果守护进程以“实时恢复”模式运行并被重启,使用
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。
- 修复了由并发 map 读写可能导致的 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。
- 修复 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/sys构建时依赖,其中包含对 CVE-2022-29526 的修复。 - 将 Go 运行时更新至 1.17.10,其中包含对 CVE-2022-29526 的修复。
错误修复和增强
- 修复了在 20.10.15 中引入的 macOS 二进制文件中的一个回归问题,该问题导致了 panic 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。
错误修复和增强
- 为 stateCounter 使用 RWMutex 以防止潜在的锁定拥塞 moby/moby#43426。
- 防止在某些情况下守护进程无法找到可用的 IP 范围的问题 moby/moby#43360
- 为 CentOS 9 stream 和 Fedora 36 添加软件包。
已知问题
- 我们已在 20.10.15 版本的 macOS CLI 二进制文件 中发现一个问题。此问题已在 20.10.16 版本中解决。
20.10.14
2022-03-23此版本的 Docker Engine 更新了容器的默认可继承能力,以解决 CVE-2022-24769,同时还包含了一个新版本的 containerd.io 运行时来解决同样的问题。
更新
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 文档中的各种修复。
- 防止在使用“本地”日志驱动程序且容器产生大量日志消息时出现 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 scan 包,而无需升级 Docker Engine。
在基于 .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
重要由于 Go 1.16 中 net/http 的更改,通过
$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
重要由于 Go 1.16 中 net/http 的更改,通过
$HTTP_PROXY环境变量配置的 HTTP 代理不再用于 TLS (https://) 连接。请确保您也设置了$HTTPS_PROXY环境变量来处理对https://URL 的请求。请参阅 HTTP/HTTPS 代理部分 了解如何配置 Docker 守护进程以使用代理服务器。
构建器
- 修复平台匹配逻辑,以解决在使用 BuildKit 的 Arm 机器上
docker build在本地镜像缓存中找不到镜像的问题 moby/moby#42954
运行时
- 在默认 seccomp 策略中添加对
clone3系统调用的支持,以支持运行基于最新版本 Fedora 和 Ubuntu 的容器。moby/moby/#42836。 - Windows:更新 hcsshim 库以修复容器层中稀疏文件处理的 bug,该 bug 是由 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 软件包。
重要由于 Go 1.16 中 net/http 的更改,通过
$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中的程序。
打包
已知问题
此版本静态包中附带的
ctr二进制文件不是静态链接的,在使用 alpine 作为基础镜像的 Docker 镜像中将无法运行。用户可以安装libc6-compat包,或下载先前版本的ctr二进制文件作为解决方法。有关此问题的更多详细信息,请参阅相关的 containerd 问题:containerd/containerd#5824。
- 将 Golang 运行时更新至 Go 1.16.8,其中包含对 CVE-2021-36221 和 CVE-2021-39293 的修复
- 将静态二进制文件以及 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
重要由于 Go 1.16 中 net/http 的更改,通过
$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
打包
已知问题
此版本静态包中附带的
ctr二进制文件不是静态链接的,在使用 alpine 作为基础镜像的 Docker 镜像中将无法运行。用户可以安装libc6-compat包,或下载先前版本的ctr二进制文件作为解决方法。有关此问题的更多详细信息,请参阅相关的 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
- 将静态二进制文件以及 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 时出现的“设备或资源繁忙”错误 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 Scan 插件包 (
docker-scan-plugin) 更新至 v0.8 docker/docker-ce-packaging#545。
20.10.6
2021-04-12
客户端
- Apple Silicon (darwin/arm64) 对 Docker CLI 的支持 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 更新至 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
- 通过一个
docker-scan-plugin包为 Linux amd64 提供 Docker Scan CLI 插件,作为docker-ce-cli包的推荐依赖 docker/docker-ce-packaging#537 - 包含适用于 arm64 的 VPNKit 二进制文件 moby/moby#42141
插件
- 修复 docker plugin create 创建的插件与旧版 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
- 修复绑定挂载现有挂载时出现的“操作不允许”错误 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
- 修复了在使用自定义默认运行时配置的设置上守护进程出现 panic 的问题 moby/moby#41974
- 修复守护进程配置为空时出现的 panic moby/moby#41976
- 修复了当使用无效的设备 cgroup 规则启动容器时守护进程 panic 的问题 moby/moby#42001
- 修复当用户名和 UID 匹配时的 userns-remap 选项 moby/moby#42013
- static: 将 runc 二进制文件更新至 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 内进行 mknodding FIFO moby/moby#41957
安全性
- profiles: 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:防止从当前目录执行某些二进制文件 docker/cli#2950
20.10.2
2021-01-04
运行时
- 修复了当恢复具有重启策略但一直启动失败的容器时,守护进程启动挂起的问题 moby/moby#41729
- overlay2:修复一个导致在数据根目录长度为24字节时无法构建或运行容器的差一错误 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时发出警告和弃用通知 docker/cli#2872 - 对未认证的 tcp 访问发出更严厉的警告和弃用通知 moby/moby#41285
- 弃用 KernelMemory (
docker run --kernel-memory) moby/moby#41254 docker/cli#2652 - 弃用
aufs存储驱动程序 docker/cli#1484 - 弃用主机发现和带有外部 k/v 存储的覆盖网络 moby/moby#40614 moby/moby#40510
- 弃用 Dockerfile 旧版 'ENV 名称 值' 语法,请改用
ENV 名称=值docker/cli#2743 - 为 API v1.41 及更高版本移除已弃用的 "filter" 参数 moby/moby#40491
- 在推送时禁用分发清单 v2 schema 1 moby/moby#41295
- 移除破坏旧版 docker 客户端 (<= 1.12) 的 hack MalformedHostHeaderOverride,在这种情况下,请设置
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 不再需要“实验性”标志 moby/moby#40427
GET /events现在在资源清理完成后返回prune事件 moby/moby#41259- 清理事件会针对
container、network、volume、image和builder返回,并带有一个reclaimed属性,指示回收的空间量(以字节为单位)
- 清理事件会针对
- 添加
one-shot统计选项以不预加载统计信息 moby/moby#40478 - 将操作系统版本信息添加到系统信息的 API (
/info) 中 moby/moby#38349 - 将 DefaultAddressPools 添加到 docker info moby/moby#40714
- 为服务添加 PidsLimit 的 API 支持 moby/moby#39882
构建器
- buildkit,dockerfile: 支持
RUN --mount选项,无需指定实验性的 dockerfile#syntax指令。moby/buildkit#1717 - dockerfile:
ARG命令现在支持在同一行定义多个构建参数,类似于ENVmoby/buildkit#1692 - dockerfile:
ADD中的--chown标志现在允许参数扩展 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: secrets: 允许通过 env 提供 secrets moby/moby#41234 docker/cli#2656 moby/buildkit#1534
- 支持
--secret id=foo,env=MY_ENV作为将秘密值存储到文件的替代方法。 --secret id=GIT_AUTH_TOKEN如果 env 存在且文件不存在,将加载 env。
- 支持
- 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 从缓存层构建的镜像丢失数据的问题
- 允许在远程上下文 URL 中使用 ssh:// moby/moby#40179
- builder: 移除旧版构建的会话处理(曾为实验性功能)moby/moby#39983
客户端
- 向 CLI 添加 swarm 作业支持 docker/cli#2262
- 向 docker push 添加
-a/--all-tagsdocker/cli#2220 - 添加对 Kubernetes 用户名/密码认证的支持 docker/cli#2308
- 向
run和create命令添加--pull=missing|always|neverdocker/cli#1498 - 向
docker exec添加--env-file标志,用于从文件解析环境变量 docker/cli#2602 - 为
--tail选项添加简写-ndocker/cli#2646 - 将日志驱动程序和选项添加到 service inspect 的“美化”格式中 docker/cli#1950
- docker run: 使用
--cgroupns指定 cgroup 命名空间模式 docker/cli#2024 - 新增
docker manifest rm命令,用于从本地存储中移除 manifest 列表草稿 docker/cli#2449 - 将“context”添加到“docker version”和“docker info”中 docker/cli#2500
- 将 platform 标志传播到容器创建 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 services 的任务打印 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
- 允许在仅设置源字段的情况下使用高级语法来设置配置或密钥 docker/cli#2243
- 修复了即使
auth为空也能读取包含username和password认证的配置文件的问题 docker/cli#2122 - docker cp: 修复在获取目标状态失败时出现的 NPE(空指针异常)docker/cli#2221
- config: 在配置文件上保留所有权和权限 docker/cli#2228
日志记录
- 支持使用所有日志驱动程序读取
docker logs(尽力而为)moby/moby#40543 - 添加
splunk-index-acknowledgment日志选项,以便与启用了索引确认的 Splunk HEC 配合使用 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 二进制文件更新至 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
- 现在,当容器以特权模式启动时,
docker run中的--device标志将生效 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
- 修复在运行 FirewallBackend=nftables 的 RHEL 8 上使用 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
- 修复当 IPTableEnable=false 时未创建
DOCKER-USER链的问题 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: 在单元文件中将 multi-user.target 添加到 After= moby/moby#41297
- docker.service: 允许套接字激活 moby/moby#37470
- seccomp: 移除 dockerd 中对 libseccomp 的依赖 moby/moby#41395
无根模式
- rootless: 从实验性功能毕业 moby/moby#40759
- 添加 dockerd-rootless-setuptool.sh moby/moby#40950
- 支持
--exec-opt native.cgroupdriver=systemdmoby/moby#40486
安全性
- 修复 CVE-2019-14271,该漏洞涉及在 Glibc 下的 chroot 环境中加载基于 nsswitch 的配置 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
- 添加默认的 sysctls 以允许在没有 capabilities 的情况下使用 ping 套接字和特权端口 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
- service: 支持
--mount type=bind,bind-nonrecursivemoby/moby#38788 - 支持 Swarm 服务上的 ulimits。moby/moby#41284 docker/cli#2712
- 修复了服务日志可能在工作节点上导致 goroutine 泄漏的问题 moby/moby#40426