Docker Engine 20.10 发行说明

本文档介绍了最新的更改、新增内容、已知问题和修复 适用于 Docker Engine 版本 20.10。

20.10.24

2023-04-04

更新

  • 将 Go 运行时更新到 1.19.7
  • 将 Docker Buildx 更新到 v0.10.4
  • 将 containerd 更新到 v1.6.20
  • 更新 runc 至 v1.1.5

错误修复和增强功能

  • 修复了可能导致 Swarm 加密覆盖网络的许多问题 未能履行其保证,解决 CVE-2023-28841CVE-2023-28840CVE-2023-28842
    • 现在报告缺乏对加密覆盖网络的内核支持 作为错误。
    • 加密的覆盖网络是热切建立的,而不是等待 要附加的多个节点。
    • 加密的覆盖网络现在可以在 Red Hat Enterprise Linux 9 上使用 通过使用 kernel 模块。xt_bpf
    • Swarm 叠加网络的用户应查看 GHSA-vwm3-crmr-xfxw,以确保没有发生意外暴露。
  • github.com/containerd/fifo 升级到 v1.1.0 以修复潜在的 panic moby/moby#45216
  • 修复已安装的 cli-plugins docker/cli 缺少 Bash 补全的问题 #4091

20.10.23

2023-01-19

此版本的 Docker Engine 包含 Docker Compose 的更新版本, Docker Buildx、containerd 和一些小错误修复和增强功能。

更新

错误修复和增强功能

  • 修复了在启用了 BuildKit 的情况下使用 moby/moby 时失败的问题 #44650docker build--add-host=host.docker.internal:host-gateway

  • 将 seccomp: block 套接字调用恢复到默认配置文件 moby/moby#44712AF_VSOCK

    这一变化虽然从安全角度来看是有利的,但导致了变化 在某些用例中。因此,我们将其还原以确保 受影响用户的稳定性和兼容性。

    但是,容器中的用户应该认识到,这 (特殊)地址族当前未在任何版本的 Linux 内核,并可能导致意外行为,例如容器 直接与主机 Hypervisor 通信。AF_VSOCK

    将来的版本将筛选 。需要允许容器的用户 要通过 unnamespaced 进行通信,需要关闭 seccomp 限制或设置自定义 secComp 配置文件。AF_VSOCKAF_VSOCK

20.10.22

2022-12-16

此版本的 Docker Engine 包含 Docker Compose 的更新版本, Docker Scan、containerd 和一些小错误修复和增强功能。

更新

错误修复和增强功能

  • 改进了尝试提取不受支持的镜像格式或 OCI 对象 moby/moby#44413moby/moby#44569 时的错误消息。
  • 修复了在为容器 moby/moby 选择随机端口时忽略主机的临时端口范围的问题#44476
  • 修复在使用 OpenSSH 8.9 或更高版本的主机上 moby/moby 期间出现的错误 #3862ssh: parse error in message type 27docker build
  • seccomp:在默认配置文件 moby/moby#44564 中阻止套接字调用。AF_VSOCK

20.10.21

2022-10-25

此版本的 Docker Engine 包含 Docker Compose 的更新版本, Docker Scan、containerd、为 Ubuntu 22.10 添加的软件包和一些小错误 修复和增强功能。

新增功能

  • 提供适用于 Ubuntu 22.10 (Kinetic Kudu) 的软件包。
  • 添加对 Docker Hub moby/moby 的支持 #44313allow-nondistributable-artifacts

更新

  • 将 Docker Compose 更新到 v2.12.2
  • 将 Docker Scan 更新到 v0.21.0
  • 更新 containerd ( package) 至 v1.6.9containerd.io
  • 更新捆绑的 BuildKit 版本以修复错误 moby/moby#44339output clipped, log limit 1MiB reached

错误修复和增强功能

  • 删除 in bash completion docker/cli#3824 的实验性门。--platform
  • 修复了在 Windows moby/moby 上从旧版 CLI 将 Docker Engine 注册为服务时出现的崩溃#44326Invalid standard handle identifier
  • 修复在 Windows moby/moby 上的 Cygwin 中运行 Git 命令的问题#44332

20.10.20

2022-10-18

此版本的 Docker Engine 包含针对 Git 漏洞的部分缓解措施 (CVE-2022-39253)、 并更新了对镜像引用的处理。image:tag@digest

Git 漏洞允许恶意构建的 Git 存储库在用作 build context,将任意文件系统路径复制到生成的容器/镜像中; 这可能发生在守护进程和 API 客户端中,具体取决于版本和 使用中的工具。

此版本和守护程序 API 的其他使用者中提供的缓解措施 是部分的,并且仅保护构建 Git URL 上下文的用户(例如 )。 由于该漏洞仍可能被手动运行交互的 Git 命令所利用 with 和 check out 子模块,用户应立即升级到 Git 来防范此漏洞。更多详细信息可从 GitHub 获取 博客(“Git 安全漏洞已公布”)。git+protocol://

更新

  • 将 Docker Compose 更新到 v2.12.0
  • 更新了引用的处理。使用 的 (“pull by digest”),镜像分辨率通过 不使用 content-addressable 摘要和 and。而 这是意料之中的,这可能会导致混淆行为,并且可能会 通过社会工程手段被利用以运行已经存在的镜像 在本地镜像存储中。Docker 现在检查摘要是否与存储库匹配 name 用于拉取镜像,否则会产生错误。image:tag@digestimage:tag@digestimagetag
  • 更新了引用的处理。请参阅 “守护进程” 部分 有关详细信息。image:tag@digest

错误修复和增强功能

20.10.19

2022-10-14

此版本的 Docker Engine 附带了一些错误修复和更新版本 Docker Compose 的。

更新

错误修复和增强功能

  • 修复了一个可能导致在 or moby/moby#44122 期间出现紧急情况的问题。docker builder prunedocker system prune
  • 修复了 using 会删除 如果守护程序正在使用 “Live Restore” 运行并重新启动 MOBY/MOBY#44238,则仍在使用中。docker volume prune

20.10.18

2022-09-09

此版本的 Docker Engine 修复了一个低严重性安全问题 修复了一些小错误,并更新了 Docker Compose、Docker Buildx 和 .containerdrunc

更新

错误修复和增强功能

20.10.17

2022-06-06

此版本的 Docker Engine 附带了 Docker Compose 和 、 组件的更新版本,以及一些小错误修复。containerdrunc

更新

错误修复和增强功能

20.10.16

2022-05-12

此版本的 Docker Engine 修复了 Docker CLI 版本中的回归 macOS,修复了使用 containerd 1.5 及更高版本时的问题, 并更新了 Go 运行时以包含 CVE-2022-29526 的修复程序。docker stats

更新

  • 更新 golang.org/x/sys 依赖项,其中包含 CVE-2022-29526 的修复程序。
  • 更新了构建时依赖项,其中包含 CVE-2022-29526 的修复程序。golang.org/x/sys
  • 将 Go 运行时更新到 1.17.10, 其中包含 CVE-2022-29526 的修复程序。

错误修复和增强功能

20.10.15

2022-05-05

此版本的 Docker Engine 附带了 、 、 和 组件的更新版本,以及一些小错误修复。composebuildxcontainerdrunc

更新

  • 将 Docker Compose 更新到 v2.5.0
  • 将 Docker Buildx 更新到 v0.8.2
  • 将 Go 运行时更新到 1.17.9
  • 更新 containerd(包)至 v1.6.4containerd.io
  • 更新 runc 版本至 v1.1.1

错误修复和增强功能

  • 对 stateCounter 使用 RWMutex 以防止潜在的锁定拥塞 moby/moby#43426
  • 防止守护程序无法在 中找到可用 IP 范围的问题 部分条件 MOBY/MOBY#43360
  • 添加适用于 CentOS 9 stream 和 Fedora 36 的软件包。

已知问题

20.10.14

2022-03-23

此版本的 Docker Engine 更新了 容器解决 CVE-2022-24769、 还包括新版本的运行时来解决相同的问题 问题。containerd.io

更新

  • 更新默认的可继承能力。
  • 更新构建期间使用的容器的默认可继承功能。
  • 将 containerd(包)更新到 v1.5.11containerd.io
  • 更新到 v0.8.1docker buildx

20.10.13

2022-03-10

此版本的 Docker Engine 包含一些 bug 修复和打包更改, 对 and 命令的更新,是 Go 运行时以及运行时的新版本。 除了此版本,我们现在还提供 Docker Compose V2,可以使用(可选)包进行安装。docker scandocker buildxcontainerd.io.deb.rpmdocker-compose-plugin

新增功能

更新

  • 将 buildx 的捆绑版本更新到 v0.8.0
  • 更新到 v0.8.0docker buildx
  • 将 () 更新到 v0.17.0docker scandocker-scan-plugin
  • 将 containerd(包)更新到 v1.5.10containerd.io
  • 将捆绑的 runc 版本更新到 v1.0.3
  • 将 Golang 运行时更新到 Go 1.16.15。
  • 更新 fluentd 日志驱动程序以防止潜在的守护程序崩溃,并防止 容器在使用 和 远程服务器无法访问 moby/moby#43147fluentd-async-connect=true

错误修复和增强功能

  • 修复更新容器状态 moby/moby#43166 时的争用条件。
  • 更新 etcd 依赖项以防止守护进程错误地持有文件锁 moby/moby#43259
  • 修复了在配置默认 sysctl moby/moby#43084 时对用户命名空间的检测。net.ipv4.ping_group_range
  • 如果在镜像期间发生连接失败,请重试下载镜像清单 拉取 moby/moby#43333。
  • 命令行参考和 API 文档中的各种修复。
  • 在将 “local” 日志记录驱动程序与生成 大量日志消息 moby/moby#43165

20.10.12

2021-12-13

此版本的 Docker Engine 仅包含打包方面的更改,并提供 对 and 命令的更新。v0.11.0 之前的版本无法检测到 Log4j 2 CVE-2021-44228。 我们将在此版本中提供 的更新版本来帮助您 扫描您的镜像以查找此漏洞。docker scandocker buildxdocker scandocker scan

注意

Linux 上的命令目前仅在 x86 平台上受支持。 我们尚未为 Linux 上的其他硬件体系结构提供软件包。docker scan

该功能作为单独的软件包提供,具体取决于您的 升级或安装方法,“docker scan”可能不会自动更新为 最新版本。使用以下说明更新到最新版本 版本。您还可以使用这些说明来安装或升级软件包,而无需升级 Docker Engine:docker scandocker scandocker scan

在基于发行版(如 Ubuntu 和 Debian)上:.deb

$ 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

包装

  • 更新到 v0.12.0docker scan
  • 更新到 v0.7.1docker buildx
  • 将 Golang 运行时更新到 Go 1.16.12。

20.10.11

2021-11-17

重要

由于 Go 1.16net/http 的变化,通过环境变量配置的 HTTP 代理不再用于 TLS () 连接。请确保还设置了一个环境变量来处理对 URL 的请求。请参阅 配置守护程序以使用代理 了解如何配置 Docker 守护程序以使用代理服务器。$HTTP_PROXYhttps://$HTTPS_PROXYhttps://

分配

窗户

包装

20.10.10

2021-10-25

重要

由于 Go 1.16net/http 的变化,通过环境变量配置的 HTTP 代理不再用于 TLS () 连接。请确保还设置了一个环境变量来处理对 URL 的请求。请参阅 HTTP/HTTPS 代理部分,了解如何配置 Docker 守护程序以使用代理服务器。$HTTP_PROXYhttps://$HTTPS_PROXYhttps://

建筑工人

  • 修复平台匹配逻辑,以修复在 使用 BuildKit moby/moby 时 Arm 机器上的本地镜像缓存 #42954docker build

运行

  • 在默认 seccomp 策略中添加对 syscall 的支持,以支持运行 基于最新版本的 Fedora 和 Ubuntu 的容器。白鲸/白鲸/#42836clone3
  • Windows:更新 hcsshim 库以修复容器中稀疏文件处理的缺陷 层,该图层由 Windows moby/moby#42944 中的最近更改公开。
  • 修复一些可能永远挂起 moby/moby#42956 的情况。docker stop

包装

  • 添加适用于 Ubuntu 21.10 “Impish Indri” 和 Fedora 35 的软件包。
  • 更新到 v0.9.0docker scan
  • 将 Golang 运行时更新到 Go 1.16.9。

20.10.9

2021-10-04

此版本是一个安全版本,在 CLI 运行时中修复了安全问题,如 以及 containerd.io 包的更新版本。

重要

由于 Go 1.16net/http 的变化,通过环境变量配置的 HTTP 代理不再用于 TLS () 连接。请确保还设置了一个环境变量来处理对 URL 的请求。请参阅 HTTP/HTTPS 代理部分,了解如何配置 Docker 守护程序以使用代理服务器。$HTTP_PROXYhttps://$HTTPS_PROXYhttps://

客户

  • CVE-2021-41092漏洞确保默认身份验证配置已设置地址字段,以防止凭据被 发送到默认注册表。

运行

  • CVE-2021-41089漏洞在 chroot 中创建父目录,以防止 通过更改主机文件系统中现有文件的权限来构建的容器。docker cp
  • CVE-2021-41091漏洞锁定文件权限以防止非特权用户发现和 在 中执行程序。/var/lib/docker

包装

已知问题

此版本的 static 包附带的二进制不是 静态链接,并且不会在使用 alpine 作为基础的 Docker 镜像中运行 镜像。用户可以安装该软件包,也可以下载以前的 版本作为解决方法。请参阅 containerd 票据 有关此问题的更多详细信息,请访问:containerd/containerd#5824ctrlibc6-compatctr

  • 将 Golang 运行时更新到 Go 1.16.8,其中包含针对 CVE-2021-36221CVE-2021-39293 的修复
  • 将静态二进制文件 containerd.io rpm 和 deb 软件包更新到 containerd v1.4.11 和 runc v1.0.2 以解决 CVE-2021-41103
  • 将 rpm 和 deb 软件包的捆绑 buildx 版本更新到 v0.6.3。

20.10.8

2021-08-03

重要

由于 Go 1.16net/http 的变化,通过环境变量配置的 HTTP 代理不再用于 TLS () 连接。请确保还设置了一个环境变量来处理对 URL 的请求。请参阅 HTTP/HTTPS 代理部分,了解如何配置 Docker 守护程序以使用代理服务器。$HTTP_PROXYhttps://$HTTPS_PROXYhttps://

折旧

  • 弃用对加密 TLS 私有密钥的支持。旧版 PEM 加密为 RFC 1423 中指定的 RFC 1423 在设计上是不安全的。因为它不进行身份验证 密文,它容易受到 Padding Oracle 攻击,这些攻击可以让 攻击者恢复了明文。现在支持加密的 TLS 私钥 标记为已弃用,并将在即将发布的版本中删除。docker/cli 命令 #3219
  • 弃用 Kubernetes 堆栈支持。在 Kubernetes 上弃用 Compose 后, 在 Docker CLI 中的 and 命令中支持 Kubernetes 现在标记为已弃用,并将在即将发布的版本 docker/cli#3174 中删除。stackcontext

客户

无根

  • 避免错误 SELinux 托管 moby/moby#42462can't open lock file /run/xtables.lock: Permission denied
  • 在使用 SELinux 运行时禁用 overlay2,以防止出现权限被拒绝错误 moby/moby#42462
  • 修复 openSUSE Tumbleweed moby/moby 的错误 #42462x509: certificate signed by unknown authority

运行

  • 使用选项提取单个 arch 镜像时打印警告 这与指定的架构 moby/moby#42633 不匹配。--platform
  • 修复以下情况下的错误警告 使用 cgroups v2 moby/moby#42479 运行。Your kernel does not support swap memory limit
  • Windows:修复了在返回错误 moby/moby#42613 时容器未停止的情况HcsShutdownComputeSystemERROR_PROC_NOT_FOUND

  • 修复了由于 节点无法清理其旧的负载均衡器 IP moby/moby#42538
  • 修复日志代理中的死锁(“dispatcher 已停止”)moby/moby#42537

包装

已知问题

此版本的 static 包附带的二进制不是 静态链接,并且不会在使用 alpine 作为基础的 Docker 镜像中运行 镜像。用户可以安装该软件包,也可以下载以前的 版本作为解决方法。请参阅 containerd 票据 有关此问题的更多详细信息,请访问:containerd/containerd#5824ctrlibc6-compatctr

20.10.7

2021-06-02

客户

  • 禁止显示已弃用的 cgroups 的警告 docker/cli#3099
  • 阻止向 Linux 和 macOS 上的容器发送信号。Go 运行时 (从 Go 1.14 开始)在内部使用信号作为中断 支持抢占式 syscall。在附加了 Docker CLI 的情况下 发送到容器时,这些中断被转发到容器。此修复 更改 Docker CLI 以忽略信号 docker/cli#3107moby/moby#42421SIGURGSIGURGSIGURG

建筑工人

  • 将 BuildKit 更新到版本 v0.8.3-3-g244e8cde moby/moby#42448
    • 转换 executor 中 exec 挂载的相对挂载点以解决此问题 Runc v1.0.0-rc94 及更高版本中的重大更改。moby/buildkit#2137
    • 添加对镜像推送 5xx 错误重试。moby/buildkit#2043 中。
    • 修复了在重命名使用 带有通配符的命令。请注意,此更改会使 使用通配符的 copy 命令的现有构建缓存。moby/buildkit#2018 中。COPY
    • 修复在使用 mounts moby/buildkit 时 build-cache 不失效的问题#2076
  • 修复在使用旧版 Schema 1 镜像 moby/moby 时未缓存镜像时构建失败的问题 #42382FROM

伐木

  • 更新 hcsshim SDK,使 Windows 上的守护程序日志不那么冗长 moby/moby#42292

无根

联网

  • 更新 libnetwork 以修复具有内核引导的环境上的发布端口 参数,并修复导致内部 DNS 查找的死锁 使 moby/moby#42413 失败。ipv6.disable=1

贡献

  • 更新 rootlesskit 到 v0.14.2 以修复启动 userland 代理时超时的问题 使用端口驱动程序 moby/moby#42294slirp4netns
  • 修复在无根 docker 上运行 docker-in-docker 时出现的 “Device or resource busy” 错误 守护进程 Moby/Moby#42342

包装

20.10.6

2021-04-12

客户

  • Apple Silicon (darwin/arm64) 对 Docker CLI 的支持 docker/cli #3042
  • config:回退到 v1.7.0 之前的配置文件时打印弃用警告。在未来的版本中将删除对此文件的支持 docker/cli#3000~/.dockercfg

建筑工人

伐木

联网

  • 修复 docker 20.10 中的回归问题,导致在映射端口 moby/moby 时默认不再绑定 IPv6 地址#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

包装

插件

无根

20.10.5

2021-03-02

客户

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。要清理旧状态,请运行 moby/moby#42065builder prune
  • 修复并行拉取同步回归 moby/moby#42049
  • 确保 libnetwork state 文件不会泄漏 moby/moby#41972

客户

运行

记录

无根

  • 通过将 systemd KillMode 设置为 mixed moby/moby 来防止服务在停止时挂起#41956
  • dockerd-rootless.sh:添加拼写错误守卫 MOBY/MOBY#42070
  • 将 rootlesskit 更新到 v0.13.1 以修复 IPv6 地址 moby/moby 的处理 #42025
  • 允许在 userns moby/moby 内 mknodding FIFO#41957

安全

20.10.3

2021-02-01

安全

  • CVE-2021-21285漏洞防止无效镜像使 docker 守护进程崩溃
  • CVE-2021-21284漏洞锁定文件权限以防止重新映射的 root 访问 docker 状态
  • 确保在使用 BuildKit 构建时应用 AppArmor 和 SELinux 配置文件

客户

20.10.2

2021-01-04

运行

联网

包装

20.10.1

2020-12-14

建筑工人

包装

20.10.0

2020-12-08

弃用 / 移除

有关所有已弃用功能的概述,请参阅 已弃用的引擎功能页面。

应用程序接口

  • 将 API 版本更新到 v1.41
  • 不需要对指标进行“实验性”API moby/moby#40427
  • GET /events现在在修剪资源完成后返回事件 moby/moby#41259prune
    • 为 、 、 和 返回 Prune 事件,并具有一个属性,指示回收的空间量(以字节为单位)containernetworkvolumeimagebuilderreclaimed
  • 添加 stats 选项以不启动 stats moby/moby#40478one-shot
  • 将操作系统版本信息添加到系统信息的 API () moby/moby#38349/info
  • 将 DefaultAddressPools 添加到 docker info moby/moby #40714
  • 在 moby/moby 服务上添加对 PidsLimit 的 API 支持#39882

建筑工人

客户

伐木

运行

联网

包装

无根

安全