Docker 引擎 20.10 发行说明

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

2024年10月20日

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
    • 现在,缺乏对加密覆盖网络的内核支持会报告为错误。
    • 加密的覆盖网络是急切建立的,而不是等待多个节点连接。
    • 现在可以通过使用xt_bpf内核模块在红帽企业 Linux 9 上使用加密的覆盖网络。
    • Swarm 覆盖网络的用户应查看 GHSA-vwm3-crmr-xfxw, 以确保不会发生意外暴露。
  • 将 github.com/containerd/fifo 升级到 v1.1.0 以修复潜在的恐慌 moby/moby#45216
  • 修复已安装的 cli 插件 docker/cli#4091缺少的 Bash 补全。

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:阻止套接字调用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 的更新版本,以及一些小错误修复和增强功能。

更新

错误修复和增强功能

21.10.20

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 Scan 更新到 v0.21.0
  • 将containerd(containerd.io包)更新到 v1.6.9
  • 更新捆绑的 BuildKit 版本以修复output clipped, log limit 1MiB reached错误 moby/moby#44339

错误修复和增强功能

  • --platform删除bash 完成中的 实验门docker/cli#3824
  • 修复在 Windows moby/moby#44326Invalid standard handle identifier上从旧版 CLI 将 Docker 引擎注册为服务时出现的恐慌 。
  • 修复在 Windows moby/moby#44332上在 Cygwin 中运行 Git 命令的问题。

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,图像分辨率通过内容可寻址摘要进行,并且imagetag使用 和 。虽然这是预料之中的,但这可能会导致令人困惑的行为,并且可能会被社会工程利用来运行本地图像存储中已存在的图像。 Docker 现在会检查摘要是否与用于拉取映像的存储库名称匹配,否则将产生错误。
  • 更新了引用的处理image:tag@digest。有关详细信息,请参阅上面的“守护进程”部分。

错误修复和增强功能

2019年10月20日

2022年10月14日

此版本的 Docker Engine 修复了一些错误,并更新了 Docker Compose 版本。

更新

错误修复和增强功能

  • 修复可能导致moby/moby#44122docker builder prune期间 出现恐慌的问题。docker system prune
  • 修复了一个错误,docker volume prune如果守护进程以“实时恢复”运行并重新启动,则使用会删除仍在使用的卷 moby/moby#44238

2018年10月20日

2022-09-09

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

更新

错误修复和增强功能

2017年10月20日

2022-06-06

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

更新

错误修复和增强功能

2016年10月20日

2022-05-12

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

更新

错误修复和增强功能

2015年10月20日

2022-05-05

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

更新

  • 将 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 流和 Fedora 36 的软件包。

已知的问题

2014年10月20日

2022-03-23

此版本的 Docker Engine 更新了容器的默认可继承功能以解决 CVE-2022-24769 问题,还包含新版本的containerd.io运行时来解决同一问题。

更新

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

2013年10月20日

2022-03-10

此版本的 Docker Engine 包含一些错误修复和打包更改、对docker scandocker buildx命令的更新、Go 运行时的更新版本以及containerd.io运行时的新版本。与此版本一起,我们现在还提供Docker Compose V2 的.deb软件包.rpm,可以使用(可选)docker-compose-plugin 软件包安装。

新的

  • 提供Docker Compose V2 的软件包 .debDocker Compose v2.3.3 现在可以使用这些包安装在 Linux 上,该包在 Docker CLI 上提供了子命令。 Docker Compose 插件还可以安装并独立运行,以用作(Docker Compose V1) docker/docker-ce-packaging#638的直接替代品。该软件包还可以在旧版本的 Docker CLI 上使用,支持 CLI 插件(Docker CLI 18.09 及更高版本)。.rpmdocker-compose-plugindocker composedocker-composecompose-cli-plugin
  • 为即将推出的 Ubuntu 22.04“Jammy Jellyfish”LTS 版本 docker/docker-ce-packaging#645docker/containerd-packaging#271提供软件包。

更新

错误修复和增强功能

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

2012年10月20日

2021-12-13

docker scan此版本的 Docker Engine 仅包含打包方面的更改,并提供了和命令的更新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命令检查图像是否容易受到攻击。

包装

  • 更新docker scanv0.12.0
  • 更新docker buildxv0.7.1
  • 将 Golang 运行时更新为 Go 1.16.12。

2011年10月20日

2021-11-17

重要的

由于 Go 1.16中的 net/http 更改,通过环境变量配置的 HTTP 代理不再用于 TLS ( ) 连接。确保您还设置了一个 环境变量来处理 URL 请求。$HTTP_PROXYhttps://$HTTPS_PROXYhttps://

请参阅 HTTP/HTTPS 代理部分 ,了解如何配置 Docker 守护进程以使用代理服务器。

分配

Windows

包装

2010年10月20日

2021-10-25

重要的

由于 Go 1.16中的 net/http 更改,通过环境变量配置的 HTTP 代理不再用于 TLS ( ) 连接。确保您还设置了一个 环境变量来处理 URL 请求。$HTTP_PROXYhttps://$HTTPS_PROXYhttps://

请参阅 HTTP/HTTPS 代理部分 ,了解如何配置 Docker 守护进程以使用代理服务器。

建设者

  • 修复平台匹配逻辑,以修复使用 BuildKit moby/mobydocker build时在 Arm 计算机上的本地图像缓存中找不到图像的问题 #42954

运行

  • 在默认 seccomp 策略中添加对 syscall 的支持clone3,以支持运行基于最新版本的 Fedora 和 Ubuntu 的容器。 莫比/莫比/#42836
  • Windows:更新 hcssshim 库以修复容器层中稀疏文件处理的错误,该错误是由 Windows moby/moby#42944的最新更改暴露的。
  • docker stop修复一些可能永远挂起的 情况moby/moby#42956

一群

包装

  • 添加 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 代理不再用于 TLS ( ) 连接。确保您还设置了一个 环境变量来处理 URL 请求。$HTTP_PROXYhttps://$HTTPS_PROXYhttps://

请参阅 HTTP/HTTPS 代理部分 ,了解如何配置 Docker 守护进程以使用代理服务器。

客户

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

运行

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

包装

已知问题

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

  • 将 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.16中的 net/http 更改,通过环境变量配置的 HTTP 代理不再用于 TLS ( ) 连接。确保您还设置了一个 环境变量来处理 URL 请求。$HTTP_PROXYhttps://$HTTPS_PROXYhttps://

请参阅 HTTP/HTTPS 代理部分 ,了解如何配置 Docker 守护进程以使用代理服务器。

弃用

  • 弃用对加密 TLS 私钥的支持。 RFC 1423 中指定的传统 PEM 加密在设计上是不安全的。由于它不对密文进行身份验证,因此很容易受到填充预言机攻击,从而使攻击者可以恢复明文。对加密 TLS 私钥的支持现已标记为已弃用,并将在即将发布的版本中删除。 泊坞窗/cli#3219
  • 弃用 Kubernetes 堆栈支持。在 Kubernetes 上弃用 Compose 后 ,Docker CLI 中对 Kubernetesstack和命令的支持context现已标记为已弃用,并将在即将发布的版本 docker/cli#3174中删除。

客户

  • 修复Windows docker/cli#3132Invalid standard handle identifier上的错误 。

无根

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

运行

  • --platform当使用选项拉取与指定体系结构不匹配的单体系结构 moby/moby#42633时,打印警告。
  • Your kernel does not support swap memory limit修复使用 cgroups v2 moby/moby#42479运行时的错误警告。
  • HcsShutdownComputeSystem Windows:修复如果返回ERROR_PROC_NOT_FOUND错误 ,容器不会停止的情况moby/moby#42613

一群

包装

已知问题

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

20.10.7

2021-06-02

客户

  • 禁止对已弃用的 cgroup docker/cli#3099发出警告。
  • 防止SIGURG向 Linux 和 macOS 上的容器发送信号。 Go 运行时(从 Go 1.14 开始)SIGURG在内部使用信号作为中断来支持可抢占的系统调用。在 Docker CLI 连接到容器的情况下,这些中断将被转发到容器。此修复更改了 Docker CLI 以忽略SIGURG信号 docker/cli#3107moby/moby#42421

建设者

  • 将 BuildKit 更新到版本 v0.8.3-3-g244e8cde moby/moby#42448
    • 转换执行程序中 exec 挂载的相对挂载点,以解决 runc v1.0.0-rc94 及更高版本中的重大更改。 莫比/buildkit#2137
    • 添加对图像推送 5xx 错误进行重试。 莫比/buildkit#2043
    • COPY修复了重命名使用带有通配符的命令复制的文件时构建缓存不会失效的问题。请注意,此更改会使使用通配符的复制命令的现有构建缓存无效。 莫比/buildkit#2018
    • 修复使用挂载moby/buildkit#2076时构建缓存不会失效的问题 。
  • 修复使用旧模式 1 图像moby/moby#42382FROM时未缓存图像 时的构建失败问题。

记录

  • 更新 hcssshim SDK 以使 Windows 上的守护程序日志更简洁 moby/moby#42292

无根

  • 修复在启用了用户命名空间的守护进程上构建映像时不支持的功能 moby/moby#42352

联网

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

贡献

  • slirp4netns将 rootlesskit 更新到 v0.14.2 以修复使用端口驱动程序 moby/moby#42294启动用户态代理时的超时问题。
  • 修复在无根守护进程 moby/moby#42342上运行 docker-in-docker 时出现“设备或资源繁忙”错误。

包装

20.10.6

2021-04-12

客户

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

建设者

  • 修复经典构建器静默忽略不支持的 Dockerfile 选项并提示启用 BuildKit 而不是 moby/moby#42197

记录

联网

包装

插件

无根

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

客户

  • docker login修复如果不存在配置文件时出现的 恐慌docker/cli#2959
  • 修复WARNING: Error loading config file: .dockercfg: $HOME is not defined docker/cli#2958

运行

记录器

  • labels-regex即使labels未设置, 也尊重配置moby/moby#42046
  • 正确处理长日志消息,防止 awslog 在非阻塞模式下分割大于 16kB 的事件 mobymoby#41975

无根

安全

  • 配置文件:seccomp:更新到 Linux 5.11 系统调用列表 moby/moby#41971

一群

  • 修复重启后心跳不持续的问题 moby/moby#42060
  • 修复潜在的停滞任务 moby/moby#42060
  • 仅当或提供 时修复--update-order和标记docker/cli#2963--rollback-order--update-order--rollback-order
  • 修复docker service rollback在某些情况下返回非零退出代码 docker/cli#2964
  • 修复 docker/cli 上进度条方向不一致的问题docker service rollback #2964

20.10.3

2021-02-01

安全

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

客户

20.10.2

2021-01-04

运行

  • 修复使用重启策略恢复容器时守护进程启动挂起但始终无法启动 moby/moby#41729
  • overlay2:修复当数据根长度为 24 字节时阻止构建或运行容器的离一错误 moby/moby#41830
  • systemd:sd_notify STOPPING=1关闭 moby/moby#41832时发送

联网

一群

  • 修复 moby/moby 的过滤replicated-jobglobal-job服务模式 #41806

包装

20.10.1

2020-12-14

建设者

包装

20.10.0

2020-12-08

弃用/删除

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

应用程序编程接口

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

建设者

客户

记录

  • 支持docker logs使用所有日志记录驱动程序进行读取(尽力而为) moby/moby#40543
  • 添加splunk-index-acknowledgment日志选项以与启用了索引确认的 Splunk HEC 配合使用 moby/moby#39987
  • 将部分元数据添加到日志日志 moby/moby#41407
  • 减少日志文件读取器 moby/moby#40796的分配
  • Fluentd:添加 fluentd-async、fluentd-request-ack 并弃用 fluentd-async-connect moby/moby#39086

运行

联网

包装

无根

安全

一群