Docker 引擎 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 上的 delegate.key 加载密钥的问题。 Docker/cli#1968
- bash 和 zsh 的完成脚本更新。
记录
- 修复了读取日志日志的问题。 莫比/莫比#37819 莫比/莫比#38859
联网
- 防止连接到禁用网络的容器的网络发生恐慌。 莫比/莫比#39589
- 修复应用程序的服务端口随机不可用的问题。 泊坞窗/libnetwork#2069
- 修复清理
--config-only
网络--config-from
网络不正常退出的问题。 泊坞窗/libnetwork#2373
运行
- 更新至 Go 1.11.13。
- 修复了对容器使用 XFS 磁盘配额时潜在的引擎崩溃问题。 莫比/莫比#39644
一群
- 修复“grpc:收到的消息大于最大值”错误。 莫比/莫比#39306
- 修复节点多个任务无法删除的问题。 泊坞窗/swarmkit#2867
18.09.8
2019-07-17
运行
- 在调试模式下运行 Docker 引擎时,屏蔽了更新到日志文件的机密。
CVE-2019-13509:如果 Docker 引擎在调试模式下运行,并
docker stack deploy
用于重新部署包含非外部机密的堆栈,则日志将包含该机密。
客户
parallelism
修复了和字段的回滚配置类型插值max_failure_ratio
。
已知问题
- 升级过程中有一些重要的变化,如果不正确遵循,可能会影响升级期间在 Swarm 上运行的应用程序的可用性。这些限制会影响从 18.09 之前的任何版本到 18.09 或更高版本的任何升级。
18.09.7
2019-06-27
建设者
- 修复了构建仅包含注释的 dockerfile 时出现的恐慌错误。 莫比/莫比#38487
- 添加了 GCR 身份验证问题的解决方法。 莫比/莫比#38246
- Builder-next:修复了 GCR 令牌缓存实现解决方案中的错误。 莫比/莫比#39183
联网
--network-rm
修复了无法删除网络的 错误。莫比/莫比#39174
运行
- 在 aufs 和层存储中添加了性能优化,有助于大规模并行容器创建和删除。 莫比/莫比#39107 , 莫比/莫比#39135
- 将containerd更新到版本1.2.6。 莫比/莫比#39016
- 修复了 带有目录遍历的 CVE-2018-15664符号链接交换攻击。莫比/莫比#39357
- Windows:修复了对
docker service create --limit-cpu
. 莫比/莫比#39190 - 守护进程:修复了镜像验证问题。 莫比/莫比#38991
- Docker 不再支持在 ID 映射中对 UID 和 GID 范围进行排序。 莫比/莫比#39288
记录
- 添加了一个修复程序,现在允许记录器插件使用较大的日志行。 莫比/莫比#39038
已知问题
- 升级过程中有一些重要的变化,如果不正确遵循,可能会影响升级期间在 Swarm 上运行的应用程序的可用性。这些限制会影响从 18.09 之前的任何版本到 18.09 或更高版本的任何升级。
18.09.6
2019-05-06
建设者
- 已修复
COPY
并ADD
具有多个<src>
不会使缓存无效的 ifDOCKER_BUILDKIT=1
。 莫比/莫比#38964
联网
- 代理关闭时清理集群提供程序。 泊坞窗/libnetwork#2354
- Windows:如果用户未指定主机端口,现在会选择随机主机端口。 泊坞窗/libnetwork#2369
已知的问题
- 升级过程中有一些重要的变化,如果不正确遵循,可能会影响升级期间在 Swarm 上运行的应用程序的可用性。这些限制会影响从 18.09 之前的任何版本到 18.09 或更高版本的任何升级。
18.09.5
2019-04-11
建设者
- 修复了
DOCKER_BUILDKIT=1 docker build --squash ..
docker/engine#176
客户
- 修复了 tty 初始大小错误。 泊坞窗/cli#1775
- 修复 dial-stdio goroutine 泄漏问题。 泊坞窗/cli#1795
- 修复了用于跟踪部署的堆栈通知者选择器。 泊坞窗/cli#1794
联网
- 修复了
network=host
使用错误的resolv.conf
问题systemd-resolved
。 Docker/引擎#180 - 修复了 Windows ARP 条目在负载下随机损坏的问题。 Docker/引擎#192
运行
- 现在显示已停止的容器,重新启动策略为
Restarting
。 Docker/引擎#181 - 现在对执行人员使用原始流程规范。 Docker/引擎#178
集群模式
- 修复了删除节点时任务资源泄漏的问题。 Docker/引擎#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/引擎#173
集群模式
- 修复了将节点加入 swarm 时出现的 nil 指针异常。 莫比/莫比#38618
- 修复了如果设置了 http 代理,群节点无法作为主节点加入的问题。 [莫比/莫比#36951]
已知的问题
- 升级过程中有一些重要的变化,如果不正确遵循,可能会影响升级期间在 Swarm 上运行的应用程序的可用性。这些限制会影响从 18.09 之前的任何版本到 18.09 或更高版本的任何升级。
18.09.3
2019-02-28
网络修复
- Windows:现在避免重新生成网络 ID,以防止网络引用损坏。 Docker/引擎#149
- restart always
Windows:修复了指定网络时独立容器上的标志不起作用的问题。 (泊坞窗/升级#1037)- 修复了如果管理器未连接到覆盖网络则从 networkdb 解决 IPAM 状态的问题。 (泊坞窗/升级#1049)
运行时修复和更新
- 更新至 Go 版本 1.10.8。
- 容器名称生成器中的修改名称。 Docker/引擎#159
- 复制现有文件夹时,当目标文件系统不支持 xattr 时,xattr 设置错误现在将被忽略。 Docker/引擎#135
- Graphdriver:修复了如果设置了“字符设备”位则无法检测到“设备”模式的问题。 Docker/引擎#160
- 修复了无法连接到 containerd 时的零指针取消引用。 Docker/引擎#162
- 启动失败时删除了陈旧的 containerd 对象。 Docker/引擎#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引擎守护进程和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
- 提供了有关使用已弃用的旧版覆盖和 devicemapper 存储驱动程序的附加警告 docker/engine#85
- 修剪:在构建缓存修剪之前执行图像修剪 docker/cli#1532
- 添加了实验性 CLI 命令的 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 系统修剪在过滤器docker/engine之前不接受的问题 #122
- 避免在docker/engine中取消设置凭据#122
containerd
- 修复了 Debian docker/engine 上的 iptables 兼容性 #107
- 修复了将 docker 主机 docker/cli 的默认架构设置为 tcp #1454
- 修复了 docker/cli 的 bash 完成
service update --force
#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:在限制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引擎守护进程和containerd之间的交互,并且您将无法启动容器。
运行以下命令以获取MountFlags
属性的当前值docker.service
:
$ sudo systemctl show --property=MountFlags docker.service
MountFlags=
如果此命令打印 的非空值,请更新您的配置MountFlags
,并重新启动 docker 服务。
新功能
- 将 API 版本更新为 1.39 moby/moby#37640
- 添加了对使用 SSH docker/cli远程连接的支持 #1014
- Builder:向 API moby/moby 添加了修剪选项#37651
- 向端点添加了“警告”
/info
,并将检测移至守护进程 moby/moby#37502 - 允许 BuildKit 构建在不启用实验模式的情况下运行。现在可以使用 daemon.json 中的选项配置 Buildkit moby/moby#37593 moby/moby#37686 moby/moby#37692 docker/cli#1303 docker/cli#1275
--secret
使用 BuildKit docker/cli#1288时使用标志添加了对构建时机密的支持docker build --ssh $SSHMOUNTID=$SSH_AUTH_SOCK
使用 BuildKit docker/cli#1438 / docker/cli#1419时添加了 SSH 代理套接字转发器 ( )- 添加了对Windows
moby/moby和命令的
--chown
标志支持#35521ADD
COPY
- 添加了
builder prune
子命令来修剪 BuildKit 构建缓存 docker/cli#1295 docker/cli#1334 - BuildKit:为 BuildKit 构建缓存添加可配置的垃圾收集策略 docker/engine#59 / moby/moby#37846
docker build --pull ...
BuildKit:添加对使用 BuildKit moby/moby#37613时的支持- BuildKit:使用 BuildKit 时添加支持“registry-mirrors”和“insecure-registries” docker/engine#59 / moby/moby#37852
- BuildKit:启用网络模式和桥接。 莫比/莫比#37620
- 添加了
docker engine
子命令来管理在 containerd 之上作为特权容器运行的 Docker 引擎的生命周期,并允许升级到 Docker 引擎企业版 docker/cli#1260 docker info
输出 docker/cli#1313中公开的产品许可证docker info
在输出 docker/cli#1225中显示守护进程产生的警告- 添加了“本地”日志驱动程序 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 完成脚本
- 将日志级别传递给containerd。 莫比/莫比#37419
- 在东西向覆盖负载均衡中使用直接服务器返回(DSR) docker/engine#93 / docker/libnetwork#2270
- Builder:使用 buildkit 时暂时禁用桥接网络。 莫比/莫比#37691
- 阻止任务启动,直到节点附件准备就绪 moby/moby#37604
- 将提供的外部 CA 证书传播到 swarm 中的外部 CA 对象。 泊坞窗/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 状态请求。 莫比/莫比#37597
- 修复了如果在 docker 构建 moby/moby 期间缺少构建参数则不会显示错误的问题 #37396
- 修复添加 8GB 文件 moby/moby 时出现“意外 EOF”错误#37771
- LCOW:确保平台已填充在
COPY
/上ADD
。 莫比/莫比#37563 - 修复将一系列主机端口映射到单个容器端口 docker/cli#1102
- 修复
trust inspect
拼写错误:“AdminstrativeKeys
” docker/cli#1300 - 修复了导入缺失变量和无名称变量的环境文件解析。 泊坞窗/cli#1019
docker image prune
修复了使用大量悬空图像 运行时潜在的“内存不足异常” docker/cli#1432 / docker/cli#1423- 修复 Windows moby/moby#37600上 ConEmu 和 ConsoleZ 中的管道处理
- 修复了 Windows 上的长时间启动,以及非 hns 管理的 Hyper-V 网络 docker/engine#67 / moby/moby#37774
- 修复了在配置文件和 cli docker/engine#57 / moby/moby#37871中定义“runtimes”选项时守护进程不会启动的问题
- 放宽目录权限以防止使用docker/engine#56 /
moby/moby#37847
/etc/docker
时出现“权限被拒绝”错误docker manifest inspect
- 修复了docker/engine#70 /
moby/moby#37967
cpuset-cpus
中大量拒绝服务的问题cpuset-mems
- 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时 json-log 文件描述符泄漏的问题- 修复了关闭 kqueue moby/moby 上的观察程序时可能出现的死锁 #37392
- 使用基于轮询器的观察程序来解决 Windows moby/moby#37412中的文件缓存问题
- 通过向网络层提供适当的 resolv.conf 来处理 systemd 解析的情况 moby/moby#37485
- 删除对 TLS < 1.2 moby/moby#37660的支持
CAP_SYS_NICE
Seccomp:在默认 seccomp 配置文件中 链接到的白名单系统调用moby/moby#37242- Seccomp:将 syslog 系统调用移至
CAP_SYS_ADMIN
dockerCAP_SYSLOG
/engine#64 / moby/moby#37929进行门控 - SELinux:修复在支持 selinux 的系统上通过 Mounts API 指定的本地卷的重新标签 moby/moby#37739
- 如果可以通过不安全的连接访问 REST API,则添加警告 moby/moby#37684
- 在系统信息docker/engine#72 / moby/moby#37934中显示时,从 URL 屏蔽代理凭据
- 修复了 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 引擎实现的默认驱动程序。
有关已弃用标志和 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。