Docker Engine 18.09 发行说明
注意
此版本中,守护进程、客户端和容器运行时现在都以单独的包形式发布。更新时,您需要同时更新所有包才能获取每个包的最新补丁版本。例如,在 Ubuntu 上
$ sudo apt-get install docker-ce docker-ce-cli containerd.io有关详细信息,请参阅相应 Linux 发行版的安装说明。
18.09.9
2019-09-03
客户端
- 修复了在非 Windows 系统上检测 Windows 绝对路径的问题。docker/cli#1990
- 修复了 Docker 在 Windows 上拒绝从 delegation.key 加载密钥的问题。docker/cli#1968
- Bash 和 Zsh 的完成脚本更新。
日志记录
- 修复了读取 journald 日志的问题。moby/moby#37819 moby/moby#38859
网络
- 防止网络连接到禁用网络功能的容器时发生 panic。moby/moby#39589
- 修复了应用程序的服务端口随机不可用的问题。docker/libnetwork#2069
- 修复了在
--config-from网络非正常退出后清理--config-only网络的问题。docker/libnetwork#2373
运行时
- 更新到 Go 1.11.13。
- 修复了在容器中使用 XFS 磁盘配额时可能发生的 engine panic 问题。moby/moby#39644
Swarm
- 修复了“grpc: received message larger than max”错误。moby/moby#39306
- 修复了无法删除几个任务的节点的问题。docker/swarmkit#2867
18.09.8
2019-07-17
运行时
- 在调试模式下运行 Docker Engine 时,更新到日志文件的秘密信息已被掩盖。CVE-2019-13509:如果 Docker Engine 在调试模式下运行,并且使用
docker stack deploy重新部署包含非外部秘密信息的堆栈,则日志中将包含秘密信息。
客户端
- 修复了
parallelism和max_failure_ratio字段的回滚配置类型插值问题。
已知问题
- 升级过程有重要更改,如果未正确遵循,可能会影响升级期间 Swarm 上运行的应用程序的可用性。这些限制影响从 18.09 之前的任何版本升级到 18.09 或更高版本的任何升级。
18.09.7
2019-06-27
构建器
- 修复了构建仅包含注释的 dockerfile 时发生的 panic 错误。moby/moby#38487
- 添加了 GCR 身份验证问题的解决方法。moby/moby#38246
- Builder-next:修复了 GCR 令牌缓存实现解决方法中的一个错误。moby/moby#39183
网络
- 修复了
--network-rm无法删除网络的问题。moby/moby#39174
运行时
- 在 aufs 和层存储中添加了性能优化,有助于大规模并行容器创建和删除。moby/moby#39107, moby/moby#39135
- 将 containerd 更新到版本 1.2.6。moby/moby#39016
- 修复了 CVE-2018-15664 目录遍历的符号链接交换攻击。moby/moby#39357
- Windows:修复了
docker service create --limit-cpu的支持问题。moby/moby#39190 - daemon:修复了镜像验证问题。moby/moby#38991
- Docker 不再支持在 ID 映射中对 UID 和 GID 范围进行排序。moby/moby#39288
日志记录
- 添加了一个修复,现在允许日志插件使用大日志行。moby/moby#39038
已知问题
- 升级过程有重要更改,如果未正确遵循,可能会影响升级期间 Swarm 上运行的应用程序的可用性。这些限制影响从 18.09 之前的任何版本升级到 18.09 或更高版本的任何升级。
18.09.6
2019-05-06
构建器
- 修复了在
DOCKER_BUILDKIT=1时,COPY和ADD与多个不会使缓存失效的问题。moby/moby#38964
网络
- 在代理关闭时清理了集群提供程序。docker/libnetwork#2354
- Windows:现在如果用户未指定主机端口,则选择一个随机主机端口。docker/libnetwork#2369
已知问题
- 升级过程有重要更改,如果未正确遵循,可能会影响升级期间 Swarm 上运行的应用程序的可用性。这些限制影响从 18.09 之前的任何版本升级到 18.09 或更高版本的任何升级。
18.09.5
2019-04-11
构建器
- 修复了
DOCKER_BUILDKIT=1 docker build --squash ..docker/engine#176
客户端
- 修复了 tty 初始大小错误。docker/cli#1775
- 修复了 dial-stdio goroutine 泄漏问题。docker/cli#1795
- 修复了用于跟踪部署的堆栈通知程序的选择器。docker/cli#1794
网络
- 修复了
network=host在使用systemd-resolved时使用错误的resolv.conf问题。docker/engine#180 - 修复了 Windows ARP 条目在负载下随机损坏的问题。docker/engine#192
运行时
- 现在将具有重启策略的已停止容器显示为
Restarting。docker/engine#181 - 现在为 execs 使用原始进程规范。docker/engine#178
Swarm 模式
- 修复了节点删除时任务资源泄漏的问题。docker/engine#185
已知问题
- 升级过程有重要更改,如果未正确遵循,可能会影响升级期间 Swarm 上运行的应用程序的可用性。这些限制影响从 18.09 之前的任何版本升级到 18.09 或更高版本的任何升级。
18.09.4
2019-03-28
构建器
- 通过添加
git ref验证以避免误解为标志,修复了 CVE-2019-13139。moby/moby#38944
运行时
- 修复了文件名超过 100 个字符时
docker cp错误。moby/moby#38634 - 修复了
layer/layer_store以确保NewInputTarStream资源已释放。moby/moby#38413 - 增加了
GetConfigs的 GRPC 限制。moby/moby#38800 - 更新了
containerd1.2.5。docker/engine#173
Swarm 模式
- 修复了加入 swarm 节点时出现空指针异常的问题。moby/moby#38618
- 修复了如果设置了 http 代理,swarm 节点无法作为 master 加入的问题。[moby/moby#36951]
已知问题
- 升级过程有重要更改,如果未正确遵循,可能会影响升级期间 Swarm 上运行的应用程序的可用性。这些限制影响从 18.09 之前的任何版本升级到 18.09 或更高版本的任何升级。
18.09.3
2019-02-28
网络修复
- Windows:现在避免重新生成网络 ID,以防止网络引用损坏。docker/engine#149
- Windows:修复了一个问题,解决了在指定网络时独立容器上的
- restart always标志不起作用的问题。(docker/escalation#1037) - 修复了一个问题,解决了如果管理器未连接到 overlay 网络,则从 networkdb 中获取 IPAM 状态的问题。(docker/escalation#1049)
运行时修复和更新
- 更新到 Go 版本 1.10.8。
- 修改了容器名称生成器中的名称。docker/engine#159
- 复制现有文件夹时,如果目标文件系统不支持 xattr,现在会忽略 xattr 设置错误。docker/engine#135
- Graphdriver:修复了如果设置了“character-device”位则未检测到“device”模式的问题。docker/engine#160
- 修复了连接到 containerd 失败时的空指针解引用问题。docker/engine#162
- 启动失败时删除了过期的 containerd 对象。docker/engine#154
已知问题
- 升级过程有重要更改,如果未正确遵循,可能会影响升级期间 Swarm 上运行的应用程序的可用性。这些限制影响从 18.09 之前的任何版本升级到 18.09 或更高版本的任何升级。
18.09.2
2019-02-11
安全修复
- 更新
runc以解决一个关键漏洞,该漏洞允许特制容器在主机上获得管理权限。CVE-2019-5736 - 使用 3.13 内核的 Ubuntu 14.04 客户将需要升级到受支持的 Ubuntu 4.x 内核
有关更多信息,请参阅 Docker 博客文章。
已知问题
- 升级过程有重要更改,如果未正确遵循,可能会影响升级期间 Swarm 上运行的应用程序的可用性。这些限制影响从 18.09 之前的任何版本升级到 18.09 或更高版本的任何升级。
18.09.1
2019-01-09
此版本的重要说明
在 18.09 之前的 Docker 版本中,containerd 由 Docker 引擎守护进程管理。在 Docker Engine 18.09 中,containerd 由 systemd 管理。由于 containerd 由 systemd 管理,因此对 docker.service systemd 配置的任何自定义配置(例如,MountFlags=slave)都会破坏 Docker Engine 守护进程与 containerd 之间的交互,并且您将无法启动容器。
运行以下命令以获取 docker.service 的 MountFlags 属性的当前值
$ sudo systemctl show --property=MountFlags docker.service
MountFlags=
如果此命令为 MountFlags 打印非空值,请更新您的配置,然后重新启动 docker 服务。
安全修复
- 将 Go 语言升级到 1.10.6 以解决 CVE-2018-16873、CVE-2018-16874 和 CVE-2018-16875。
- 修复了 authz 插件的 0 长度内容和路径验证。
- 将
/proc/asound添加到 masked paths docker/engine#126
改进
- 更新到 BuildKit 0.3.3 docker/engine#122
- 更新到 containerd 1.2.2 docker/engine#144
- 为使用已弃用的传统 overlay 和 devicemapper 存储驱动程序提供了额外警告 docker/engine#85
- prune:在构建缓存 pruning 之前执行镜像 pruning docker/cli#1532
- 为实验性 CLI 命令(manifest)添加了 bash 补全 docker/cli#1542
- Windows:允许在 Windows 10 上进行进程隔离 docker/engine#81
修复
- 在 RHEL/CentOS 上禁用 runc 中的 kmem 记账(docker/escalation#614, docker/escalation#692) docker/engine#121
- 修复了低效的网络配置 docker/engine#123
- 修复了 docker system prune 不接受 until 过滤器的问题 docker/engine#122
- 避免在
containerd中出现未设置的凭据 docker/engine#122 - 修复了 Debian 上的 iptables 兼容性问题 docker/engine#107
- 修复了为 docker 主机设置默认模式为 tcp 的问题 docker/cli#1454
- 修复了
service update --force的 bash 补全问题 docker/cli#1526 - Windows:清理时尝试 DetachVhd docker/engine#113
- API:正确处理无效 JSON 以返回 400 状态 docker/engine#110
- API:忽略 API < 1.39 上的默认地址池 docker/engine#118
- API:向 swagger 添加缺失的默认地址池字段 docker/engine#119
- awslogs:在限制中考虑 UTF-8 规范化 docker/engine#112
- 禁止在 HTTP 错误响应中读取超过 1MB 的内容 docker/engine#114
- apparmor:允许接收来自
docker kill的信号 docker/engine#116 - overlay2:如果可能,使用 index=off(修复挂载时 EBUSY) docker/engine#84
打包
- 添加 docker.socket 对 docker.service 的要求。docker/docker-ce-packaging#276
- 为基于 RHEL 的发行版添加 socket 激活。docker/docker-ce-packaging#274
- 为 RPM 包添加 libseccomp 要求。docker/docker-ce-packaging#266
已知问题
- 从 18.09.0 升级到 18.09.1 时,Ubuntu 上的
containerd未升级到正确版本。 - 升级过程有重要更改,如果未正确遵循,可能会影响升级期间 Swarm 上运行的应用程序的可用性。这些限制影响从 18.09 之前的任何版本升级到 18.09 或更高版本的任何升级。
18.09.0
2018-11-08
此版本的重要说明
在 18.09 之前的 Docker 版本中,containerd 由 Docker 引擎守护进程管理。在 Docker Engine 18.09 中,containerd 由 systemd 管理。由于 containerd 由 systemd 管理,因此对 docker.service systemd 配置的任何自定义配置(例如,MountFlags=slave)都会破坏 Docker Engine 守护进程与 containerd 之间的交互,并且您将无法启动容器。
运行以下命令以获取 docker.service 的 MountFlags 属性的当前值
$ sudo systemctl show --property=MountFlags docker.service
MountFlags=
如果此命令为 MountFlags 打印非空值,请更新您的配置,然后重新启动 docker 服务。
新功能
- API 版本更新到 1.39 moby/moby#37640
- 添加了使用 SSH 进行远程连接的支持 docker/cli#1014
- Builder:为 API 添加了 prune 选项 moby/moby#37651
- 向
/info端点添加了“警告”,并将检测功能移至守护进程 moby/moby#37502 - 允许 BuildKit 构建在未启用实验模式的情况下运行。Buildkit 现在可以使用 daemon.json 中的选项进行配置 moby/moby#37593 moby/moby#37686 moby/moby#37692 docker/cli#1303 docker/cli#1275
- 在使用 BuildKit 时,添加了使用
--secret标志的构建时秘密支持 docker/cli#1288 - 在使用 BuildKit 时,添加了 SSH 代理套接字转发器(
docker build --ssh $SSHMOUNTID=$SSH_AUTH_SOCK) docker/cli#1438 / docker/cli#1419 - Windows:为
ADD和COPY命令添加了--chown标志支持 moby/moby#35521 - 添加了
builder prune子命令以清理 BuildKit 构建缓存 docker/cli#1295 docker/cli#1334 - BuildKit:为 BuildKit 构建缓存添加了可配置的垃圾回收策略 docker/engine#59 / moby/moby#37846
- BuildKit:在使用 BuildKit 时添加了
docker build --pull ...支持 moby/moby#37613 - BuildKit:在使用 BuildKit 时添加了对“registry-mirrors”和“insecure-registries”的支持 docker/engine#59 / moby/moby#37852
- BuildKit:启用了网络模式和桥接。moby/moby#37620
- 添加了
docker engine子命令,用于管理作为特权容器运行在 containerd 之上的 Docker Engine 的生命周期,并允许升级到 Docker Engine Enterprise docker/cli#1260 - 在
docker info输出中公开了产品许可证 docker/cli#1313 - 在
docker info输出中显示了守护进程产生的警告 docker/cli#1225 - 添加了“local”日志驱动程序 moby/moby#37092
- Amazon CloudWatch:添加了
awslogs-endpoint日志选项 moby/moby#37374 - 添加了对全局默认地址池的支持 moby/moby#37558 docker/cli#1233
- 将 containerd 日志级别配置为与 dockerd 相同 moby/moby#37419
- 添加了 cri-containerd 的配置选项 moby/moby#37519
- 更新 containerd 客户端到 v1.2.0-rc.1 moby/moby#37664, docker/engine#75 / moby/moby#37710
- 添加了对全局默认地址池的支持 moby/moby#37558 docker/cli#1233
- 将
POST /session端点从实验性状态移出。moby/moby#40028
改进
- 在 /info 响应中不再返回“
” moby/moby#37472 - BuildKit:将
--console=[auto,false,true]更改为--progress=[auto,plain,tty]docker/cli#1276 - BuildKit:设置 BuildKit 的 ExportedProduct 变量以在未来显示有用的错误。moby/moby#37439
- 当连接到不支持此选项的守护进程时,隐藏
--data-path-addr标志 docker/docker/cli#1240 - 仅当 BuildKit 启用时才显示 BuildKit 特定标志 docker/cli#1438 / docker/cli#1427
- 改进了版本输出对齐 docker/cli#1204
- 按自然顺序对插件名称和网络进行排序 docker/cli#1166, docker/cli#1266
- 更新了 bash 和 zsh 补全脚本
- 将日志级别传递给 containerd。moby/moby#37419
- 在东西向覆盖负载均衡中使用直接服务器返回 (DSR) docker/engine#93 / docker/libnetwork#2270
- Builder:在使用 buildkit 时暂时禁用桥接网络。moby/moby#37691
- 在节点附件准备就绪之前阻止任务启动 moby/moby#37604
- 将提供的外部 CA 证书传播到 swarm 中的外部 CA 对象。docker/cli#1178
- 移除 Ubuntu 14.04 "Trusty Tahr" 作为支持平台 docker-ce-packaging#255 / docker-ce-packaging#254
- 移除 Debian 8 "Jessie" 作为支持平台 docker-ce-packaging#255 / docker-ce-packaging#254
- 移除 containerd 和 runc 二进制文件中的 'docker-' 前缀 docker/engine#61 / moby/moby#37907, docker-ce-packaging#241
- 将“engine”、“cli”和“containerd”拆分为单独的包,并将 containerd 作为单独的 systemd 服务运行 docker-ce-packaging#131, docker-ce-packaging#158
- 使用 Go 1.10.4 构建二进制文件 docker-ce-packaging#181
- 从版本字符串中移除
-ce后缀 docker-ce-packaging#206
修复
- BuildKit:不取消 BuildKit 状态请求。moby/moby#37597
- 修复了 docker build 期间如果缺少构建参数则不显示错误的问题 moby/moby#37396
- 修复了添加 8GB 文件时出现“unexpected EOF”错误的问题 moby/moby#37771
- LCOW:确保
COPY/ADD上填充平台。moby/moby#37563 - 修复了将一系列主机端口映射到单个容器端口的问题 docker/cli#1102
- 修复了
trust inspect中的拼写错误:“AdminstrativeKeys” docker/cli#1300 - 修复了导入缺失变量和无名称变量的环境文件解析问题。docker/cli#1019
- 修复了当使用大量悬空镜像运行
docker image prune时可能发生的“内存不足异常” docker/cli#1432 / docker/cli#1423 - 修复了 Windows 上 ConEmu 和 ConsoleZ 中的管道处理问题 moby/moby#37600
- 修复了 Windows 上长时间启动的问题,使用非 HNS 管理的 Hyper-V 网络 docker/engine#67 / moby/moby#37774
- 修复了当配置文件和 CLI 中都定义了“runtimes”选项时,守护进程无法启动的问题 docker/engine#57 / moby/moby#37871
- 放宽了
/etc/docker目录的权限,以防止在使用docker manifest inspect时出现“权限被拒绝”错误 docker/engine#56 / moby/moby#37847 - 修复了
cpuset-cpus和cpuset-mems中大数字的拒绝服务问题 docker/engine#70 / moby/moby#37967 - LCOW:为
docker import添加--platformdocker/cli#1375 / docker/cli#1371 - LCOW:默认在 Windows 上添加 LinuxMetadata 支持 moby/moby#37514
- LCOW:挂载到短容器路径以避免命令行长度限制 moby/moby#37659
- LCOW:修复 builder 使用错误的缓存层问题 moby/moby#37356
- 修复了使用
--follow时 json-log 文件描述符泄漏的问题 docker/engine#48 moby/moby#37576 moby/moby#37734 - 修复了在 kqueue 上关闭监视器时可能出现的死锁问题 moby/moby#37392
- 使用基于轮询器的监视器来解决 Windows 中的文件缓存问题 moby/moby#37412
- 通过向网络层提供适当的 resolv.conf 来处理 systemd-resolved 情况 moby/moby#37485
- 移除了对 TLS < 1.2 的支持 moby/moby#37660
- Seccomp:在默认 seccomp 配置文件中将与
CAP_SYS_NICE相关的 syscall 列入白名单 moby/moby#37242 - Seccomp:将 syslog syscall 移动到由
CAP_SYS_ADMIN或CAP_SYSLOG控制 docker/engine#64 / moby/moby#37929 - SELinux:修复了在启用 SELinux 的系统上通过 Mounts API 指定的本地卷的重新标记问题 moby/moby#37739
- 如果 REST API 可通过不安全连接访问,则添加警告 moby/moby#37684
- 在系统信息中显示时,从 URL 中掩盖代理凭据 docker/engine#72 / moby/moby#37934
- 修复了 btrfs 的挂载传播问题 docker/engine#86 / moby/moby#38026
- 修复了节点分配中的空指针解引用问题 docker/engine#94 / docker/swarmkit#2764
已知问题
升级过程有重要更改,如果未正确遵循,可能会影响升级期间 Swarm 上运行的应用程序的可用性。这些限制影响从 18.09 之前的任何版本升级到 18.09 或更高版本的任何升级。
使用 https://github.com/boot2docker/boot2docker/releases/download/v18.09.0/boot2docker.iso,来自虚拟机节点的连接被拒绝。在 VirtualBox 创建的 docker-machine 虚拟机中发布的任何 swarm 端口都将无响应。这发生在 macOS 和 Windows 10 上,使用 docker-machine 0.15 和 0.16 版本。
以下
docker run命令有效,允许从主机浏览器访问docker run -d -p 4000:80 nginx但是,以下
docker service命令失败,导致 curl/chrome 无法连接(连接被拒绝)docker service create -p 5000:80 nginx此问题在通过 docker-machine 配置 18.09.0 云虚拟机时并不明显。
解决方法
- 使用不依赖 boot2docker 的云虚拟机。
docker run不受影响。- 对于 Swarm,设置 VIRTUALBOX_BOOT2DOCKER_URL=https://github.com/boot2docker/boot2docker/releases/download/v18.06.1-ce/boot2docker.iso。
此问题在 18.09.1 中已解决。
弃用通知
Docker 已弃用 Device Mapper 作为存储驱动程序。目前仍会支持它,但未来版本中将移除支持。
Overlay2 存储驱动程序现在是 Docker Engine 实现的默认设置。
有关已弃用标志和 API 列表的更多信息,请查看弃用信息,您可以在其中找到目标移除日期。
生命周期结束通知
在此版本中,Docker 还移除了对 TLS < 1.2 moby/moby#37660、Ubuntu 14.04 "Trusty Tahr" docker-ce-packaging#255 / docker-ce-packaging#254 和 Debian 8 "Jessie" docker-ce-packaging#255 / docker-ce-packaging#254 的支持。