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 日志的问题。白鲸/白鲸#37819 白鲸/白鲸#38859
联网
- 防止在连接到已禁用联网的容器的网络上出现紧急情况。白鲸/白鲸 #39589
- 修复应用程序 service port 随机不可用的问题。docker/lib网络#2069
- 修复清理
--config-only
网络--config-from
networks已异常退出。docker/lib网络#2373
运行
- 更新到 Go 1.11.13。
- 修复了在为容器使用 XFS 磁盘配额时可能出现的引擎崩溃问题。白鲸/白鲸#39644
群
- 修复“grpc: received message larger than max”错误。白鲸/白鲸#39306
- 修复了无法删除多个任务节点的问题。docker/swarmkit #2867
18.09.8
2019-07-17
运行
- 在调试模式下运行 Docker Engine 时屏蔽更新到日志文件的密钥。CVE-2019-13509:如果 Docker 引擎在调试模式下运行,并且
docker stack deploy
用于重新部署包含非外部 Secret 的堆栈,则日志将包含该 Secret。
客户
- 修复了
parallelism
和max_failure_ratio
领域。
已知问题
- 升级过程有一些重要的更改,如果未正确遵循这些更改,可能会影响升级期间在 Swarm 上运行的应用程序的可用性。这些限制会影响从 18.09 之前的任何版本到 18.09 或更高版本的任何升级。
18.09.7
2019-06-27
建筑工人
- 修复了构建仅包含注释的 dockerfile 时出现的 panic 错误。白鲸/白鲸 #38487
- 添加了 GCR 身份验证问题的解决方法。白鲸/白鲸#38246
- builder-next:修复了 GCR 令牌缓存实现解决方法中的一个错误。白鲸/白鲸#39183
联网
- 修复了
--network-rm
将无法删除网络。白鲸/白鲸 #39174
运行
- 在 aufs 和层存储中添加了性能优化,有助于创建和删除大规模并行容器。白鲸/白鲸 #39107, 白鲸/白鲸 #39135
- 将 containerd 更新到版本 1.2.6。白鲸/白鲸#39016
- 修复 CVE-2018-15664 通过目录遍历进行 symlink-exchange 攻击。白鲸/白鲸#39357
- Windows:修复了对
docker service create --limit-cpu
.白鲸/白鲸#39190 - 守护进程:修复了镜像验证问题。白鲸/白鲸#38991
- Docker 不再支持对 ID 映射中的 UID 和 GID 范围进行排序。白鲸/白鲸 #39288
伐木
- 添加了一个修复,现在允许 Logger 插件使用大型日志行。白鲸/白鲸#39038
已知问题
- 升级过程有一些重要的更改,如果未正确遵循这些更改,可能会影响升级期间在 Swarm 上运行的应用程序的可用性。这些限制会影响从 18.09 之前的任何版本到 18.09 或更高版本的任何升级。
18.09.6
2019-05-06
建筑工人
- 固定
COPY
和ADD
具有多个<src>
在以下情况下不使缓存失效DOCKER_BUILDKIT=1
.白鲸/白鲸 #38964
联网
- 在代理关闭时清理集群提供程序。docker/lib网络#2354
- Windows:如果用户未指定主机端口,现在会选择随机主机端口。docker/lib网络#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 协程泄漏。docker/cli 的 #1795
- 修复了用于跟踪部署的 stack informer 选择器。docker/cli #1794
联网
- 固定
network=host
用错了resolv.conf
跟systemd-resolved
.docker/engine#180 - 修复了 Windows ARP 条目在负载下随机损坏的问题。docker/engine的 #192
运行
- 现在,将重启策略的已停止容器显示为
Restarting
.docker/engine#181 - 现在对 exec 使用原始流程规范。docker/engine的 #178
群模式
- 修复删除节点时任务资源泄漏的问题。docker/engine#185
已知问题
- 升级过程有一些重要的更改,如果未正确遵循这些更改,可能会影响升级期间在 Swarm 上运行的应用程序的可用性。这些限制会影响从 18.09 之前的任何版本到 18.09 或更高版本的任何升级。
18.09.4
2019-03-28
建筑工人
- 修复了 CVE-2019-13139,添加了对
git ref
以避免误解为标志。白鲸/白鲸#38944
运行
- 固定
docker cp
文件名大于 100 个字符时出错。白鲸/白鲸 #38634 - 固定
layer/layer_store
确保NewInputTarStream
资源被释放。白鲸/白鲸 #38413 - 提高了 的 GRPC 限制
GetConfigs
.白鲸/白鲸 #38800 - 更新
containerd
1.2.5. docker/engine的漏洞#173
群模式
- 修复了将节点加入 swarm 时出现的 nil 指针异常。白鲸/白鲸#38618
- 修复了在设置了 http 代理的情况下,swarm 节点无法作为主节点加入的问题。[白鲸/白鲸 #36951]
已知问题
- 升级过程有一些重要的更改,如果未正确遵循这些更改,可能会影响升级期间在 Swarm 上运行的应用程序的可用性。这些限制会影响从 18.09 之前的任何版本到 18.09 或更高版本的任何升级。
18.09.3
2019-02-28
网络修复
- Windows:现在避免重新生成网络 ID,以防止对网络的引用断开。docker/engine 插件 #149
- Windows:修复了要解决的问题
- restart always
指定网络时,独立容器上的标志不起作用。(docker/escalation #1037) - 修复了在管理器未连接到覆盖网络时从 networkdb 解决 IPAM 状态的问题。(docker/escalation #1049)
运行时修复和更新
- 更新至 Go 版本 1.10.8。
- 在容器名称生成器中修改了名称。docker/engine的 #159
- 复制现有文件夹时,当目标文件系统不支持 xattr 时,xattr set 错误现在会被忽略。docker/engine#135
- Graphdriver:修复了如果设置了 “character-device” 位,则无法检测到 “device” 模式的问题。docker/engine#160
- 修复了无法连接到 containerd 时的 nil 指针取消引用问题。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 之间的交互,您将无法启动容器。
运行以下命令以获取MountFlags
属性的docker.service
:
$ sudo systemctl show --property=MountFlags docker.service
MountFlags=
如果此命令打印MountFlags
,然后重新启动 Docker 服务。
安全修复
- 将 Go 语言升级到 1.10.6 以解决 CVE-2018-16873、CVE-2018-16874 和 CVE-2018-16875。
- 修复了用于 0 长度内容和路径验证的 authz 插件。
- 添加
/proc/asound
到掩码路径 docker/engine#126
改进
- 更新至 BuildKit 0.3.3 docker/engine#122
- 更新到 containerd 1.2.2 docker/engine#144
- 为使用已弃用的旧版 overlay 和 devicemapper 存储驱动程序 docker/engine#85 提供了额外的警告
- prune:在构建缓存之前进行镜像修剪 docker/cli #1532
- 为实验性 CLI 命令(清单)docker/cli 添加了 bash 补全 docker#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 在过滤器 docker/engine#122 之前不接受的问题
- 避免在
containerd
docker/engine的 #122 - 修复 Debian docker/engine 的 iptables 兼容性#107
- 修复将 docker 主机 docker/cli 的默认 schema 设置为 tcp 的问题 #1454
- 修复了 的 bash 完成
service update --force
docker/cli 的 #1526 - Windows: 清理 docker/engine#113 时尝试 DetachVhd
- API:正确处理无效的 JSON 以返回 400 状态 docker/engine#110
- API:忽略 API < 1.39 的默认 address-pools docker/engine#118
- API:在 swagger docker/engine#119 中添加缺失的默认地址池字段
- awslogs:限制 docker/engine#112 中考虑 UTF-8 规范化
- 禁止在 HTTP 错误响应中读取超过 1MB 的 docker/engine#114
- AppArmor:允许接收来自
docker kill
docker/engine#116 - overlay2: 尽可能使用 index=off (修复挂载时的 EBUSY) docker/engine#84
包装
- 为 docker.service 添加 docker.socket 要求。docker/docker-ce-packaging的 #276
- 为基于 RHEL 的发行版添加套接字激活。docker/docker-ce-packaging的 #274
- 为 RPM 软件包添加 libseccomp 要求。docker/docker-ce-packaging的 #266
已知问题
- 从 18.09.0 升级到 18.09.1 时,
containerd
未在 Ubuntu 上升级到正确的版本。 - 升级过程有一些重要的更改,如果未正确遵循这些更改,可能会影响升级期间在 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 之间的交互,您将无法启动容器。
运行以下命令以获取MountFlags
属性的docker.service
:
$ sudo systemctl show --property=MountFlags docker.service
MountFlags=
如果此命令打印MountFlags
,然后重新启动 Docker 服务。
新功能
- 将 API 版本更新为 1.39 moby/moby#37640
- 新增支持使用 SSH docker/cli 进行远程连接 #1014
- 生成器:向 API moby/moby 添加了 prune 选项 #37651
- 添加了 “警告”
/info
endpoint,并将检测移至守护进程 moby/moby#37502 - 允许 BuildKit 构建在未启用实验模式的情况下运行。现在可以在 daemon.json moby/moby#37593、moby/moby#37686、moby/moby#37692、docker/cli#1303、docker/cli#1275 中配置一个选项
- 添加了对使用
--secret
flag 的问题 #1288 - 添加了 SSH 代理套接字转发器 (
docker build --ssh $SSHMOUNTID=$SSH_AUTH_SOCK
) 在使用 BuildKit docker/cli#1438 / docker/cli#1419 时 - 添加
--chown
flag 支持ADD
和COPY
Windows moby/moby 上的命令 #35521 - 添加
builder prune
子命令修剪 BuildKit 构建缓存 docker/cli#1295 docker/cli#1334 - BuildKit:为 BuildKit 构建缓存 docker/engine#59 / moby/moby#37846 添加可配置的垃圾回收策略
- BuildKit:添加了对
docker build --pull ...
使用 BuildKit moby/moby 时#37613 - BuildKit:在使用 BuildKit docker/engine#59 / moby/moby#37852 时添加支持或“registry-mirrors”和“insecure-registries”
- BuildKit:启用 net 模式和 bridge。白鲸/白鲸#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
终点出实验。白鲸/白鲸#40028
改进
- 不返回”
<unknown>
“ 在 /info 响应 moby/moby#37472 中 - BuildKit:更改
--console=[auto,false,true]
自--progress=[auto,plain,tty]
docker/cli 的 #1276 - BuildKit:设置 BuildKit 的 ExportedProduct 变量,以便在将来显示有用的错误。白鲸/白鲸#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 完成脚本
- 将 log 级别传递给 containerd。白鲸/白鲸#37419
- 在东西向叠加负载均衡中使用直接服务器返回 (DSR) docker/engine#93 / docker/libnetwork#2270
- Builder:使用 buildkit 时暂时禁用 Bridge 网络。白鲸/白鲸#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 Binaries的“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 构建Binaries docker-ce-packaging#181
- 删除
-ce
来自版本字符串 docker-ce-packaging#206 的后缀
修复
- BuildKit:不取消 buildkit 状态请求。白鲸/白鲸 #37597
- 修复 docker build moby/moby 期间缺少 build args 时不显示错误的问题#37396
- 修复添加 8GB 文件时出现 moby/moby 时出现的 “unexpected EOF” 错误 #37771
- LCOW:确保平台上填充
COPY
/ADD
.白鲸/白鲸#37563 - 修复将一系列主机端口映射到单个容器端口 docker/cli#1102
- 修复
trust inspect
错别字: ”AdminstrativeKeys
" docker/cli #1300 - 修复了导入不存在的变量和没有名称的变量的环境文件解析问题。docker/cli #1019 命令
- 修复了运行时可能出现的“内存不足异常”
docker image prune
包含大量悬空镜像 docker/cli#1432 / docker/cli#1423 - 修复 Windows moby/moby 上 ConEmu 和 ConsoleZ 中的管道处理#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:添加
--platform
自docker import
docker/cli #1375 / docker/cli #1371 - LCOW:在 Windows moby/moby 上默认添加 LinuxMetadata 支持 #37514
- LCOW:挂载到较短的容器路径以避免命令行长度限制 moby/moby#37659
- LCOW:修复使用错误缓存层的生成器 moby/moby#37356
- 修复了使用
--follow
docker/engine#48 moby/moby#37576 moby/moby#37734 - 修复了在 kqueue moby/moby 上关闭 watcher 时可能出现的死锁#37392
- 使用基于 poller 的观察程序解决 Windows moby/moby 中的文件缓存问题 #37412
- 通过向网络层 moby/moby 提供适当的 resolv.conf 来处理 systemd-resolved 的情况#37485
- 删除对 TLS < 1.2 moby/moby 的支持#37660
- Seccomp:将链接到 的系统调用列入白名单
CAP_SYS_NICE
在默认的 seccomp 配置文件 moby/moby#37242 中 - Seccomp:移动要由
CAP_SYS_ADMIN
或CAP_SYSLOG
docker/engine#64 / moby/moby#37929 - SELinux:修复在支持 selinux 的系统上通过 Mounts API 指定的本地卷的重新标签 moby/moby#37739
- 如果可以通过不安全的连接 moby/moby 访问 REST API,则添加警告#37684
- 当显示在系统信息 docker/engine#72 / moby/moby#37934 中时,屏蔽 URL 中的代理凭证
- 修复 btrfs docker/engine#86 / moby/moby#38026 的挂载传播
- 修复节点分配中的 nil 指针解引用 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 VM 中发布 swarm 端口时不会响应。这在 macOS 和 Windows 10 上发生,使用 docker-machine 版本 0.15 和 0.16。
以下内容
docker run
命令有效,允许从 Host Browser 访问:docker run -d -p 4000:80 nginx
但是,以下内容
docker service
命令失败,导致 curl/chrome 无法连接(连接被拒绝):docker service create -p 5000:80 nginx
使用 docker-machine 置备 18.09.0 云虚拟机时,此问题并不明显。
解决方法:
- 使用不依赖 boot2docker 的云 VM。
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。