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 上使用 通过使用xt_bpfkernel 模块。
    • 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 和一些小错误修复和增强功能。

更新

错误修复和增强功能

  • 修复docker build在使用--add-host=host.docker.internal:host-gateway启用 BuildKit moby/moby#44650

  • 将 seccomp: block 套接字调用还原为AF_VSOCK在默认配置文件 moby/moby#44712 中。

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

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

    未来版本,将过滤AF_VSOCK.需要允许容器的用户 通过 unnamespacedAF_VSOCK将需要关闭 seccomp 限制或设置自定义 secComp 配置文件。

20.10.22

2022-12-16

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

更新

错误修复和增强功能

  • 改进了尝试提取不受支持的镜像格式或 OCI 对象 moby/moby#44413moby/moby#44569 时的错误消息。
  • 修复了在为容器 moby/moby 选择随机端口时忽略主机的临时端口范围的问题#44476
  • 修复ssh: parse error in message type 27错误docker build在使用 OpenSSH 8.9 或更高版本的主机上 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) 的软件包。
  • 添加对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
  • 修复Invalid standard handle identifier在 Windows moby/moby 上从旧版 CLI 将 Docker Engine 注册为服务时出现 panic#44326
  • 修复在 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+protocol://). 由于该漏洞仍可能被手动运行交互的 Git 命令所利用 with 和 check out 子模块,用户应立即升级到 Git 来防范此漏洞。更多详细信息可从 GitHub 获取 博客(“Git 安全漏洞已公布”)。

更新

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

错误修复和增强功能

20.10.19

2022-10-14

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

更新

错误修复和增强功能

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

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 修复了docker stats使用 containerd 1.5 及更高版本时, 并更新了 Go 运行时以包含 CVE-2022-29526 的修复程序。

更新

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

错误修复和增强功能

20.10.15

2022-05-05

此版本的 Docker Engine 附带了compose,buildx,containerdrunc组件,以及一些小错误修复。

更新

  • 将 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.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 包含一些 bug 修复和打包更改, 对docker scandocker buildxcommands,则是 Go 运行时以及containerd.io运行。 与此版本一起,我们现在还提供.deb.rpm软件包 Docker Compose V2,可以使用(可选)docker-compose-plugin包。

新增功能

  • 提供.deb.rpmDocker Compose V2 的软件包。Docker Compose v2.3.3 现在可以在 Linux 上安装,使用docker-compose-plugin软件包,其中 提供docker compose子命令。The Docker Compose 插件也可以独立安装和运行,以用作直接替代品 为docker-compose(Docker Compose V1)docker/docker-ce-packaging#638 的 这compose-cli-pluginpackage 也可以在旧版本的 Docker 上使用 支持 CLI 插件的 CLI(Docker CLI 18.09 及更高版本)。
  • 为即将推出的 Ubuntu 22.04 “Jammy Jellyfish” LTS 版本 docker/docker-ce-packaging#645docker/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” 日志记录驱动程序与生成 大量日志消息 moby/moby#43165

20.10.12

2021-12-13

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

注意

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

docker scan功能作为单独的包提供,并且根据您的 升级或安装方法,“docker scan”可能不会自动更新为 最新版本。使用以下说明进行更新docker scan查看最新信息 版本。您还可以使用这些说明来安装或升级docker scan软件包中,而不升级 Docker Engine:

upper.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 scan升级到 v0.12.0
  • 更新docker buildxv0.7.1
  • 将 Golang 运行时更新到 Go 1.16.12。

20.10.11

2021-11-17

重要

由于 Go 1.16 中的 net/http 更改,通过$HTTP_PROXY环境变量不再用于 TLS (https://) 连接。确保你还设置了$HTTPS_PROXY环境变量,用于处理对https://URL 的 URL 中。请参阅 配置守护程序以使用代理 了解如何配置 Docker 守护程序以使用代理服务器。

分配

窗户

包装

20.10.10

2021-10-25

重要

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

建筑工人

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

运行

  • 添加对clone3sys调用以支持运行 基于最新版本的 Fedora 和 Ubuntu 的容器。白鲸/白鲸/#42836
  • Windows:更新 hcsshim 库以修复容器中稀疏文件处理的缺陷 层,该图层由 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_PROXY环境变量不再用于 TLS (https://) 连接。确保你还设置了$HTTPS_PROXY环境变量,用于处理对https://URL 的 URL 中。请参阅 HTTP/HTTPS 代理部分,了解如何配置 Docker 守护程序以使用代理服务器。

客户

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

运行

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

包装

已知问题

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

  • 将 Golang 运行时更新到 Go 1.16.8,其中包含针对 CVE-2021-36221CVE-2021-39293 的修复
  • 将静态Binaries 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_PROXY环境变量不再用于 TLS (https://) 连接。确保你还设置了$HTTPS_PROXY环境变量,用于处理对https://URL 的 URL 中。请参阅 HTTP/HTTPS 代理部分,了解如何配置 Docker 守护程序以使用代理服务器。

折旧

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

客户

无根

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

运行

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

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

包装

已知问题

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

20.10.7

2021-06-02

客户

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

建筑工人

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

伐木

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

无根

联网

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

贡献

  • 更新 rootlesskit 到 v0.14.2 以修复启动 userland 代理时超时的问题 使用slirp4netns端口驱动程序 MOBY/MOBY#42294
  • 修复在无根 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 之前的配置文件时打印弃用警告~/.dockercfg.在未来的版本中将删除对此文件的支持 docker/cli#3000

建筑工人

伐木

联网

  • 修复 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

客户

  • 还原 docker/cli#2960 以修复挂起的问题docker start --attach并删除 spuriousUnsupported 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 prune 白鲸/白鲸#42065
  • 修复并行拉取同步回归 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

安全

  • 修复重启 moby/moby 时 heartbeat 不持久的问题#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 配置文件

客户

20.10.2

2021-01-04

运行

  • 修复在使用 restart 策略恢复容器时守护进程启动挂起,但始终无法启动 moby/moby 的问题#41729
  • overlay2:修复了当 data-root 为 24 字节长时阻止构建或运行容器的 off-by-one 错误 moby/moby#41830
  • systemd:发送sd_notify STOPPING=1关闭 Moby/Moby 时#41832

联网

包装

20.10.1

2020-12-14

建筑工人

包装

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 存储的主机发现和覆盖网络 moby/moby#40614 moby/moby#40510
  • 弃用 Dockerfile 旧版 'ENV name value' 语法,使用ENV name=value而是 docker/cli#2743
  • 删除 API v1.41 及更高版本中已弃用的 “filter” 参数 moby/moby#40491
  • 在推送 moby/moby 时禁用分发清单 v2 架构 1#41295
  • 删除 hack MalformedHostHeaderOverride 破坏旧的 docker 客户端 (<= 1.12),在这种情况下,将DOCKER_API_VERSION 白鲸/白鲸#39076
  • 移除 docker engine 子命令 docker/cli#2207
  • 从 “dab” 文件中删除实验性的 “deploy” docker/cli #2216
  • 移除已弃用docker search --automated--stars标记 docker/cli#2338
  • 不再允许在引擎标签中使用保留命名空间 docker/cli#2326

应用程序接口

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

建筑工人

客户

伐木

运行

联网

包装

无根

安全