Docker Engine 20.10 版本说明
本文档描述了Docker Engine版本20.10的最新变化、新增功能、已知问题和修复。
20.10.24
2023-04-04更新
Bug修复和增强
- 修复了导致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,
Bug fixes and enhancements
修复了一个问题,当启用BuildKit时,使用
--add-host=host.docker.internal:host-gateway会导致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.
Bug修复和增强功能
- 移除bash补全中
--platform的实验性门控 docker/cli#3824. - 修复了在Windows上从旧版CLI注册Docker Engine作为服务时出现的
Invalid standard handle identifier恐慌 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引用的处理方式。详情请参阅上文的“守护进程”部分。
错误修复和增强功能
- 添加了对 CVE-2022-39253 的缓解措施,当使用经典构建器并将Git URL作为构建上下文时。
- 为经典的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 prune期间可能导致恐慌的问题 moby/moby#44122. - 修复了一个错误,当使用
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.
- 修复了一个可能导致并发地图读取和地图写入引起的恐慌问题 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 的修复
Bug修复和增强功能
- 在zsh补全脚本中移除docker命令中的星号 docker/cli#3648.
- 修复Windows端口在主机模式下与发布端口的冲突,适用于overlay网络 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二进制文件中的回归问题,该问题导致了恐慌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添加软件包。
已知问题
- 我们已经发现了一个问题,与 macOS CLI 二进制文件 在 20.10.15 版本中。这个问题已经在 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 现在可以在Linux上使用docker-compose-plugin包安装,该包在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.
Bug修复和增强
- 修复更新容器状态时的竞争条件 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 scan 包,而无需升级 Docker 引擎:
在基于.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 守护程序以使用代理服务器。
Builder
- 修复平台匹配逻辑以修复在使用BuildKit时,
docker build在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月4日
此版本是一个安全版本,包含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中的程序。
包装
已知问题
此版本静态包附带的
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年8月3日
重要
由于 net/http 更改 在 Go 1.16 中,通过
$HTTP_PROXY环境变量配置的 HTTP 代理不再用于 TLS (https://) 连接。请确保您还设置了$HTTPS_PROXY环境变量以处理对https://URL 的请求。请参阅 HTTP/HTTPS 代理部分 了解如何配置 Docker Daemon 以使用代理服务器。
弃用
- 弃用对加密的TLS私钥的支持。根据RFC 1423规定的传统PEM加密在设计上是不安全的。因为它不对密文进行认证,所以容易受到填充预言攻击,攻击者可以恢复明文。对加密的TLS私钥的支持现在被标记为弃用,并将在即将发布的版本中移除。 docker/cli#3219
- 弃用Kubernetes堆栈支持。随着在Kubernetes上使用Compose的弃用,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
- 修复日志代理中的死锁问题("调度器已停止") 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
- 更新捆绑的buildx版本至v0.6.1,适用于rpm和deb包 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:
- 在executor中转换exec mounts的相对挂载点,以解决runc v1.0.0-rc94及以上版本的破坏性更改。 moby/buildkit#2137.
- 在镜像推送5xx错误时添加重试。 moby/buildkit#2043.
- 修复在使用通配符的
COPY命令复制文件时,重命名文件不会使构建缓存失效的问题。请注意,此更改会使使用通配符的复制命令的现有构建缓存失效。 moby/buildkit#2018. - 修复在使用挂载时不会使构建缓存失效的问题 moby/buildkit#2076.
- 修复在使用旧版模式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年4月12日
客户端
- Apple Silicon (darwin/arm64) 对 Docker CLI 的支持 docker/cli#3042
- config: 当回退到v1.7.0之前的配置文件
~/.dockercfg时,打印弃用警告。此文件的支持将在未来的版本中移除 docker/cli#3000
Builder
- 修复经典构建器静默忽略不支持的Dockerfile选项,并提示启用BuildKit moby/moby#42197
日志记录
- json-file: 修复偶发的意外EOF错误 moby/moby#42174
网络
- 修复了docker 20.10中的一个回归问题,该问题导致在映射端口时默认不再绑定IPv6地址 moby/moby#42205
- 修复API响应中未包含的隐式IPv6端口映射。在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
- 在Linux amd64上通过
docker-scan-plugin包提供Docker Scan CLI插件,作为docker-ce-cli包的推荐依赖项 docker/docker-ce-packaging#537 - 包含适用于arm64的VPNKit二进制文件 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
- 修复在绑定挂载现有挂载时出现的“操作不允许”错误 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:消息。 docker/cli#2987。. Discarding
20.10.4
2021年2月26日
构建器
- 修复了带有空层的行内缓存导入的缓存匹配错误 moby/moby#42061
- 更新 BuildKit 到 v0.8.2
moby/moby#42061
- 解析器:避免在获取令牌时缓存错误
- 文件操作:修复校验和以包含输入索引,防止某些缓存未命中
- 修复带有挂载引用的类型错误的引用计数问题(修复
invalid mutable ref错误) - git:仅为主要远程访问设置令牌,允许使用不同凭据克隆子模块
- 确保在拉取后删除/var/lib/docker/buildkit/content/blobs/sha256中的blobs。要清理旧状态,请运行
builder prunemoby/moby#42065 - 修复并行拉取同步回归 moby/moby#42049
- 确保libnetwork状态文件不泄露 moby/moby#41972
客户端
- 修复了在没有配置文件的情况下执行
docker login时的崩溃问题 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
- 修复当守护进程配置为空时的崩溃问题 moby/moby#41976
- 修复在启动容器时使用无效的设备cgroup规则导致的守护进程崩溃问题 moby/moby#42001
- 修复当用户名和UID匹配时的userns-remap选项 moby/moby#42013
- static: 更新 runc 二进制文件到 v1.0.0-rc93 moby/moby#42014
Logger
- 即使未设置
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
- 允许在用户命名空间内创建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 锁定文件权限以防止重新映射的根用户访问docker状态
- 确保在使用BuildKit构建时应用AppArmor和SELinux配置文件
客户端
- 在导入上下文之前检查它们,以减少提取的文件逃逸上下文存储的风险
- Windows: 防止从当前目录执行某些二进制文件 docker/cli#2950
20.10.2
2021年1月4日
运行时
- 修复了一个守护进程启动时挂起的问题,该问题发生在恢复具有重启策略但持续启动失败的容器时 moby/moby#41729
- overlay2: 修复了一个当 data-root 长度为 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月8日
弃用 / 移除
有关所有已弃用功能的概述,请参阅 已弃用的引擎功能 页面。
- 当从不符合要求的、不支持通过摘要拉取的注册表中执行
docker pull时,会发出警告和弃用通知 docker/cli#2872 - 针对未经身份验证的TCP访问的更严厉警告和弃用通知 moby/moby#41285
- 弃用 KernelMemory (
docker run --kernel-memory) moby/moby#41254 docker/cli#2652 - 弃用
aufs存储驱动 docker/cli#1484 - 弃用使用外部键/值存储的主机发现和覆盖网络 moby/moby#40614 moby/moby#40510
- 弃用 Dockerfile 旧版 'ENV name value' 语法,改用
ENV name=value代替 docker/cli#2743 - 移除API v1.41及以上版本中已弃用的"filter"参数 moby/moby#40491
- 在推送时禁用分发清单 v2 模式 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信息中 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: secrets: 允许使用环境变量提供密钥
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添加群集作业支持 docker/cli#2262
- 添加
-a/--all-tags到 docker push docker/cli#2220 - 添加对Kubernetes用户名/密码认证的支持 docker/cli#2308
- 添加
--pull=missing|always|never到run和create命令 docker/cli#1498 - 添加
--env-file标志到docker exec以便从文件中解析环境变量 docker/cli#2602 - 为
--tail选项添加简写-ndocker/cli#2646 - 将日志驱动程序和选项添加到服务检查的“漂亮”格式中 docker/cli#1950
- docker run: 使用
--cgroupns指定 cgroup 命名空间模式 docker/cli#2024 docker manifest rm命令用于从本地存储中移除清单列表草稿 docker/cli#2449- 将“context”添加到“docker version”和“docker info”中 docker/cli#2500
- 将平台标志传播到容器创建API docker/cli#2551
docker ps --format标志现在有一个.State占位符,用于打印容器的状态,而不包含有关运行时间和健康检查的额外详细信息 docker/cli#2000- 添加对docker-compose schema 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
- 允许在设置配置或秘密时仅使用源字段的高级语法 docker/cli#2243
- 修复读取包含
username和password认证的配置文件,即使auth为空 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
- 信息:添加关于缺少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上使用Firewalld运行FirewallBackend=nftables时的端口转发问题 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
- 修复当
IPTablesEnable=false时未创建DOCKER-USER链的问题 moby/moby#40808 moby/libnetwork#2471 - 修复在systemd环境中启动时的崩溃问题 moby/moby#40808 moby/libnetwork#2544
- 修复阻止容器通过macvlan内部网络通信的问题 moby/moby#40596 moby/libnetwork#2407
- 修复 InhibitIPv4 nil 恐慌 moby/moby#40596
- 修复Windows覆盖网络删除中的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_TIMEmoby/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以允许无权限的ping套接字和特权端口 moby/moby#41030
- 修复克隆系统调用的seccomp配置文件 moby/moby#39308
Swarm
- 添加对swarm作业的支持 moby/moby#40307
- 向堆栈/服务命令添加功能支持 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
- 修复了服务日志可能在工作者上泄漏goroutines的问题 moby/moby#40426