Docker Engine 19.03 发行说明
19.03.15
2021-02-01
安全
- CVE-2021-21285 防止无效镜像导致 Docker 守护进程崩溃
- CVE-2021-21284 锁定文件权限以防止重映射的 root 用户访问 Docker 状态
- 在使用 BuildKit 构建时,请确保应用 AppArmor 和 SELinux 配置文件
客户端
- 在导入上下文之前进行检查,以降低提取的文件逃逸上下文存储的风险
19.03.14
2020-12-01
安全
- CVE-2020-15257: 将 containerd 的捆绑静态Binaries更新到 v1.3.9 moby/moby#41731。 包管理器应更新 containerd.io 软件包。
构建器
- AppArmor 的测试版本现在可以正确解析,从而防止构建失败 moby/moby#41542
网络
- 修复当 swarmkit 服务持续启动失败时的 panic 问题 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:在计算中忽略系统和安全扩展属性(xattrs),以确保无论 SELinux 环境如何,COPY 缓存保持一致 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: 修复终端高度为零时的 panic 问题 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)无法从注册表注销的 bug 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(即内核命令行中未设置 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 中的远程代码执行漏洞(CVE-2019-3462),攻击者现在便可利用该漏洞提升至主机权限。
由于 Docker 容器默认不包含 CAP_NET_ADMIN,攻击者无法配置他们想要的中间人(MitM)IP 地址,无法使用 iptables 对流量进行 NAT 或重定向,也无法使用 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 无效时的 panic 问题。 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 写入 panic 问题。 moby/moby#40780
- buildkit:修复了在启用 userns 时,无法在不同阶段之间更改非 root 用户拥有的文件所有权的问题。 moby/moby#40955
- 避免在 Windows 上创建无关的临时文件。
客户端
- 修复单字符卷的 panic 问题。 docker/cli#2471
- 延迟的守护进程特性检测,以避免简单命令出现长时间超时。 docker/cli#2442
- Docker context inspect 在 Windows 上现在更快了。 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:为 userns 添加缺失的规则。 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
运行时
- 改进对某些 nscd 配置的缓解措施: CVE-2019-14271。
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 Binaries更新至 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 以修复在 Windows 1903 上 docker build 失败的问题。 docker/engine#429
网络
- 将 exec-root 中的控制器 ID 缩短,以避免触及 UNIX_PATH_MAX。 docker/engine#424
- 修复 drivers/overlay/encryption.go 中的 panic 问题。 docker/engine#424
- 修复了我们和 udev 之间设置 hwaddr 的竞态条件。 docker/engine#439
运行时
- 升级 Golang 至 1.12.16。 moby/moby#40433
- 将 containerd Binaries更新至 v1.2.12。 moby/moby#40433
- 更新至 runc v1.0.0-rc10。 moby/moby#40433
- 修复 Lgetxattr 中可能的运行时恐慌。 docker/engine#454
- 无根模式:修复 UDP 数据包代理问题。 docker/engine#434
19.03.5
2019-11-14
构建器
- builder-next:在构建器配置中添加了
entitlements。 docker/engine#412 - 修复 builder-next:在使用 build secrets 或 ssh 转发配合 userns-remap 时出现的权限错误。 docker/engine#420
- 修复 builder-next:在已复制的目录中复制符号链接。 docker/engine#420
打包
- 支持 RHEL 8 软件包
运行时
- 将 Golang 升级至 1.12.12。 docker/engine#418
- 将 RootlessKit 更新至 v0.7.0,以通过挂载命名空间和 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 docker cp由于 CVE 修复导致的性能回退。当将docker cp的源设置为/时会产生错误。
19.03.3
2019-10-08
安全
- 已修补
runc个 containerd 漏洞。 CVE-2017-18367
构建器
修复 builder-next:解析第三方注册表的摘要。 docker/engine#339
修复 builder-next:当守护进程通过 socket 激活启动时的用户命名空间构建问题。 docker/engine#373
修复 builder-next;会话:为每个连接转发 SSH 套接字连接。 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
修复了链接到不存在的容器时返回“无效参数”的问题。 docker/engine#352
修复在使用内核 >= 5.2 时挂载 overlay2 出现的 busy 错误。 docker/engine#332
修复在配置错误的系统(例如损坏的 NFS 共享)中卡住的
docker rmi。 docker/engine#335修复已启动进程的阻塞 I/O 处理问题。 docker/engine#296
修复 jsonfile 日志记录器:当设置
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 docker cp由于 CVE 修复导致的性能回退。当将docker cp的源设置为/时会产生错误。
19.03.2
2019-09-03
构建器
修复 Windows 上指向不存在目录的
COPY --from。 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 规则,流量无法从 HOST 流出 缺少的规则为:
/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”命令。以固定间隔在 cron 中运行此脚本,例如每
分钟 。 - 受影响的版本:18.09.1, 19.03.0
- 临时解决方案:使用脚本和 cron 定义重新添加这些规则。该脚本必须包含用于检查规则是否存在“-C”命令以及用于重新添加规则的“-A”命令。以固定间隔在 cron 中运行此脚本,例如每
CVE-2018-15664 带有目录遍历的符号链接交换攻击。在即将发布的补丁版本提供正式修复前的临时解决方案:在执行文件操作之前,先对
docker pause容器进行处理。
moby/moby#39252docker cp由于 CVE 修复导致的性能回退。当将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 规则,流量无法从 HOST 流出 缺少的规则为:
/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”命令。以固定间隔在 cron 中运行此脚本,例如每
分钟 。 - 受影响的版本:18.09.1, 19.03.0
- 临时解决方案:使用脚本和 cron 定义重新添加这些规则。该脚本必须包含用于检查规则是否存在“-C”命令以及用于重新添加规则的“-A”命令。以固定间隔在 cron 中运行此脚本,例如每
CVE-2018-15664 带有目录遍历的符号链接交换攻击。在即将发布的补丁版本提供正式修复前的临时解决方案:在执行文件操作之前,先对
docker pause容器进行处理。
moby/moby#39252docker cp由于 CVE 修复导致的性能回退。当将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 Binaries是否可以执行进程。 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。\ndocker/cli#1765 - 为服务添加了 sysctl 支持。 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中新增了对密钥驱动的支持。 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 模板 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 的控制器。\nmoby/moby#38990\n
实验性
- 启用了带有 TTY 的容器检查点/恢复功能。 moby/moby#38405
- LCOW:新增对内存和 CPU 限制的支持。 moby/moby#37296
- Windows:已添加 ContainerD 运行时。 moby/moby#38541
- Windows:LCOW 现在需要 Windows RS5+。 moby/moby#39108
安全
- 挂载:添加了 BindOptions.NonRecursive(API v1.40)。 moby/moby#38003
- seccomp:白名单
io_pgetevents()。 moby/moby#38895 - seccomp:
ptrace(2)现已允许用于 4.8+ 内核。 moby/moby#38137
运行时
- 现在允许以非 root 用户身份运行
dockerd(Rootless 模式)。 moby/moby#380050 - Rootless:为
lxc-user-nicSUID Binaries提供可选支持。 docker/engine#208 - 向 HostConfig 添加了 DeviceRequests 以支持 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
- demon:现在默认使用 'private' ipc 模式。 moby/moby#35621
- demon: 已切换为使用信号量门控的 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 和 layer store 进行了性能优化,以支持大规模并发的容器创建/删除。 moby/moby#39135 moby/moby#39209
- Root 现在已传递给 chroot 用于 chroot Tar/Untar (CVE-2018-15664) moby/moby#39292
- 修复了与 /dev 绑定挂载相关的
docker --init问题。 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中指定的 nil 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
- 增加了节点和密钥的最大 gRPC 接收消息大小。 docker/engine#256
日志记录
- 在 Windows 上启用了 gcplogs 驱动。 moby/moby#37717
- 为 RFC5424 系统日志格式添加了零填充。 moby/moby#38335
- 为
journald日志事件添加了IMAGE_NAME属性。 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 规则,流量无法从 HOST 流出 缺少的规则为:
/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”命令。以固定间隔在 cron 中运行此脚本,例如每
分钟 。 - 受影响的版本:18.09.1, 19.03.0
- 临时解决方案:使用脚本和 cron 定义重新添加这些规则。该脚本必须包含用于检查规则是否存在“-C”命令以及用于重新添加规则的“-A”命令。以固定间隔在 cron 中运行此脚本,例如每
CVE-2018-15664 带有目录遍历的符号链接交换攻击。在即将发布的补丁版本提供正式修复前的临时解决方案:在执行文件操作之前,先对
docker pause容器进行处理。
moby/moby#39252docker cp由于 CVE 修复导致的性能回退。当将docker cp的源设置为/时会产生错误。