Docker Engine 19.03 发行说明
19.03.15
2021-02-01
安全性
- CVE-2021-21285 防止无效镜像导致 docker 守护程序崩溃
- CVE-2021-21284 锁定文件权限,防止重新映射的根用户访问 docker 状态
- 确保在使用 BuildKit 构建时应用 AppArmor 和 SELinux 配置文件
客户端
- 在导入上下文之前检查上下文,以降低提取文件逃逸上下文存储的风险
19.03.14
2020-12-01
安全性
- CVE-2020-15257:将 containerd 捆绑静态二进制文件更新到 v1.3.9 moby/moby#41731。包管理器应更新 containerd.io 包。
构建器
- AppArmor 的 Beta 版本现在可以正确解析,防止构建失败 moby/moby#41542
网络
- 修复 swarmkit 服务启动失败时发生的崩溃 moby/moby#41635
运行时
- 返回正确的错误,而不是虚假的 -EINVAL moby/moby#41293
无根模式
- 锁定状态目录,防止 systemd-tmpfiles 自动清理 moby/moby#41635
- dockerd-rootless.sh:支持新的 containerd shim socket 路径约定 moby/moby#41557
日志记录
- gcplogs:修复内存/连接泄漏 moby/moby#41522
- awslogs:支持 AWS imdsv2 moby/moby#41494
19.03.13
2020-09-16
构建器
- buildkit:修复缓存逻辑中的空指针解引用 moby/moby#41279
- buildkit:在 COPY/ADD 期间将 Unix socket 视为常规文件 moby/moby#41269
- buildkit:忽略计算中的系统和安全 xattr,以确保 COPY 缓存在 SELinux 环境下保持一致 moby/moby#41222
- buildkit:使
--cache-from行为更可靠 moby/moby#41222 - buildkit:修复导出缓存时导致 CPU 占用率高的无限循环 moby/moby#41185
客户端
- 将 Golang 版本提升至 1.13.15 docker/cli#2674
- 修复配置文件权限问题 (~/.docker/config.json) docker/cli#2631
- build:修复终端高度为零时发生的崩溃 docker/cli#2719
- windows:修复控制台中换行符的潜在问题 docker/cli#2623
网络
- 在失败时清理网络沙箱 moby/moby#41081
- 通过将截止日期相关错误转发给用户来修复浅层错误消息 moby/moby#41312
- 修复 netns 文件描述符泄漏 moby/moby#41287
无根模式
- 修复端口转发器资源泄漏 moby/moby#41277
运行时
- 将 Golang 版本提升至 1.13.15 moby/moby#41334
- 更新 containerd 到 1.3.7 moby/moby#40408
Windows
- 修复使用 servercore 镜像时 Windows 容器启动时间缓慢的问题 moby/moby#41192
19.03.12
2020-06-18
客户端
- 修复使用多个配置文件(例如使用 Docker Desktop 时的 Windows 和 WSL2)时阻止从注册表注销的回归问题 docker/cli#2592
- 修复阻止读取上下文元数据的回归问题 docker/cli#2586
- 将 Golang 版本提升至 1.13.12 docker/cli#2575
网络
- 修复在 systemd-nspawn 环境中阻止守护程序启动的回归问题 moby/moby#41124 moby/libnetwork#2567
- 修复在 swarm 中创建覆盖网络的重试逻辑 moby/moby#41124 moby/libnetwork#2565
运行时
- 将 Golang 版本提升至 1.13.12 moby/moby#41082
19.03.11
2020-06-01
网络
禁用 IPv6 路由器广播以防止地址欺骗。 CVE-2020-13401
描述
在 Docker 默认配置中,容器网络接口是连接到主机的虚拟以太网链接(veth 接口)。在此配置中,能够以 root 身份在容器中运行进程的攻击者可以使用 CAP_NET_RAW 能力(默认配置中存在)向主机发送和接收任意数据包。
如果主机上没有完全禁用 IPv6(通过内核 cmdline 上的 ipv6.disable=1),它将在某些接口上未配置或已配置,但 IPv6 转发很可能被禁用,即 /proc/sys/net/ipv6/conf//forwarding == 0。此外,默认情况下,/proc/sys/net/ipv6/conf//accept_ra == 1。这两个 sysctl 的组合意味着主机接受路由器广播并使用它们配置 IPv6 栈。
通过从容器发送“恶意”路由器广播,攻击者可以重新配置主机,将主机部分或全部 IPv6 流量重定向到攻击者控制的容器。
即使之前没有 IPv6 流量,如果 DNS 返回 A (IPv4) 和 AAAA (IPv6) 记录,许多 HTTP 库将尝试首先通过 IPv6 连接,然后回退到 IPv4,这为攻击者提供了响应的机会。如果主机碰巧存在像去年 apt 中的 RCE (CVE-2019-3462) 这样的漏洞,攻击者现在可以升级到主机。
由于 Docker 容器默认不存在 CAP_NET_ADMIN,攻击者无法配置他们想要 MitM 的 IP,他们不能使用 iptables 进行 NAT 或 REDIRECT 流量,也不能使用 IP_TRANSPARENT。然而,攻击者仍然可以使用 CAP_NET_RAW 并在用户空间中实现 tcp/ip 栈。
有关相关问题,请参阅 kubernetes/kubernetes#91507。
19.03.10
2020-05-29
客户端
- 修复与旧引擎的版本协商问题。 docker/cli#2538
- 避免通过主机名设置 SSH 标志。 docker/cli#2560
- 修复 DOCKER_CLI_EXPERIMENTAL 无效时发生的崩溃。 docker/cli#2558
- 通过将 Go 升级到 1.13.11 来避免 s390x 上潜在的崩溃。 docker/cli#2532
网络
- 修复 DNS 回退回归问题。 moby/moby#41009
运行时
- 通过将 Go 升级到 1.13.11 来避免 s390x 上潜在的崩溃。 moby/moby#40978
打包
- 修复 ARM64 上的 ARM 构建。 moby/moby#41027
19.03.9
2020-05-14
构建器
- buildkit:修复并行构建多个镜像时并发 map 写入崩溃。 moby/moby#40780
- buildkit:修复在 userns 启用时阻止在不同阶段之间更改非 root 拥有的文件的所有权的问题。 moby/moby#40955
- 避免在 Windows 上创建不相关的临时文件。 moby/moby#40877
客户端
- 修复单字符卷上的崩溃。 docker/cli#2471
- 延迟守护程序功能检测,以避免简单命令的长时间超时。 docker/cli#2442
- Windows 上的 docker context inspect 现在更快。 docker/cli#2516
- 将 Golang 版本提升至 1.13.10。 docker/cli#2431
- 将 gopkg.in/yaml.v2 提升至 v2.2.8。 docker/cli#2470
日志记录
- 避免因关闭已关闭的日志文件而导致容器日志无法轮转的情况。 moby/moby#40921
网络
- 修复重启时潜在的崩溃。 moby/moby#40809
- 将正确的网络值分配给默认桥接子网字段。 moby/moby#40565
运行时
- 修复在 /etc/subuid 和 /etc/subgid 中使用 UID 创建命名空间时 docker 崩溃。 moby/moby#40562
- 改进 ARM 平台匹配。 moby/moby#40758
- overlay2:显示后端文件系统。 moby/moby#40652
- 将 CRIU 更新到 v3.13 "Silicon Willet"。 moby/moby#40850
- 仅在成功回退时显示注册表 v2 schema1 弃用警告,而不是在任何注册表错误时显示。 moby/moby#40681
- 在 Windows 上对日志文件使用 FILE_SHARE_DELETE。 moby/moby#40563
- 将 Golang 版本提升至 1.13.10。 moby/moby#40803
无根模式
- 现在 rootlesskit-docker-proxy 在暴露特权端口时返回详细错误消息。 moby/moby#40863
- 支持 /etc/subuid 和 /etc/subgid 中的数字 ID。 moby/moby#40951
安全性
- apparmor:添加用户命名空间的缺失规则。 moby/moby#40564
- SElinux:修复重标记时未检测到 ENOTSUP 错误。 moby/moby#40946
Swarm
- 增加日志记录器的填充速率,以避免在服务日志上挂起。 moby/moby#40628
- 修复单个 swarm 管理器在重启后卡在 Down 状态的问题。 moby/moby#40831
- tasks.db 不再无限增长。 moby/moby#40831
19.03.8
2020-03-10
运行时
- 改进 CVE-2019-14271 在某些 nscd 配置下的缓解措施。
19.03.7
2020-03-03
构建器
- builder-next:修复特殊情况下的死锁问题。 moby/moby#40557
运行时
- overlay:移除 modprobe execs。 moby/moby#40462
- selinux:设置文件标签时显示更好的错误消息。 moby/moby#40547
- 加快初始统计信息收集。 moby/moby#40549
- rootless:使用 XDG_CONFIG_HOME 中的 certs.d。 moby/moby#40461
- 将 Golang 版本提升至 1.12.17。 moby/moby#40533
- 将 google.golang.org/grpc 提升至 v1.23.1。 moby/moby#40566
- 将 containerd 二进制文件更新至 v1.2.13。 moby/moby#40540
- 防止在边缘情况下显示停止的容器为运行中。 moby/moby#40555
- 防止潜在的锁定。 moby/moby#40604
客户端
- 将 Golang 版本提升至 1.12.17。 docker/cli#2342
- 将 google.golang.org/grpc 提升至 v1.23.1。 docker/cli#1884 docker/cli#2373
19.03.6
2020-02-12
构建器
- builder-next:允许 SSH 转发使用现代签名哈希。 docker/engine#453
- builder-next:触发后清除 onbuild 规则。 docker/engine#453
- builder-next:修复启用用户名空间时目录权限问题。 moby/moby#40440
- 升级 hcsshim 以修复 Docker build 在 Windows 1903 上失败的问题。 docker/engine#429
网络
- 缩短 exec-root 中的控制器 ID,以避免达到 UNIX_PATH_MAX。 docker/engine#424
- 修复 drivers/overlay/encryption.go 中的崩溃。 docker/engine#424
- 修复我们和 udev 之间的 hwaddr 设置竞争。 docker/engine#439
运行时
- 将 Golang 版本提升至 1.12.16。 moby/moby#40433
- 将 containerd 二进制文件更新至 v1.2.12。 moby/moby#40433
- 更新 runc 至 v1.0.0-rc10。 moby/moby#40433
- 修复 Lgetxattr 中可能的运行时崩溃。 docker/engine#454
- rootless:修复 UDP 数据包代理。 docker/engine#434
19.03.5
2019-11-14
构建器
- builder-next:在 builder config 中添加
entitlements。 docker/engine#412 - 修复 builder-next:使用 userns-remap 时使用构建 secrets 或 ssh 转发的权限错误。 docker/engine#420
- 修复 builder-next:在已复制的目录中复制符号链接。 docker/engine#420
打包
- 支持 RHEL 8 软件包
运行时
- 将 Golang 提升至 1.12.12。 docker/engine#418
- 更新 RootlessKit 至 v0.7.0,以通过 mount 命名空间和 seccomp 强化 slirp4netns。 docker/engine#397
- 修复从事件处理器传播 GetContainer 错误。 docker/engine#407
- 修复 OCI 镜像推送。 docker/engine#405
19.03.4
2019-10-17
网络
- 回滚 libnetwork 更改以修复
DOCKER-USERiptables 链问题。 docker/engine#404
已知问题
现有
- 在某些大型集群环境下,Docker 信息在 Swarm 部分可能包含错误
code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这不表示用户出现任何故障或配置错误,无需响应。 - 当将所有服务重新部署为新服务时,可能会发生编排器端口冲突。由于短时间内存在许多 Swarm 管理器请求,某些服务无法接收流量,并在部署后导致
404错误。- 解决方法:通过
docker service update --force重启所有任务。
- 解决方法:通过
- CVE-2018-15664 目录遍历的符号链接交换攻击。在即将发布的补丁版本中提供适当的修复之前,解决方法是:在进行文件操作之前
docker pause容器。 moby/moby#39252 - 由于 CVE 缓解措施导致的
docker cp回归。当docker cp的源设置为/时会产生错误。
19.03.3
2019-10-08
安全性
- containered 中已修补
runc。 CVE-2017-18367
构建器
修复 builder-next:解决第三方注册表的摘要。 docker/engine#339
修复 builder-next:守护程序通过 socket 激活启动时的用户命名空间构建。 docker/engine#373
修复 builder-next;session:每次连接释放转发的 ssh socket 连接。 docker/engine#373
修复 build-next:llbsolver:多个缓存导入器上的错误。 docker/engine#373
客户端
添加了对 Docker Template 0.1.6 的支持。
缓解具有过多别名的 YAML 文件。 docker/cli#2119
运行时
将 Golang 提升至 1.12.10。 docker/engine#387
将 containerd 提升至 1.2.10。 docker/engine#385
分发:修改拉取 v2 schema1 清单时的警告逻辑。 docker/engine#368
修复提供不正确平台选项时
POST /images/create返回 500 状态码。 docker/engine#365修复提供不正确平台选项时
POST /build返回 500 状态码。 docker/engine#365修复由于结构体成员未对齐导致 32 位 ARMv7 上发生的崩溃。 docker/engine#363
修复链接到不存在的容器时返回“invalid parameter”(无效参数)。 docker/engine#352
修复 overlay2:使用内核 >= 5.2 时挂载时出现 busy 错误。 docker/engine#332
修复
docker rmi在某些配置错误的系统(例如死掉的 NFS 共享)中卡住的问题。 docker/engine#335修复 exec 进程的阻塞 I/O 处理。 docker/engine#296
修复 jsonfile logger:当设置
max-size且max-file=1时,跟踪日志卡住。 docker/engine#378
已知问题
新增
DOCKER-USERiptables 链缺失: docker/for-linux#810。用户无法在此 iptables 链之上执行额外的容器网络流量过滤。如果您没有在DOCKER-USER之上自定义 iptable 链,则不受此问题影响。- 解决方法:在 docker 守护程序启动后插入 iptables 链。例如
iptables -N DOCKER-USER iptables -I FORWARD -j DOCKER-USER iptables -A DOCKER-USER -j RETURN
- 解决方法:在 docker 守护程序启动后插入 iptables 链。例如
现有
- 在某些大型集群环境下,docker 信息在 Swarm 部分可能包含错误
code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这不表示用户出现任何故障或配置错误,无需响应。 - 当将所有服务重新部署为新服务时,可能会发生编排器端口冲突。由于短时间内存在许多 swarm 管理器请求,某些服务无法接收流量,并在部署后导致
404错误。- 解决方法:通过
docker service update --force重启所有任务。
- 解决方法:通过
- CVE-2018-15664 目录遍历的符号链接交换攻击。在即将发布的补丁版本中提供适当的修复之前,解决方法是:在进行文件操作之前
docker pause容器。 moby/moby#39252 - 由于 CVE 缓解措施导致的
docker cp回归。当docker cp的源设置为/时会产生错误。
19.03.2
2019-09-03
构建器
修复
COPY --from到 Windows 上不存在的目录。 moby/moby#39695修复 builder-next:元数据命令在历史记录中没有创建时间。 moby/moby#39456
修复 builder-next:在层导出错误时关闭进度。 moby/moby#39782
将 buildkit 更新至 588c73e1e4。 moby/moby#39781
客户端
修复 Windows 上的非 Windows 绝对路径检测 docker/cli#1990
修复
docker login --username的 zsh 补全脚本。修复上下文:在
context create上生成一致的输出。 docker/cli#1985修复对 HTTP 代理环境变量的支持。 docker/cli#2059
日志记录
- 修复 journald 日志读取问题。 moby/moby#37819 moby/moby#38859
网络
- 防止连接到禁用网络的容器时网络崩溃。 moby/moby#39589
运行时
将 Golang 提升至 1.12.8。
修复使用 XFS 磁盘配额时容器可能发生的引擎崩溃。 moby/moby#39644
Swarm
- 修复具有多个任务的节点无法移除的问题。 docker/swarmkit#2867
已知问题
在某些大型集群环境下,docker 信息在 Swarm 部分可能包含错误
code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这不表示用户出现任何故障或配置错误,无需响应。当将所有服务重新部署为新服务时,可能会发生编排器端口冲突。由于短时间内存在许多 swarm 管理器请求,某些服务无法接收流量,并在部署后导致
404错误。- 解决方法:通过
docker service update --force重启所有任务。
- 解决方法:通过
由于 FORWARD 链中缺少 Iptables 规则,流量无法离开主机。缺少的规则是
/sbin/iptables --wait -C FORWARD -o docker_gwbridge -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT /sbin/iptables --wait -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT- 解决方法:使用脚本和 cron 定义将这些规则添加回去。该脚本必须包含用于检查规则是否存在的“-C”命令和用于添加规则的“-A”命令。以固定的时间间隔(例如,每
分钟)运行该脚本。 - 受影响版本:18.09.1, 19.03.0
- 解决方法:使用脚本和 cron 定义将这些规则添加回去。该脚本必须包含用于检查规则是否存在的“-C”命令和用于添加规则的“-A”命令。以固定的时间间隔(例如,每
CVE-2018-15664 目录遍历的符号链接交换攻击。在即将发布的补丁版本中提供适当的修复之前,解决方法是:在进行文件操作之前
docker pause容器。 moby/moby#39252由于 CVE 缓解措施导致的
docker cp回归。当docker cp的源设置为/时会产生错误。
19.03.1
2019-07-25
安全性
- 修复 Glibc 下 chroot 中基于 nsswitch 配置的加载问题。 CVE-2019-14271
已知问题
在某些大型集群环境下,docker 信息在 Swarm 部分可能包含错误
code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这不表示用户出现任何故障或配置错误,无需响应。当将所有服务重新部署为新服务时,可能会发生编排器端口冲突。由于短时间内存在许多 swarm 管理器请求,某些服务无法接收流量,并在部署后导致
404错误。- 解决方法:通过
docker service update --force重启所有任务。
- 解决方法:通过
由于 FORWARD 链中缺少 Iptables 规则,流量无法离开主机。缺少的规则是
/sbin/iptables --wait -C FORWARD -o docker_gwbridge -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT /sbin/iptables --wait -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT- 解决方法:使用脚本和 cron 定义将这些规则添加回去。该脚本必须包含用于检查规则是否存在的“-C”命令和用于添加规则的“-A”命令。以固定的时间间隔(例如,每
分钟)运行该脚本。 - 受影响版本:18.09.1, 19.03.0
- 解决方法:使用脚本和 cron 定义将这些规则添加回去。该脚本必须包含用于检查规则是否存在的“-C”命令和用于添加规则的“-A”命令。以固定的时间间隔(例如,每
CVE-2018-15664 目录遍历的符号链接交换攻击。在即将发布的补丁版本中提供适当的修复之前,解决方法是:在进行文件操作之前
docker pause容器。 moby/moby#39252由于 CVE 缓解措施导致的
docker cp回归。当docker cp的源设置为/时会产生错误。
19.03.0
2019-07-22
构建器
修复
COPY --from以保留所有权。 moby/moby#38599builder-next
- 添加了内联缓存支持
--cache-from。 docker/engine#215 - 允许输出配置。 moby/moby#38898
- 修复 gcr 解决方法令牌缓存。 docker/engine#212
- 在下载错误时调用
stopprogress。 docker/engine#215 - Buildkit 现在使用 systemd 的
resolv.conf。 docker/engine#260。 - 现在允许设置 buildkit 输出。 docker/cli#1766
- 查找 Dockerfile 特定的 dockerignore 文件(例如 Dockerfile.dockerignore)以查找忽略的路径。 docker/engine#215
- 自动检测 x86、arm 和 arm64 二进制文件是否可以执行进程。 docker/engine#215
- Buildkit 更新至 1f89ec1。 docker/engine#260
- 默认使用 Dockerfile 前端版本
docker/dockerfile:1.1。 docker/engine#215 - 不再依赖外部镜像进行 COPY/ADD 操作。 docker/engine#215
- 添加了内联缓存支持
客户端
- 添加了
--pids-limit标志到docker update。 docker/cli#1765 - 添加了服务 Systctl 支持。 docker/cli#1754
- 添加了对 compose 文件中
template_driver的支持。 docker/cli#1746 - 添加了对 Windows 的
--device支持。 docker/cli#1606 - 添加了对数据路径端口配置的支持。 docker/cli#1509
- 添加了快速上下文切换:命令。 docker/cli#1501
- 添加了对
--mount type=bind,bind-nonrecursive,...的支持。 docker/cli#1430 - 添加了每个节点的最大副本数。 docker/cli#1612
- 添加了静默拉取镜像的选项。 docker/cli#882
- 添加了单独的
--domainname标志。 docker/cli#1130 - 在
docker stack deploy中添加了对 secret 驱动的支持。 docker/cli#1783 - 增加了将 swarm
Configs用作服务上的CredentialSpecs的能力。 docker/cli#1781 - 添加了
--security-opt systempaths=unconfined支持。 docker/cli#1808 - 添加了用于编写和运行 CLI 插件的基本框架。 docker/cli#1564 docker/cli#1898
- Docker App 版本升级至 v0.8.0。 docker/docker-ce-packaging#341
- 添加了对 Docker buildx 的支持。 docker/docker-ce-packaging#336
- 添加了对 Docker Assemble v0.36.0 的支持。
- 添加了对 Docker Cluster v1.0.0-rc2 的支持。
- 添加了对 Docker Template v0.1.4 的支持。
- 添加了对 Docker Registry v0.1.0-rc1 的支持。
- 将 google.golang.org/grpc 提升至 v1.20.1。 docker/cli#1884
- CLI 更改为将驱动程序特定选项传递给
docker run。 docker/cli#1767 - 将 Golang 提升至 1.12.5。 docker/cli#1875
docker system info输出现在将客户端和守护程序相关信息分开。 docker/cli#1638- (实验性) 在针对 Kubernetes 时,添加了对 compose-files 服务配置中
x-pull-secret: some-pull-secret的支持。 docker/cli#1617 - (实验性) 在针对 Kubernetes 时,添加了对 compose-files 服务配置中
x-pull-policy: <Never|Always|IfNotPresent>的支持。 docker/cli#1617 - cp, save, export:现在防止覆盖不规则文件。 docker/cli#1515
- 现在允许堆栈文件上的 npipe 卷类型。 docker/cli#1195
- 修复了 tty 初始大小错误。 docker/cli#1529
- 修复了标签从环境变量复制值的问题。 docker/cli#1671
API
- API 版本更新至 v1.40。 moby/moby#38089
- 为
/info端点添加了警告,并将检测移至守护程序。 moby/moby#37502 - 为
/_ping端点添加了 HEAD 支持。 moby/moby#38570 - 添加了
Cache-Control头以禁用/_ping端点缓存。 moby/moby#38569 - 将
containerd、runc和docker-init版本添加到/version。 moby/moby#37974 - 添加了未文档化的
/grpc端点并注册了 BuildKit 的控制器。 moby/moby#38990
实验性
- 启用了带 TTY 容器的检查点/恢复。 moby/moby#38405
- LCOW:添加了对内存和 CPU 限制的支持。 moby/moby#37296
- Windows:添加了 ContainerD 运行时。 moby/moby#38541
- Windows:LCOW 现在需要 Windows RS5+。 moby/moby#39108
安全性
- mount:添加了 BindOptions.NonRecursive (API v1.40)。 moby/moby#38003
- seccomp:将
io_pgetevents()列入白名单。 moby/moby#38895 - seccomp:现在允许 4.8+ 内核的
ptrace(2)。 moby/moby#38137
运行时
- 现在允许以非 root 用户身份运行
dockerd(无根模式)。 moby/moby#380050 - 无根:为
lxc-user-nicSUID 二进制文件提供了可选支持。 docker/engine#208 - 将 DeviceRequests 添加到 HostConfig 以支持 NVIDIA GPU。 moby/moby#38828
- 添加了对 Windows 的
--device支持。 moby/moby#37638 - 添加了对 Linux 的
memory.kernelTCP支持。 moby/moby#37043 - Windows 凭据规范现在可以直接传递给引擎。 moby/moby#38777
- 在 docker update 中添加了 pids-limit 支持。 moby/moby#32519
- 添加了对精确能力列表的支持。 moby/moby#38380
- daemon:现在默认使用 'private' ipc 模式。 moby/moby#35621
- daemon:切换到信号量控制的 WaitGroup 以处理启动任务。 moby/moby#38301
- 现在使用
idtools.LookupGroup而不是解析/etc/group文件来获取 docker.sock 所有权,以修复:api.go doesn't respect nsswitch.conf。 moby/moby#38126 - cli:修复了使用多引用过滤器时的图像过滤器。 moby/moby#38171
- 将 Golang 提升至 1.12.5。 docker/engine#209
- 将
containerd提升至 1.2.6。 moby/moby#39016 - 将
runc提升至 1.0.0-rc8,opencontainers/selinux v1.2.2。 docker/engine#210 - 将
google.golang.org/grpc提升至 v1.20.1。 docker/engine#215 - aufs 和层存储性能优化,适用于大规模并行容器创建/删除。 moby/moby#39135 moby/moby#39209
- Root 现在被传递给 chroot 以进行 chroot Tar/Untar (CVE-2018-15664) moby/moby#39292
- 修复
docker --init与 /dev 绑定挂载。 moby/moby#37665 - 现在当设备号大于 255 并使用
--device-read-bps选项时,会获取正确的设备号。 moby/moby#39212 - 修复了路径明确存在时出现“Path does not exist”错误。 moby/moby#39251
网络
- IPVLAN 驱动已移出实验性。 moby/moby#38983
- 添加了对 'dangling' 过滤器的支持。 moby/moby#31551 docker/libnetwork#2230
- 当服务使用
--network-rm更新时,负载均衡器沙箱现在被删除。 docker/engine#213 - Windows:现在强制将
PortBindings中指定的空 IP 设置为 IPv4zero (0.0.0.0)。 docker/libnetwork#2376
Swarm
- 添加了对每个节点的最大副本数支持。 moby/moby#37940
- 添加了对 Swarmkit 配置中的 GMSA CredentialSpecs 的支持。 moby/moby#38632
- 添加了对服务中 sysctl 选项的支持。 moby/moby#37701
- 添加了对节点标签过滤的支持。 moby/moby#37650
- Windows:在 docker service create + stack yml 中添加了对命名管道挂载的支持。 moby/moby#37400
- 现在支持 VXLAN UDP 端口配置。 moby/moby#38102
- 现在在 Enforcer 中使用服务放置约束。 docker/swarmkit#2857
- 增加了节点和 secrets 的 gRPC 最大接收消息大小。 docker/engine#256
日志记录
- 在 Windows 上启用了 gcplogs 驱动程序。 moby/moby#37717
- 为 RFC5424 syslog 格式添加了零填充。 moby/moby#38335
- 将
IMAGE_NAME属性添加到journald日志事件。 moby/moby#38032
弃用
- 弃用镜像清单 v2 schema1,转而支持 v2 schema2。Docker 的未来版本将完全移除对 v2 schema1 的支持。 moby/moby#39365
- 移除了 v1.10 迁移器。 moby/moby#38265
- 现在在自动选择中跳过已弃用的存储驱动程序。 moby/moby#38019
- 弃用了
aufs存储驱动程序并添加了警告。 moby/moby#38090 - 移除了对 17.09 的支持。
有关已弃用标志和 API 的更多信息,请参阅目标移除日期的 弃用信息。
已知问题
在某些大型集群环境下,docker 信息在 Swarm 部分可能包含错误
code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这不表示用户出现任何故障或配置错误,无需响应。当将所有服务重新部署为新服务时,可能会发生编排器端口冲突。由于短时间内存在许多 swarm 管理器请求,某些服务无法接收流量,并在部署后导致
404错误。- 解决方法:通过
docker service update --force重启所有任务。
- 解决方法:通过
由于 FORWARD 链中缺少 Iptables 规则,流量无法离开主机。缺少的规则是
/sbin/iptables --wait -C FORWARD -o docker_gwbridge -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT /sbin/iptables --wait -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT- 解决方法:使用脚本和 cron 定义将这些规则添加回去。该脚本必须包含用于检查规则是否存在的“-C”命令和用于添加规则的“-A”命令。以固定的时间间隔(例如,每
分钟)运行该脚本。 - 受影响版本:18.09.1, 19.03.0
- 解决方法:使用脚本和 cron 定义将这些规则添加回去。该脚本必须包含用于检查规则是否存在的“-C”命令和用于添加规则的“-A”命令。以固定的时间间隔(例如,每
CVE-2018-15664 目录遍历的符号链接交换攻击。在即将发布的补丁版本中提供适当的修复之前,解决方法是:在进行文件操作之前
docker pause容器。 moby/moby#39252由于 CVE 缓解措施导致的
docker cp回归。当docker cp的源设置为/时会产生错误。