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月1日
安全
- CVE-2020-15257: 更新捆绑的静态二进制文件到 containerd v1.3.9 moby/moby#41731. 包管理器应更新 containerd.io 包。
Builder
- 现在正确解析了apparmor的Beta版本,防止构建失败 moby/moby#41542
网络
- 修复当swarmkit服务持续启动失败时的panic问题 moby/moby#41635
运行时
- 返回正确的错误而不是虚假的-EINVAL moby/moby#41293
无根
- 锁定状态目录以防止 systemd-tmpfiles 自动清理 moby/moby#41635
- dockerd-rootless.sh: 支持新的 containerd shim 套接字路径约定 moby/moby#41557
日志记录
- gcplogs: 修复内存/连接泄漏 moby/moby#41522
- awslogs: 支持 AWS imdsv2 moby/moby#41494
19.03.13
2020年9月16日
构建器
- buildkit: 修复缓存逻辑中的空指针解引用 moby/moby#41279
- buildkit: 在COPY/ADD操作中将Unix套接字视为常规文件 moby/moby#41269
- buildkit: 在计算中忽略系统和安全扩展属性,以确保无论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: 修复在高度为零的终端上出现的恐慌 docker/cli#2719
- windows: 修复控制台中换行符的潜在问题 docker/cli#2623
网络
- 在失败时清理网络沙箱 moby/moby#41081
- 通过将截止日期相关的错误转发给用户来修复浅层错误消息 moby/moby#41312
- 修复网络命名空间文件描述符的泄漏 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年6月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在主机上没有被完全禁用(通过内核命令行中的ipv6.disable=1),它可能会在某些接口上未配置或配置,但很可能IPv6转发是禁用的,即/proc/sys/net/ipv6/conf//forwarding == 0。此外,默认情况下,/proc/sys/net/ipv6/conf//accept_ra == 1。这两个sysctls的组合意味着主机接受路由器广告并使用它们配置IPv6堆栈。
通过从容器发送“恶意”路由器广告,攻击者可以重新配置主机,将主机的部分或全部IPv6流量重定向到攻击者控制的容器。
即使之前没有IPv6流量,如果DNS返回A(IPv4)和AAAA(IPv6)记录,许多HTTP库会首先尝试通过IPv6连接,然后回退到IPv4,这为攻击者提供了响应的机会。 如果主机恰好存在像去年apt中的RCE漏洞(CVE-2019-3462),攻击者现在可以升级到主机。
由于Docker容器默认不包含CAP_NET_ADMIN,攻击者无法配置他们想要进行中间人攻击的IP,无法使用iptables进行NAT或REDIRECT流量,也无法使用IP_TRANSPARENT。
然而,攻击者仍然可以使用CAP_NET_RAW并在用户空间实现一个tcp/ip协议栈。
查看 kubernetes/kubernetes#91507 以了解相关问题。
19.03.10
2020年5月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年5月14日
Builder
- buildkit: 修复在并行构建多个镜像时并发映射写入导致的恐慌。 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: 添加缺少的userns规则。 moby/moby#40564
- SElinux: 修复在重新标记时未检测到ENOTSUP错误的问题。 moby/moby#40946
Swarm
- 增加日志记录器的重新填充率,以避免服务日志挂起。 moby/moby#40628
- 修复单个群管理器在重启后卡在Down状态的问题。 moby/moby#40831
- tasks.db 不再无限增长。 moby/moby#40831
19.03.8
2020年3月10日
运行时
- 改进对某些nscd配置的CVE-2019-14271的缓解措施。
19.03.7
2020-03-03
构建器
- builder-next: 修复极端情况下的死锁问题。 moby/moby#40557
运行时
- overlay: 移除 modprobe 执行。 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年2月12日
构建器
- builder-next: 允许现代签名哈希用于SSH转发。 docker/engine#453
- builder-next: 在触发后清除构建规则。 docker/engine#453
- builder-next: 修复了在启用用户命名空间时的目录权限问题。 moby/moby#40440
- 升级hcsshim以修复在Windows 1903上docker构建失败的问题。 docker/engine#429
网络
- 缩短执行根目录中的控制器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二进制文件更新至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: 在构建器配置中添加了
entitlements。 docker/engine#412 - 修复 builder-next:在使用构建密钥或 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
已知问题
Existing
- 在某些大型集群的情况下,Docker信息可能会作为Swarm部分的一部分,包含错误
code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这并不表示用户有任何失败或配置错误,也不需要任何响应。 - 在重新部署所有服务时,可能会出现Orchestrator端口冲突。由于短时间内大量的Swarm管理器请求,一些服务无法接收流量,导致部署后出现
404错误。- 解决方法:通过
docker service update --force重新启动所有任务。
- 解决方法:通过
- CVE-2018-15664 符号链接交换攻击与目录遍历。在即将发布的补丁中提供适当修复之前的临时解决方案:
docker pause容器在进行文件操作之前。 moby/moby#39252 docker cp由于CVE缓解措施导致的回归。当docker cp的源设置为/时,会产生错误。
19.03.3
2019年10月8日
安全
- 修补了containerd中的
runc。 CVE-2017-18367
构建器
修复 builder-next:解决第三方注册表的摘要问题。 docker/engine#339
修复 builder-next:当守护进程通过套接字激活启动时,用户命名空间构建的问题。 docker/engine#373
修复 builder-next;会话:每次连接释放转发的 ssh 套接字连接。 docker/engine#373
修复 build-next: llbsolver: 多个缓存导入器错误。 docker/engine#373
客户端
增加了对Docker模板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上的panic。 docker/engine#363
修复了在链接到不存在的容器时返回“无效参数”的问题。 docker/engine#352
修复 overlay2:当使用内核版本 >= 5.2 时,挂载时出现繁忙错误。 docker/engine#332
修复在某些配置错误的系统中
docker rmi卡住的问题,例如失效的NFS共享。 docker/engine#335修复处理被阻塞的I/O的exec'd进程。 docker/engine#296
修复jsonfile日志记录器:当设置了
max-size并且max-file=1时,日志卡住的问题。 docker/engine#378
已知问题
新
DOCKER-USERiptables 链缺失: docker/for-linux#810. 用户无法在此 iptables 链之上执行额外的容器网络流量过滤。如果您没有在DOCKER-USER之上自定义 iptables 链,则不受此问题影响。- 解决方法: 在 docker 守护进程启动后插入 iptables 链。
例如:
iptables -N DOCKER-USER iptables -I FORWARD -j DOCKER-USER iptables -A DOCKER-USER -j RETURN
- 解决方法: 在 docker 守护进程启动后插入 iptables 链。
例如:
Existing
- 在某些大型集群的情况下,作为Swarm部分的一部分,docker信息可能包含错误
code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这并不表示用户有任何失败或配置错误,也不需要任何响应。 - 在重新部署所有服务时,可能会出现Orchestrator端口冲突。由于短时间内大量的swarm manager请求,一些服务无法接收流量,导致部署后出现
404错误。- 解决方法:通过
docker service update --force重新启动所有任务。
- 解决方法:通过
- CVE-2018-15664 符号链接交换攻击与目录遍历。在即将发布的补丁中提供适当修复之前的临时解决方案:
docker pause容器在进行文件操作之前。 moby/moby#39252 docker cp由于CVE缓解措施导致的回归。当docker cp的源设置为/时,会产生错误。
19.03.2
2019年9月3日
构建器
修复
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
已知问题
在某些大型集群的情况下,作为Swarm部分的一部分,docker信息可能包含错误
code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这并不表示用户有任何失败或配置错误,也不需要任何响应。在重新部署所有服务时,可能会出现Orchestrator端口冲突。由于短时间内大量的swarm manager请求,一些服务无法接收流量,并在部署后导致
404错误。- Workaround: restart all tasks via
docker service update --force.
- Workaround: restart all tasks via
由于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- Workaround: Add these rules back using a script and cron definitions. The script
must contain '-C' commands to check for the presence of a rule and '-A' commands to add
rules back. Run the script on a cron in regular intervals, for example, every
minutes. - Affected versions: 18.09.1, 19.03.0
- Workaround: Add these rules back using a script and cron definitions. The script
must contain '-C' commands to check for the presence of a rule and '-A' commands to add
rules back. Run the script on a cron in regular intervals, for example, every
CVE-2018-15664 符号链接交换攻击与目录遍历。在即将发布的补丁中提供适当修复之前的解决方法:
docker pause容器在进行文件操作之前。 moby/moby#39252docker cp由于CVE缓解措施导致的回归。当docker cp的源设置为/时,会产生错误。
19.03.1
2019年7月25日
安全
- 修复了在Glibc下chroot内基于nsswitch的配置加载问题。 CVE-2019-14271
已知问题
在某些情况下,在大型集群中,作为Swarm部分的一部分,docker信息可能包含错误
code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这并不表示用户有任何故障或配置错误,也不需要任何响应。在重新部署所有服务时,可能会出现Orchestrator端口冲突。由于短时间内大量的swarm manager请求,一些服务无法接收流量,并在部署后导致
404错误。- Workaround: restart all tasks via
docker service update --force.
- Workaround: restart all tasks via
由于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- Workaround: Add these rules back using a script and cron definitions. The script
must contain '-C' commands to check for the presence of a rule and '-A' commands to add
rules back. Run the script on a cron in regular intervals, for example, every
minutes. - Affected versions: 18.09.1, 19.03.0
- Workaround: Add these rules back using a script and cron definitions. The script
must contain '-C' commands to check for the presence of a rule and '-A' commands to add
rules back. Run the script on a cron in regular intervals, for example, every
CVE-2018-15664 符号链接交换攻击与目录遍历。在即将发布的补丁中提供适当修复之前的临时解决方案:
docker pause容器在进行文件操作之前。 moby/moby#39252docker cp由于CVE缓解措施导致的回归。当docker cp的源设置为/时,会产生错误。
19.03.0
2019年7月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
- 添加了内联缓存支持
客户端
- 添加了
--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中添加了对秘密驱动程序的支持。 docker/cli#1783 - 增加了在服务上使用swarm
Configs作为CredentialSpecs的能力。 docker/cli#1781 - 添加了
--security-opt systempaths=unconfined支持。 docker/cli#1808 - 添加了用于编写和运行CLI插件的基本框架。 docker/cli#1564 docker/cli#1898
- 将Docker应用程序升级到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时,添加了对
x-pull-secret: some-pull-secret在compose-files服务配置中的支持。 docker/cli#1617 - (实验性)当目标为Kubernetes时,添加了对
x-pull-policy:的支持 在compose-files服务配置中。 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:
ptrace(2)对于4.8+内核现在允许使用。 moby/moby#38137
运行时
- 现在允许以非root用户身份运行
dockerd(无根模式)。 moby/moby#380050 - 无根模式:可选支持提供了
lxc-user-nicSUID二进制文件。 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更新中添加了pids-limit支持。 moby/moby#32519
- 添加了对确切功能列表的支持。 moby/moby#38380
- 守护进程:现在默认使用'private' IPC模式。 moby/moby#35621
- 守护进程:已切换到信号量门控的WaitGroup用于启动任务。 moby/moby#38301
- 现在使用
idtools.LookupGroup而不是解析/etc/group文件来确定docker.sock的所有权,以修复:api.go不尊重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中指定的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 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的更多信息,请参阅 弃用信息以获取目标移除日期。
已知问题
在某些大型集群的情况下,作为Swarm部分的一部分,docker信息可能包含错误
code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这并不表示用户有任何失败或配置错误,也不需要任何响应。在重新部署所有服务时,可能会出现Orchestrator端口冲突。由于短时间内大量的swarm manager请求,一些服务无法接收流量,并在部署后导致
404错误。- Workaround: restart all tasks via
docker service update --force.
- Workaround: restart all tasks via
由于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- Workaround: Add these rules back using a script and cron definitions. The script
must contain '-C' commands to check for the presence of a rule and '-A' commands to add
rules back. Run the script on a cron in regular intervals, for example, every
minutes. - Affected versions: 18.09.1, 19.03.0
- Workaround: Add these rules back using a script and cron definitions. The script
must contain '-C' commands to check for the presence of a rule and '-A' commands to add
rules back. Run the script on a cron in regular intervals, for example, every
CVE-2018-15664 符号链接交换攻击与目录遍历。在即将发布的补丁中提供适当修复之前的解决方法:
docker pause容器在进行文件操作之前。 moby/moby#39252docker cp由于CVE缓解措施导致的回归。当docker cp的源设置为/时,会产生错误。