Docker Engine发行说明

预计阅读时间:133分钟

1.13.1(2017-02-08)

重要说明:在Linux发行版中devicemapper,默认存储驱动程序是,默认情况下使用overlay2overlay(如果内核支持,则默认使用)。要使用devicemapper,您可以通过--storage-driverdaemon选项或通过在daemon.json 配置文件中设置“ storage-driver”来手动配置要使用的存储驱动程序。

重要事项:与Docker 1.12中引入的实验版本相比,在Docker 1.13中,托管插件api发生了变化。升级到Docker 1.13之前,必须先卸载与Docker 1.12一起安装的插件 。您可以使用以下命令来卸载插件。docker plugin rm

如果您已经升级到Docker 1.13而没有卸载以前安装的插件,则在Docker守护程序启动时可能会看到以下消息:

Error starting daemon: json: cannot unmarshal string into Go value of type types.PluginEnv

要手动删除所有插件并解决此问题,请执行以下步骤:

  1. 从中删除plugins.json /var/lib/docker/plugins/
  2. 重新启动Docker。验证Docker守护程序是否正确启动。
  3. 重新安装您的插件。

贡献者

远程API(v1.26)和客户端

  • docker堆栈中的支持秘密与撰写文件#30144一起部署

运行

  • 修复#30378中的尺寸问题docker system df
  • 修正docker inspectSwarm证书过期时的错误。#29246
  • 修复v1插件上的死锁,并显示激活错误#30408
  • 修复SELinux回归#30649

外挂程式

  • 在群体模式下支持全局范围的网络插件(v2)#30332
  • 添加docker plugin upgrade #29414

视窗

1.13.0(2017-01-18)

重要说明:在Linux发行版中devicemapper,默认存储驱动程序是,默认情况下使用overlay2overlay(如果内核支持,则默认使用)。要使用devicemapper,您可以通过--storage-driverdaemon选项或通过在daemon.json 配置文件中设置“ storage-driver”来手动配置要使用的存储驱动程序。

重要事项:与Docker 1.12中引入的实验版本相比,在Docker 1.13中,托管插件api发生了变化。升级到Docker 1.13之前,必须先卸载与Docker 1.12一起安装的插件 。您可以使用以下命令来卸载插件。docker plugin rm

如果您已经升级到Docker 1.13而没有卸载以前安装的插件,则在Docker守护程序启动时可能会看到以下消息:

Error starting daemon: json: cannot unmarshal string into Go value of type types.PluginEnv

要手动删除所有插件并解决此问题,请执行以下步骤:

  1. 从中删除plugins.json /var/lib/docker/plugins/
  2. 重新启动Docker。验证Docker守护程序是否正确启动。
  3. 重新安装您的插件。

建造者

  • 添加功能以指定用作构建中的缓存源的映像。这些图像不需要具有本地父链,并且可以从其他注册表中拉出#26839
  • (实验性)成功构建后,将选项添加到将图像层压缩到FROM图像中#22641
  • 转义后用空行修复dockerfile解析器#24725
  • #24978上添加步骤编号docker build
  • 添加对在图像生成期间压缩生成上下文的支持#25837
  • 添加--networkdocker build #27702
  • 修复--label标志docker build和和#26027之间的不一致行为docker run
  • 使用覆盖存储驱动程序时修复图像层不一致问题#27209
  • 现在允许使用未使用的build-args。出现警告而不是错误,并且构建失败#27412
  • 修复Windows上的构建器缓存问题#27805
  • USER在Windows上的生成器中允许#28415
  • 在Windows上处理不区分大小写的env #28725

贡献者

  • 添加对在PPC64LE #23438上为Ubuntu 16.04 Xenial构建docker debs的支持
  • 添加对在s390x上为Ubuntu 16.04 Xenial构建docker debs的支持#26104
  • 添加对在PPC64LE #28046上为Ubuntu 16.10 Yakkety Yak构建docker debs的支持
  • 添加用于VMWare Photon OS #24116的RPM构建器
  • 将外壳补全添加到tgz #27735
  • 更新安装脚本以允许在中国使用镜像#27005
  • 为Ubuntu 16.10 Yakkety Yak添加DEB构建器#27993
  • 为Fedora 25 #28222添加RPM构建器
  • 添加make deb对aarch64的支持#27625

分配

  • 将公证人依赖项更新为0.4.2(完整的更新日志在此处#27074
  • 当不同的用户将相同的层推送到经过身份验证的注册表时,避免不必要的Blob上传#26564
  • 允许外部存储以获取注册表凭据#26354

记录中

  • 标准化所有日志记录驱动程序中的默认日志记录标记值#22911
  • 记录长日志行时提高性能和内存使用率#22982
  • 为Windows启用Syslog驱动程序#25736
  • 添加登录条目驱动程序#27471
  • 更新了AWS日志驱动程序以支持标签#27707
  • Unix套接字对fluentd #26088的支持
  • 在Windows #28189上启用流利的日志记录驱动程序
  • 在用作日志记录的字段名称时清理docker标签#23725
  • 修复了docker logs --tail返回的行少于预期的行的问题#28203
  • Splunk日志记录驱动程序:性能和可靠性方面的改进#26207
  • Splunk日志记录驱动程序:可配置的格式,并跳过以验证连接#25786

联网

  • 添加--attachable网络支持以使其docker run能够在群体模式覆盖网络中工作#25962
  • 使用#27917 28943中的--publish选项在服务中添加对主机端口PublishMode的支持docker service create
  • 添加对Windows Server 2016覆盖网络驱动程序的支持(需要即将推出的ws2016更新)#28182
  • 将默认FORWARD策略更改为DROP #28257
  • 添加对在Windows #22208上为预定义网络指定静态IP地址的支持
  • --publishdocker run不使用IPv6地址的情况下修复标志#27860
  • 修复带有面具的检查网络显示网关#25564
  • 修复了网桥中的多个地址可能导致--fixed-cidr地址不正确的问题#26659
  • 将创建时间戳记添加到docker network inspect #26130
  • 显示docker network inspect群集覆盖网络中的对等节点#28078
  • 对服务VIP地址#28019启用ping操作

外挂程式

  • 将插件移出实验性#28226
  • 添加--forcedocker plugin remove #25096
  • 添加对动态重新加载授权插件的支持#22770
  • #25556中添加描述docker plugin ls
  • 添加-f/--formatdocker plugin inspect #25990
  • 添加docker plugin create命令#28164
  • 将请求的TLS对等证书发送到授权插件#27383
  • 在群体模式下支持全局范围的网络和ipam插件#27287
  • 拆分docker plugin install为两个API调用/privileges/pull #28963

远程API(v1.25)和客户端

  • docker stack deploy来自撰写文件的支持#27998
  • (实验性)实施检查点并还原#22049
  • --format标志添加到docker info #23808
  • --name#23830移除docker volume create
  • 添加docker stack ls #23886
  • 添加一个新的is-taskps过滤器#24411
  • --env-file标志添加到docker service create #24844
  • 添加--formatdocker stats #24987
  • 在群组节点#25214中设为docker node ps默认值self
  • 添加--groupdocker service create #25317
  • 添加--no-trunc到服务/节点/堆栈ps输出#25337
  • 向其中添加日志,ContainerAttachOptions以便客户端可以在附加过程中请求检索容器日志#26718
  • 允许客户端与旧服务器通话#27745
  • 通知用户客户端正在进行容器移除#26074
  • 添加Isolation到/ info端点#26255
  • 添加userns到/ info端点#27840
  • 不允许在服务端点中一次请求多个模式#26643
  • 向/ containers / create API添加功能,以更精细,更安全的方式指定安装#22373
  • --formatnetwork ls和添加标志volume ls #23475
  • 允许顶级docker inspect命令检查任何类型的资源#23614
  • --cpus标志添加到控制CPU资源docker rundocker create,并加入NanoCPUsHostConfig #27958
  • 允许取消设置--entrypointindocker rundocker create #23718
  • 通过添加docker imagedocker container命令来重组CLI命令以提高一致性#26025
  • COMMANDservice ls输出#28029中删除列
  • 添加--formatdocker events #26268
  • 允许在#26299上指定多个节点docker node ps
  • docker images输出#26303中将小数位数限制为2个小数
  • 添加--dns-optiondocker run #28186
  • 将图像ID添加到容器提交事件#28128
  • 将外部二进制版本添加到Docker信息#27955
  • Manager Addresses#28042的输出中添加信息docker info
  • #27872添加新的参考过滤器docker images

运行

  • 添加--experimental守护程序标志以启用实验性功能,而不是在单独的版本中运送它们#27223
  • 添加--shutdown-timeout守护程序标志以指定默认超时(以秒为单位),以在守护程序退出之前正常停止容器#23036
  • 添加--stop-timeout以指定单个容器停止的超时值(以秒为单位)#22566
  • 添加一个新的守护进程的标志--userland-proxy-path,允许配置用户级代理,而不是使用硬编码docker-proxy$PATH #26882
  • 添加布尔标志--initdockerd并在docker run使用TINI僵尸-收割init进程作为PID 1 #26061 #28037
  • 添加新的守护程序标志,--init-path以允许配置docker-init二进制文件的路径#26941
  • 在配置#22337中添加对实时重新加载不安全注册表的支持
  • 在Windows守护程序上添加对存储选择大小的支持#23391
  • docker run --rm通过将其从客户端移动到守护程序来 提高可靠性#20848
  • 添加对--cpu-rt-period--cpu-rt-runtime标志的支持,从而CONFIG_RT_GROUP_SCHED在内核中启用容器后允许容器运行实时线程#23430
  • 允许平行停止,暂停,取消暂停#24761 / #26778
  • 为overlay2实施XFS配额#24771
  • 修复#24850中的部分/全部过滤器问题service tasks --filter
  • 允许引擎在用户名称空间内运行#25672
  • 使用devicemapper graphdriver时,修复设备延迟删除与恢复设备之间的竞争条件#23497
  • docker stats在Windows #25737中添加支持
  • 允许使用--pid=host--net=host--userns=host #25771
  • (实验)添加指标(普罗米修斯)输出为基本containerimagedaemon操作#25820
  • 修复问题docker statsNetworkDisabled=true #25905
  • docker top在Windows #25891中添加支持
  • 记录执行进程#27470的pid
  • 通过#27599添加对查找用户/组的getent 支持
  • 添加新的docker system命令dfprune子系统的资源管理,以及docker {container,image,volume,network} prune#26108 #27525 / #27525
  • 通过使用devicemapper在ENOSPC上将xfs max_retries设置为0,解决了无法停止或终止容器的问题#26212
  • 修复了docker cp无法使用devicemapper复制到CentOS上容器的卷目录的问题#28047
  • 促进overlay(2)graphdriver #27932
  • 添加--seccomp-profile守护程序标志以指定seccomp配置文件的路径,该路径将覆盖默认的#26276
  • 在修复ulimitsdocker inspect--default-ulimit设置在守护进程#26405
  • 在较早版本的内核中进行构建时,添加解决覆盖问题的方法#28138
  • TERM#26461上添加环境变量docker exec -t
  • 遵守#26464上的容器--stop-signal设置docker kill

群模式

  • 添加秘密管理#27794
  • 添加对模板服务选项(主机名,安装和环境变量)的支持#28025
  • #26906的输出中显示端点模式docker service inspect --pretty
  • docker service ps通过缩短任务名称中的服务ID,使输出更可承受#28088
  • 制作docker node ps默认为当前节点#25214
  • 添加--dns,--dns-opt--dns-search服务创建。#27567
  • 添加--forcedocker service update #27596
  • 添加--health-*--no-healthcheck标志,以docker service createdocker service update #27369
  • 添加-qdocker service ps #27654
  • 显示#27710中的全球服务数量docker service ls
  • --name从中删除标志docker service update。该标志仅在上起作用docker service create,因此已从update命令中删除了#26988
  • 修复由于临时网络问题而导致工作节点无法恢复的问题#26646
  • 添加对运行状况感知的负载平衡和DNS记录的支持#27279
  • 添加--hostnamedocker service create #27857
  • 添加--hostdocker service create,和--host-add--host-rmdocker service update #28031
  • --ttydocker service create/ #28076中添加标志update
  • 自动检测,存储和公开节点IP地址,如管理员所看到的那样#27910
  • 其余的管理员密钥和筏数据加密#27967
  • 添加--update-max-failure-ratio--update-monitor--rollback标志,以docker service update #26421
  • 解决docker swarm init在容器内运行时地址自动发现的问题#26457
  • (实验性的)添加docker service logs命令以查看服务的日志#28089
  • 通过摘要将图像固定为docker service createupdate #28173
  • -fdocker node rm --force和添加短标记()和docker swarm leave --force #28196
  • 添加选项以自定义Raft快照(--max-snapshots--snapshot-interval#27997
  • 如果被摘要固定,请勿重新推送图像#28265
  • Windows的群模式支持#27838
  • 允许在服务#28771上更新主机名
  • 支持v2插件#29433
  • 添加对服务的内容信任#29469

体积

  • 在卷#21270上添加对标签的支持
  • 添加对通过标签#25628过滤卷的支持
  • 在其中添加一个--force标志,docker volume rm以强制清除已删除的卷的数据#23436
  • 增强功能docker volume inspect以显示创建卷时使用的所有选项#26671
  • 添加对本地NFS卷的支持以解析主机名#27329

安全

  • 修复selinux在容器中共享的卷的标签#23024
  • 禁止/sys/firmware/**使用apparmor进行访问#26618

弃用

  • docker daemon命令标记为不推荐使用。守护程序将移至单独的二进制文件(dockerd),应改为使用#26834
  • 弃用未版本控制的API端点#28208
  • 删除Ubuntu 15.10(Wily Werewolf)作为受支持的平台。Ubuntu 15.10已停产,并且不再接收更新#27042
  • 删除Fedora 22作为支持的平台。Fedora 22已停产,并且不再接收更新#27432
  • 删除Fedora 23作为支持的平台。Fedora 23已停产,并且不再接收更新#29455
  • 弃用#27207repo:shortid上的语法docker pull
  • 不建议不d_type使用overlay和overlay2存储驱动程序的支持文件系统#27433
  • MAINTAINER在Dockerfile中弃用#25466
  • 弃用filter端点的参数/images/json #27872
  • 弃用设置重复的引擎标签#24533
  • 弃用#28437中的“顶级”网络信息NetworkSettings

1.12.6(2017-01-10)

重要信息:Docker 1.12随附了更新的systemd单元文件,用于基于rpm的安装(包括RHEL,Fedora,CentOS和Oracle Linux 7)。从较旧版本的Docker升级时,升级过程可能不会自动安装单元文件的更新版本,或者在以下情况下无法启动Docker服务:

  • systemd单位文件(/usr/lib/systemd/system/docker.service)包含本地更改,或
  • 存在一个systemd插入文件,该文件包含-H fd://ExecStart指令中

启动docker服务将产生错误:

Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.

或者

no sockets found via socket activation: make sure the service was started by systemd.

要解决此问题:

  • 备份单元文件的当前版本,并将其替换为docker 1.12随附版本
  • Requires=docker.socket/usr/lib/systemd/system/docker.service文件中删除指令(如果存在)
  • -H fd://ExecStart指令中删除(在主机文件中,以及在任何存在的插入文件中)。

完成这些更改后,运行sudo systemctl daemon-reload,并sudo systemctl restart docker重新加载更改,然后(重新)启动docker守护进程。

注意:当您指定--ipv6选项时,Docker 1.12.5将正确地验证提供了IPv6子网还是IPAM驱动程序可以提供一个子网。

如果您当前正在使用该--ipv6选项而未指定该 --fixed-cidr-v6选项,则Docker守护程序将拒绝以以下消息开头:

Error starting daemon: Error initializing network controller: Error creating
                       default "bridge" network: failed to parse pool request
                       for address space "LocalDefault" pool " subpool ":
                       could not find an available, non-overlapping IPv6 address
                       pool among the defaults to assign to the network

要解决此错误,请删除该--ipv6标志(以保留与Docker 1.12.3及更早版本相同的行为),或提供一个IPv6子网作为该--fixed-cidr-v6标志的值。

以类似的方式,如果在使用--ipv6默认IPAM驱动程序创建网络时指定该标志,而未提供IPv6 --subnet,则网络创建将失败,并显示以下消息:

Error response from daemon: failed to parse pool request for address space
                            "LocalDefault" pool "" subpool "": could not find an
                            available, non-overlapping IPv6 address pool among
                            the defaults to assign to the network

要解决此问题,请删除该--ipv6标志(以保留与Docker 1.12.3及更早版本相同的行为),或提供一个IPv6子网作为该--subnet标志的值 。

如果使用支持自动分配IPv6子网的外部IPAM驱动程序,则网络网络创建将成功。

运行

  • 修复runC权限升级(CVE-2016-9962)

1.12.5(2016-12-15)

重要信息:Docker 1.12随附了更新的systemd单元文件,用于基于rpm的安装(包括RHEL,Fedora,CentOS和Oracle Linux 7)。从较旧版本的Docker升级时,升级过程可能不会自动安装单元文件的更新版本,或者在以下情况下无法启动Docker服务:

  • systemd单位文件(/usr/lib/systemd/system/docker.service)包含本地更改,或
  • 存在一个systemd插入文件,该文件包含-H fd://ExecStart指令中

启动docker服务将产生错误:

Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.

或者

no sockets found via socket activation: make sure the service was started by systemd.

要解决此问题:

  • 备份单元文件的当前版本,并将其替换为docker 1.12随附版本
  • Requires=docker.socket/usr/lib/systemd/system/docker.service文件中删除指令(如果存在)
  • -H fd://ExecStart指令中删除(在主机文件中,以及在任何存在的插入文件中)。

完成这些更改后,运行sudo systemctl daemon-reload,并sudo systemctl restart docker重新加载更改,然后(重新)启动docker守护进程。

注意:当您指定--ipv6选项时,Docker 1.12.5将正确地验证提供了IPv6子网还是IPAM驱动程序可以提供一个子网。

如果您当前正在使用该--ipv6选项而未指定该 --fixed-cidr-v6选项,则Docker守护程序将拒绝以以下消息开头:

Error starting daemon: Error initializing network controller: Error creating
                       default "bridge" network: failed to parse pool request
                       for address space "LocalDefault" pool " subpool ":
                       could not find an available, non-overlapping IPv6 address
                       pool among the defaults to assign to the network

要解决此错误,请删除该--ipv6标志(以保留与Docker 1.12.3及更早版本相同的行为),或提供一个IPv6子网作为该--fixed-cidr-v6标志的值。

以类似的方式,如果在使用--ipv6默认IPAM驱动程序创建网络时指定该标志,而未提供IPv6 --subnet,则网络创建将失败,并显示以下消息:

Error response from daemon: failed to parse pool request for address space
                            "LocalDefault" pool "" subpool "": could not find an
                            available, non-overlapping IPv6 address pool among
                            the defaults to assign to the network

要解决此问题,请删除该--ipv6标志(以保留与Docker 1.12.3及更早版本相同的行为),或提供一个IPv6子网作为该--subnet标志的值 。

如果使用支持自动分配IPv6子网的外部IPAM驱动程序,则网络网络创建将成功。

运行

  • 修复发送标准输入关闭事件的比赛#29424

联网

  • 在较旧的Docker版本中创建--ipv6并没有ipv6的网络时,修复docker network ls中的恐慌#29416--subnet

贡献者

1.12.4(2016-12-12)

重要信息:Docker 1.12随附了更新的systemd单元文件,用于基于rpm的安装(包括RHEL,Fedora,CentOS和Oracle Linux 7)。从较旧版本的Docker升级时,升级过程可能不会自动安装单元文件的更新版本,或者在以下情况下无法启动Docker服务:

  • systemd单位文件(/usr/lib/systemd/system/docker.service)包含本地更改,或
  • 存在一个systemd插入文件,该文件包含-H fd://ExecStart指令中

启动docker服务将产生错误:

Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.

或者

no sockets found via socket activation: make sure the service was started by systemd.

要解决此问题:

  • 备份单元文件的当前版本,并将其替换为docker 1.12随附版本
  • Requires=docker.socket/usr/lib/systemd/system/docker.service文件中删除指令(如果存在)
  • -H fd://ExecStart指令中删除(在主机文件中,以及在任何存在的插入文件中)。

完成这些更改后,运行sudo systemctl daemon-reload,并sudo systemctl restart docker重新加载更改,然后(重新)启动docker守护进程。

运行

群模式

联网

记录中

  • 更新系统日志日志驱动程序#29150

贡献者

  • 在fedora中安装之前,请运行“ dnf升级” #29150
  • 将构建日期添加回RPM软件包#29150
  • deb软件包文件名已更改为包括发行版,以区分发行版代码名称#27829

1.12.3(2016-10-26)

重要信息:Docker 1.12随附了更新的systemd单元文件,用于基于rpm的安装(包括RHEL,Fedora,CentOS和Oracle Linux 7)。从较旧版本的Docker升级时,升级过程可能不会自动安装单元文件的更新版本,或者在以下情况下无法启动Docker服务:

  • systemd单位文件(/usr/lib/systemd/system/docker.service)包含本地更改,或
  • 存在一个systemd插入文件,该文件包含-H fd://ExecStart指令中

启动docker服务将产生错误:

Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.

或者

no sockets found via socket activation: make sure the service was started by systemd.

要解决此问题:

  • 备份单元文件的当前版本,并将其替换为docker 1.12随附版本
  • Requires=docker.socket/usr/lib/systemd/system/docker.service文件中删除指令(如果存在)
  • -H fd://ExecStart指令中删除(在主机文件中,以及在任何存在的插入文件中)。

完成这些更改后,运行sudo systemctl daemon-reload,并sudo systemctl restart docker重新加载更改,然后(重新)启动docker守护进程。

运行

群模式

联网

记录中

  • 将fluent-logger-golang更新到v1.2.1 #27474

贡献者

  • 更新armhf ubuntu-trusty的构建标签#27327
  • 将AppArmor添加到armhf的runc buildtags #27421

1.12.2(2016-10-11)

重要信息:Docker 1.12随附了更新的systemd单元文件,用于基于rpm的安装(包括RHEL,Fedora,CentOS和Oracle Linux 7)。从较旧版本的Docker升级时,升级过程可能不会自动安装单元文件的更新版本,或者在以下情况下无法启动Docker服务:

  • systemd单位文件(/usr/lib/systemd/system/docker.service)包含本地更改,或
  • 存在一个systemd插入文件,该文件包含-H fd://ExecStart指令中

启动docker服务将产生错误:

Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.

或者

no sockets found via socket activation: make sure the service was started by systemd.

要解决此问题:

  • 备份单元文件的当前版本,并将其替换为docker 1.12随附版本
  • Requires=docker.socket/usr/lib/systemd/system/docker.service文件中删除指令(如果存在)
  • -H fd://ExecStart指令中删除(在主机文件中,以及在任何存在的插入文件中)。

完成这些更改后,运行sudo systemctl daemon-reload,并sudo systemctl restart docker重新加载更改,然后(重新)启动docker守护进程。

运行

  • 解决由于竞争条件过滤而引起的恐慌docker ps #26049
  • 实施重试逻辑,以防止在使用aufs存储驱动程序时出现“无法删除文件系统”错误#26536
  • 防止devicemapper删除设备符号链接(如果dm.use_deferred_removal已启用)#24740
  • 解决了以下问题:如果使用无效选项运行命令,CLI不会返回正确的退出代码#26777
  • 修复由于健康检查中stdout / stderr处理中的错误而引起的恐慌#26507
  • 修复执行人员的孩子处理