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
- 修复清理网络的问题,网络已异常退出。docker/lib网络#2373
--config-only
--config-from
运行
- 更新到 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 引擎在调试模式下运行,并且用于重新部署包含非外部 Secret 的堆栈,则日志中将包含该 Secret。
docker stack deploy
客户
- 修复了 and 字段的回滚配置类型插值。
parallelism
max_failure_ratio
已知问题
- 升级过程有一些重要的更改,如果未正确遵循这些更改,可能会影响升级期间在 Swarm 上运行的应用程序的可用性。这些限制会影响从 18.09 之前的任何版本到 18.09 或更高版本的任何升级。
18.09.7
2019-06-27
建筑工人
- 修复了构建仅包含注释的 dockerfile 时出现的 panic 错误。白鲸/白鲸 #38487
- 添加了 GCR 身份验证问题的解决方法。白鲸/白鲸#38246
- builder-next:修复了 GCR 令牌缓存实现解决方法中的一个错误。白鲸/白鲸#39183
联网
- 修复了无法删除网络的错误。白鲸/白鲸 #39174
--network-rm
运行
- 在 aufs 和层存储中添加了性能优化,有助于创建和删除大规模并行容器。白鲸/白鲸 #39107, 白鲸/白鲸 #39135
- 将 containerd 更新到版本 1.2.6。白鲸/白鲸#39016
- 修复 CVE-2018-15664 通过目录遍历进行 symlink-exchange 攻击。白鲸/白鲸#39357
- Windows:修复了对 .白鲸/白鲸#39190
docker service create --limit-cpu
- 守护进程:修复了镜像验证问题。白鲸/白鲸#38991
- Docker 不再支持对 ID 映射中的 UID 和 GID 范围进行排序。白鲸/白鲸 #39288
伐木
- 添加了一个修复,现在允许 Logger 插件使用大型日志行。白鲸/白鲸#39038
已知问题
- 升级过程有一些重要的更改,如果未正确遵循这些更改,可能会影响升级期间在 Swarm 上运行的应用程序的可用性。这些限制会影响从 18.09 之前的任何版本到 18.09 或更高版本的任何升级。
18.09.6
2019-05-06
建筑工人
- 修复了 和 multiple 在出现 .白鲸/白鲸 #38964
COPY
ADD
<src>
DOCKER_BUILDKIT=1
联网
- 在代理关闭时清理集群提供程序。docker/lib网络#2354
- Windows:如果用户未指定主机端口,现在会选择随机主机端口。docker/lib网络#2369
已知问题
- 升级过程有一些重要的更改,如果未正确遵循这些更改,可能会影响升级期间在 Swarm 上运行的应用程序的可用性。这些限制会影响从 18.09 之前的任何版本到 18.09 或更高版本的任何升级。
18.09.5
2019-04-11
建筑工人
- 修复 docker/engine#176
DOCKER_BUILDKIT=1 docker build --squash ..
客户
- 修复了 tty 初始大小错误。docker/cli #1775 命令
- 修复 dial-stdio 协程泄漏。docker/cli 的 #1795
- 修复了用于跟踪部署的 stack informer 选择器。docker/cli #1794
联网
- 修复了 错误使用 .docker/engine#180
network=host
resolv.conf
systemd-resolved
- 修复了 Windows ARP 条目在负载下随机损坏的问题。docker/engine的 #192
运行
- 现在将重启策略的已停止容器显示为 。docker/engine#181
Restarting
- 现在对 exec 使用原始流程规范。docker/engine的 #178
群模式
- 修复删除节点时任务资源泄漏的问题。docker/engine#185
已知问题
- 升级过程有一些重要的更改,如果未正确遵循这些更改,可能会影响升级期间在 Swarm 上运行的应用程序的可用性。这些限制会影响从 18.09 之前的任何版本到 18.09 或更高版本的任何升级。
18.09.4
2019-03-28
建筑工人
- 修复了 CVE-2019-13139,添加了验证以避免误解为标志。白鲸/白鲸#38944
git ref
运行
- 修复了文件名大于 100 个字符的错误。白鲸/白鲸 #38634
docker cp
- fixed 以确保释放资源。白鲸/白鲸 #38413
layer/layer_store
NewInputTarStream
- 提高了 的 GRPC 限制。白鲸/白鲸 #38800
GetConfigs
- 更新了 1.2.5。docker/engine#173
containerd
群模式
- 修复了将节点加入 swarm 时出现的 nil 指针异常。白鲸/白鲸#38618
- 修复了在设置了 http 代理的情况下,swarm 节点无法作为主节点加入的问题。[白鲸/白鲸 #36951]
已知问题
- 升级过程有一些重要的更改,如果未正确遵循这些更改,可能会影响升级期间在 Swarm 上运行的应用程序的可用性。这些限制会影响从 18.09 之前的任何版本到 18.09 或更高版本的任何升级。
18.09.3
2019-02-28
网络修复
- Windows:现在避免重新生成网络 ID,以防止对网络的引用断开。docker/engine 插件 #149
- Windows:修复了在指定网络时独立容器上的地址标志不起作用的问题。(docker/escalation #1037)
- restart always
- 修复了在管理器未连接到覆盖网络时从 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
安全修复
- 更新以解决允许特制容器获得主机管理权限的关键漏洞。CVE-2019-5736漏洞
runc
- 使用 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 管理,因此对 systemd 配置的任何自定义配置更改挂载设置(例如)都会中断 Docker Engine 守护程序和 containerd 之间的交互,并且您将无法启动容器。docker.service
MountFlags=slave
运行以下命令以获取 的属性的当前值 :MountFlags
docker.service
$ sudo systemctl show --property=MountFlags docker.service
MountFlags=
如果此命令为 打印非空值,请更新您的配置,然后重新启动 docker 服务。MountFlags
安全修复
- 将 Go 语言升级到 1.10.6 以解决 CVE-2018-16873、CVE-2018-16874 和 CVE-2018-16875。
- 修复了用于 0 长度内容和路径验证的 authz 插件。
- 添加到屏蔽路径 docker/engine#126
/proc/asound
改进
- 更新至 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 之前不接受的问题
- 避免在 docker/engine#122 中取消设置凭证
containerd
- 修复 Debian docker/engine 的 iptables 兼容性#107
- 修复将 docker 主机 docker/cli 的默认 schema 设置为 tcp 的问题 #1454
- 修复 docker/cli 的 bash 补全问题 #1526
service update --force
- 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/engine 的信号#116
docker kill
- 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 时,未在 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 管理,因此对 systemd 的任何自定义配置
更改挂载设置(例如)的配置会中断 Docker Engine 守护进程和 containerd 之间的交互,您将无法启动容器。docker.service
MountFlags=slave
运行以下命令以获取 的属性的当前值 :MountFlags
docker.service
$ sudo systemctl show --property=MountFlags docker.service
MountFlags=
如果此命令为 打印非空值,请更新您的配置,然后重新启动 docker 服务。MountFlags
新功能
- 将 API 版本更新为 1.39 moby/moby#37640
- 新增支持使用 SSH docker/cli 进行远程连接 #1014
- 生成器:向 API moby/moby 添加了 prune 选项 #37651
- 向 endpoint 添加了 “Warnings”,并将检测移至守护进程 moby/moby#37502
/info
- 允许 BuildKit 构建在未启用实验模式的情况下运行。现在可以在 daemon.json moby/moby#37593、moby/moby#37686、moby/moby#37692、docker/cli#1303、docker/cli#1275 中配置一个选项
- 添加了对使用 BuildKit docker/cli 时使用标志的构建时 secret 的支持#1288
--secret
- 使用 BuildKit 时新增 SSH 代理套接字转发器 docker/cli#1438 / docker/cli#1419
docker build --ssh $SSHMOUNTID=$SSH_AUTH_SOCK
- 新增 Windows moby/moby 上的标志支持和命令#35521
--chown
ADD
COPY
- 新增子命令修剪 BuildKit 构建缓存 docker/cli#1295 docker/cli#1334
builder prune
- BuildKit:为 BuildKit 构建缓存 docker/engine#59 / moby/moby#37846 添加可配置的垃圾回收策略
- BuildKit: 添加了对使用 BuildKit moby/moby 时的支持#37613
docker build --pull ...
- BuildKit:在使用 BuildKit docker/engine#59 / moby/moby#37852 时添加支持或“registry-mirrors”和“insecure-registries”
- BuildKit:启用 net 模式和 bridge。白鲸/白鲸#37620
- 添加了子命令,用于管理在 containerd 上作为特权容器运行的 Docker Engine 的生命周期,并允许升级到 Docker Engine Enterprise docker/cli#1260
docker engine
- 在输出 docker/cli#1313 中公开产品许可证
docker info
- 在输出 docker/cli#1225 中显示守护进程生成的警告
docker info
- 新增 “local” 日志驱动程序 moby/moby#37092
- Amazon CloudWatch:添加日志记录选项 moby/moby#37374
awslogs-endpoint
- 新增支持全局默认地址池 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
- 将端点从 experimental 中移出。白鲸/白鲸#40028
POST /session
改进
- 在 /info 响应 moby/moby#37472 中不返回 “”
<unknown>
- BuildKit:对 docker/cli 的更改#1276
--console=[auto,false,true]
--progress=[auto,plain,tty]
- BuildKit:设置 BuildKit 的 ExportedProduct 变量,以便在将来显示有用的错误。白鲸/白鲸#37439
- 当连接到不支持此选项的守护进程时隐藏标志 docker/docker/cli#1240
--data-path-addr
- 如果启用了 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 二进制文件的“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
- 从版本字符串 docker-ce-packaging#206 中删除后缀
-ce
修复
- BuildKit:不取消 buildkit 状态请求。白鲸/白鲸 #37597
- 修复 docker build moby/moby 期间缺少 build args 时不显示错误的问题#37396
- 修复添加 8GB 文件时出现 moby/moby 时出现的 “unexpected EOF” 错误 #37771
- LCOW:确保在 / 上填充平台。白鲸/白鲸#37563
COPY
ADD
- 修复将一系列主机端口映射到单个容器端口 docker/cli#1102
- 修复拼写错误: “” docker/cli#1300
trust inspect
AdminstrativeKeys
- 修复了导入不存在的变量和没有名称的变量的环境文件解析问题。docker/cli #1019 命令
- 修复了在运行大量悬空镜像时可能出现的“内存不足异常” docker/cli#1432 / docker/cli#1423
docker image prune
- 修复 Windows moby/moby 上 ConEmu 和 ConsoleZ 中的管道处理#37600
- 修复了 Windows 上长时间启动的问题,使用非 hns 治理的 Hyper-V 网络 docker/engine#67 / moby/moby#37774
- 修复了在配置文件和 cli 中都定义了 “runtimes” 选项时守护进程无法启动的问题docker/engine#57 / moby/moby#37871
- 放宽目录权限,以防止在使用 docker/engine#56 / moby/moby#37847 时出现 “permission denied” 错误
/etc/docker
docker manifest inspect
- 修复了 docker/engine#70 / moby/moby 中出现大量数字的拒绝服务的问题#37967
cpuset-cpus
cpuset-mems
- LCOW:添加到 docker/cli#1375 / docker/cli#1371
--platform
docker import
- LCOW:在 Windows moby/moby 上默认添加 LinuxMetadata 支持 #37514
- LCOW:挂载到较短的容器路径以避免命令行长度限制 moby/moby#37659
- LCOW:修复使用错误缓存层的生成器 moby/moby#37356
- 修复了使用 docker/engine#48 moby/moby#37576 moby/moby#37734 时 json-log 文件描述符泄漏的问题
--follow
- 修复了在 kqueue moby/moby 上关闭 watcher 时可能出现的死锁#37392
- 使用基于 poller 的观察程序解决 Windows moby/moby 中的文件缓存问题 #37412
- 通过向网络层 moby/moby 提供适当的 resolv.conf 来处理 systemd-resolved 的情况#37485
- 删除对 TLS < 1.2 moby/moby 的支持#37660
- Seccomp:将默认 seccomp 配置文件 moby/moby 中链接的系统调用列入白名单#37242
CAP_SYS_NICE
- Seccomp:将 syslog 系统调用移动到 docker/engine#64 / moby/moby#37929 的门控位置
CAP_SYS_ADMIN
CAP_SYSLOG
- 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
docker run -d -p 4000:80 nginx
但是,以下命令失败,导致 curl/chrome 无法连接(连接被拒绝):
docker service
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。