Docker Engine 之前版本

目录

1.13.1 (2017-02-08)

重要

在 Linux 发行版中,如果 devicemapper 是默认的存储驱动,现在默认使用 overlay2overlay(如果内核支持)。要使用 devicemapper,您可以通过 --storage-driver 守护进程选项手动配置要使用的存储驱动,或者在 daemon.json 配置文件中设置 "storage-driver"。

重要

在 Docker 1.13 中,与 Docker 1.12 中引入的实验版本相比,托管插件 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. 重新安装您的插件。

Contrib

  • 不需要 tini 的自定义构建 #28454
  • 升级到 Go 1.7.5 #30489

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

  • 使用 compose 文件在 docker stack deploy 中支持 secrets #30144

运行时

  • 修复 docker system df 中的大小问题 #30378
  • 修复 Swarm 证书过期时 docker inspect 的错误。 #29246
  • 修复 v1 插件在激活错误时发生的死锁 #30408
  • 修复 SELinux 回归 #30649

插件

  • 在 Swarm 模式中支持全局范围的网络插件 (v2) #30332
  • 添加 docker plugin upgrade 命令 #29414

Windows

  • 修复 Windows 中旧插件的小幅回归问题 #30150
  • 修复 Windows 上的警告 #30730

1.13.0 (2017-01-18)

重要

在 Linux 发行版中,如果 devicemapper 是默认的存储驱动,现在默认使用 overlay2overlay(如果内核支持)。要使用 devicemapper,您可以通过 --storage-driver 守护进程选项手动配置要使用的存储驱动,或者在 daemon.json 配置文件中设置 "storage-driver"。

重要

在 Docker 1.13 中,与 Docker 1.12 中引入的实验版本相比,托管插件 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
  • docker build 中添加步骤编号 #24978
  • 添加在镜像构建过程中压缩构建上下文的支持 #25837
  • docker build 添加 --network 参数 #27702
  • 修复 docker builddocker run 命令中 --label 标志行为不一致的问题 #26027
  • 修复使用 overlay 存储驱动时镜像层不一致的问题 #27209
  • 现在允许使用未使用的 build-args。构建时会显示警告而不是错误并导致构建失败 #27412
  • 修复 Windows 上构建器缓存的问题 #27805
  • 允许在 Windows 的构建器中使用 USER 指令 #28415
  • 在 Windows 上处理环境变量时忽略大小写 #28725

Contrib

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

分发

  • 将 notary 依赖更新至 0.4.2 版本(完整变更日志见此处) #27074) #27074
    • 支持在 Windows 上进行编译 docker/notary#970
    • 改进了客户端认证错误的提示信息 docker/notary#972
    • 支持查找位于 ~/.docker/trust/private 目录下的任何位置的密钥,而不仅限于 ~/.docker/trust/private/root_keys~/.docker/trust/private/tuf_keys 子目录下 docker/notary#981
    • 以前,在任何更新错误发生时,客户端都会回退使用缓存。现在只有在发生网络错误、服务器不可用或缺少 TUF 数据时才会回退。无效的 TUF 数据(例如,无效的 root 密钥轮换)将导致更新失败。 docker/notary#982
    • 改进 root 验证和 yubikey 调试日志记录 docker/notary#858 docker/notary#891
    • 如果 root 密钥或委托的证书即将过期,则发出警告 docker/notary#802
    • 如果角色的元数据即将过期,则发出警告 docker/notary#786
    • 修复密码短语检索尝试计数和终端检测问题 docker/notary#906
  • 避免不同用户向已认证的 registry 推送相同层时进行不必要的 blob 上传 #26564
  • 允许为 registry 凭据使用外部存储 #26354

日志记录

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

网络

  • 添加 --attachable 网络支持,使 docker run 可以在 swarm 模式的 overlay 网络中工作 #25962
  • 在使用 docker service create 命令的 --publish 选项创建服务时,添加对 host port PublishMode 的支持 #27917#28943
  • 添加对 Windows Server 2016 overlay 网络驱动程序的支持(需要即将推出的 ws2016 更新) #28182
  • 将默认的 FORWARD 策略更改为 DROP #28257
  • 添加对在 Windows 上为预定义网络指定静态 IP 地址的支持 #22208
  • 修复 docker run--publish 标志在 IPv6 地址上不起作用的问题 #27860
  • 修复 inspect network 命令显示带有掩码的网关的问题 #25564
  • 修复桥接网络中的多个地址可能导致 --fixed-cidr 没有正确地址的问题 #26659
  • docker network inspect 添加创建时间戳 #26130
  • docker network inspect 中显示 swarm overlay 网络中的对等节点 #28078
  • 为服务 VIP 地址启用 ping #28019

插件

  • 将插件移出实验阶段 #28226
  • docker plugin remove 命令中添加 --force 选项 #25096
  • 添加支持动态重载授权插件的功能 #22770
  • docker plugin ls 输出中添加描述信息 #25556
  • docker plugin inspect 命令中添加 -f/--format 选项 #25990
  • 添加 docker plugin create 命令 #28164
  • 将请求的 TLS 对等证书发送给授权插件 #27383
  • 在 swarm 模式下支持全局范围的网络和 IPAM 插件 #27287
  • docker plugin install 分割为两个 API 调用:/privileges/pull #28963

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

  • 支持从 Compose 文件部署 docker stack deploy #27998
  • (实验性)实现检查点和恢复 #22049
  • docker info 命令中添加 --format 选项 #23808
  • docker volume create 命令中移除 --name 选项 #23830
  • 添加 docker stack ls 命令 #23886
  • 添加新的 is-task ps 过滤器 #24411
  • docker service create 命令中添加 --env-file 选项 #24844
  • docker stats 命令中添加 --format 选项 #24987
  • 在 swarm 节点中,将 docker node ps 默认指向 self #25214
  • docker service create 命令中添加 --group 选项 #25317
  • 在 service/node/stack 的 ps 输出中添加 --no-trunc 选项 #25337
  • ContainerAttachOptions 中添加 Logs 字段,以便 Go 客户端可以在附加过程中请求检索容器日志 #26718
  • 允许客户端与旧版本服务器通信 #27745
  • 在客户端告知用户容器正在移除中 #26074
  • 在 /info 端点中添加 Isolation 字段 #26255
  • 在 /info 端点中添加 userns 字段 #27840
  • 不允许在 services 端点中一次请求多种模式 #26643
  • 在 /containers/create API 中添加以更精细和安全的方式指定挂载点的功能 #22373
  • network lsvolume ls 命令中添加 --format 选项 #23475
  • 允许顶级 docker inspect 命令检查任何类型的资源 #23614
  • docker rundocker create 命令添加 --cpus 标志以控制 CPU 资源,并在 HostConfig 中添加 NanoCPUs #27958
  • 允许在 docker rundocker create 命令中取消设置 --entrypoint #23718
  • 通过添加 docker imagedocker container 命令来重组 CLI 命令,以提高一致性 #26025
  • service ls 输出中移除 COMMAND#28029
  • docker events 命令添加 --format 标志 #26268
  • 允许在 docker node ps 命令上指定多个节点 #26299
  • 限制 docker images 输出中的小数位数到两位 #26303
  • docker run 命令添加 --dns-option 标志 #28186
  • 为容器提交事件添加镜像 ID #28128
  • docker info 命令中添加外部二进制文件版本信息 #27955
  • docker info 命令输出中添加 Manager Addresses 信息 #28042
  • docker images 命令添加一个新的引用过滤器 #27872

运行时

  • 添加 --experimental 守护进程标志以启用实验性功能,而不是将其作为单独的构建发布 #27223
  • 添加 --shutdown-timeout 守护进程标志以指定在守护进程退出前优雅地停止容器的默认超时时间(秒) #23036
  • 添加 --stop-timeout 标志以指定单个容器停止的超时时间(秒) #22566
  • 添加新的守护进程标志 --userland-proxy-path 以允许配置用户态代理路径,而不是使用 $PATH 中硬编码的 docker-proxy #26882
  • dockerddocker run 命令添加布尔标志 --init,以使用 tini 作为 PID 1 的僵尸进程回收初始化进程 #26061 #28037
  • 添加新的守护进程标志 --init-path,以允许配置 docker-init 二进制文件的路径 #26941
  • 在配置中添加对不安全注册表热重载的支持 #22337
  • 在 Windows 守护进程上添加对 storage-opt size 的支持 #23391
  • docker run --rm 的实现从客户端移至守护进程,以提高可靠性 #20848
  • 添加对 --cpu-rt-period--cpu-rt-runtime 标志的支持,允许容器在内核中启用 CONFIG_RT_GROUP_SCHED 时运行实时线程 #23430
  • 修复 service tasks --filter 中的部分/完整过滤问题 #24850
  • 允许 engine 在用户命名空间内运行 #25672
  • 修复使用 devicemapper graphdriver 时,设备延迟移除与设备恢复之间的竞态条件 #23497
  • 在 Windows 中添加 docker stats 支持 #25737
  • 在使用 --userns=host 时,允许使用 --pid=host--net=host #25771
  • (实验性) 为基础的 containerimagedaemon 操作添加指标 (Prometheus) 输出 #25820
  • 修复 docker statsNetworkDisabled=true 时出现的问题 #25905
  • 在 Windows 中添加 docker top 支持 #25891
  • 记录 exec 进程的 pid #27470
  • 添加通过 getent 查找用户/组的支持 #27599
  • 添加新的 docker system 命令,包含用于系统资源管理的 dfprune 子命令,以及 docker {container,image,volume,network} prune 子命令 #26108 #27525 / #27525
  • 修复使用 devicemapper 时,在遇到 ENOSPC 错误并将 xfs max_retries 设置为 0 后无法停止或杀死容器的问题 #26212
  • 修复在 CentOS 上使用 devicemapper 时,docker cp 无法复制到容器的卷目录的问题 #28047
  • 升级 overlay(2) graphdriver #27932
  • 添加 --seccomp-profile daemon flag 以指定覆盖默认值的 seccomp 配置文件的路径 #26276
  • 修复在 daemon 上设置了 --default-ulimit 时,docker inspect 中 ulimits 的问题 #26405
  • 为旧内核中构建时遇到的 overlay 问题添加临时解决方案 #28138
  • docker exec -t 中添加 TERM 环境变量 #26461
  • docker kill 时遵守容器的 --stop-signal 设置 #26464

Swarm 模式

  • 添加 secret 管理 #27794
  • 添加对服务选项(hostname、mounts 和 environment variables)模板化的支持 #28025
  • docker service inspect --pretty 命令输出中显示 endpoint 模式 #26906
  • 通过缩短任务名称中的服务 ID,使 docker service ps 命令输出更易读 #28088
  • docker node ps 命令默认为当前节点 #25214
  • 向 service create 命令添加 --dns--dns-opt--dns-search 标志。 #27567
  • docker service update 命令添加 --force 标志 #27596
  • docker service createdocker service update 命令添加 --health-*--no-healthcheck 标志 #27369
  • docker service ps 命令添加 -q 标志 #27654
  • docker service ls 命令输出中显示全局服务的数量 #27710
  • docker service update 命令中移除 --name 标志。此标志仅在 docker service create 命令中起作用,因此已从 update 命令中移除 #26988
  • 修复了由于瞬时网络问题导致工作节点无法恢复的问题 #26646
  • 添加对健康感知负载均衡和 DNS 记录的支持 #27279
  • docker service create 命令添加 --hostname 标志 #27857
  • docker service create 命令添加 --host 标志,并向 docker service update 命令添加 --host-add--host-rm 标志 #28031
  • docker service create/update 命令添加 --tty 标志 #28076
  • 自动检测、存储和暴露管理器看到的节点 IP 地址 #27910
  • 对管理器密钥和 Raft 数据进行静态加密(Encryption at rest) #27967
  • docker service update 命令添加 --update-max-failure-ratio--update-monitor--rollback 标志 #26421
  • 修复了在容器内运行 docker swarm init 时地址自动发现的问题 #26457
  • (实验性功能) 添加 docker service logs 命令以查看服务的日志 #28089
  • docker service createupdate 命令中,通过 digest 固定镜像 #28173
  • docker node rm --forcedocker swarm leave --force 命令添加短标志 (-f) #28196
  • 添加选项来自定义 Raft 快照 (--max-snapshots, --snapshot-interval) #27997
  • 如果通过 digest 固定了镜像,则不再重新拉取 #28265
  • Swarm 模式支持 Windows #27838
  • 允许更新服务的 hostname #28771
  • 支持 v2 插件 #29433
  • 为服务添加内容信任 #29469

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

安全

  • 修复容器中共享卷的 selinux 标签问题 #23024
  • 禁止通过 apparmor 访问 /sys/firmware/** #26618

弃用

  • docker daemon 命令标记为已弃用。守护进程已移至单独的二进制文件 (dockerd),应改用该文件 #26834
  • 弃用未版本化的 API 端点 #28208
  • 移除对 Ubuntu 15.10 (Wily Werewolf) 的支持。Ubuntu 15.10 已达到生命周期结束 (EOL),不再接收更新 #27042
  • 移除对 Fedora 22 的支持。Fedora 22 已达到生命周期结束 (EOL),不再接收更新 #27432
  • 移除对 Fedora 23 的支持。Fedora 23 已达到生命周期结束 (EOL),不再接收更新 #29455
  • 弃用 docker pull 命令中的 repo:shortid 语法 #27207
  • 弃用不支持 d_type 的 overlay 和 overlay2 存储驱动程序的后端文件系统 #27433
  • 弃用 Dockerfile 中的 MAINTAINER 指令 #25466
  • 弃用 /images/json 端点的 filter 参数 #27872
  • 弃用设置重复的引擎标签 #24533
  • 弃用 NetworkSettings 中的“顶层”网络信息 #28437

1.12.6 (2017-01-10)

重要

Docker 1.12 附带了更新的 systemd 单元文件,适用于基于 rpm 的安装(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)。从旧版本的 Docker 升级时,升级过程可能不会自动安装更新版本的单元文件,或者如果满足以下条件,则无法启动 docker service

  • systemd 单元文件 (/usr/lib/systemd/system/docker.service) 包含本地更改,或者
  • 存在 systemd 覆盖文件,并且 ExecStart 指令中包含 -H fd://

启动 docker service 会产生错误

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 附带的版本 替换该文件
  • 如果存在,从 /usr/lib/systemd/system/docker.service 文件中移除 Requires=docker.socket 指令
  • ExecStart 指令中移除 -H fd://(包括主单元文件和任何存在的覆盖文件中的该指令)。

进行这些更改后,运行 sudo systemctl daemon-reloadsudo 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 标志的值。

类似地,如果您在使用默认 IPAM 驱动程序创建网络时指定了 --ipv6 标志,但没有提供 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 service

  • systemd 单元文件 (/usr/lib/systemd/system/docker.service) 包含本地更改,或者
  • 存在 systemd 覆盖文件,并且 ExecStart 指令中包含 -H fd://

启动 docker service 会产生错误

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 附带的版本 替换该文件
  • 如果存在,从 /usr/lib/systemd/system/docker.service 文件中移除 Requires=docker.socket 指令
  • ExecStart 指令中移除 -H fd://(包括主单元文件和任何存在的覆盖文件中的该指令)。

进行这些更改后,运行 sudo systemctl daemon-reloadsudo 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 标志的值。

类似地,如果您在使用默认 IPAM 驱动程序创建网络时指定了 --ipv6 标志,但没有提供 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 --subnetdocker network ls 命令出现的 panic 错误 #29416

Contrib

  • 修复在 Darwin 上的编译问题 #29370

1.12.4 (2016-12-12)

重要

Docker 1.12 附带了更新的 systemd 单元文件,适用于基于 rpm 的安装(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)。从旧版本的 Docker 升级时,升级过程可能不会自动安装更新版本的单元文件,或者如果满足以下条件,则无法启动 docker service

  • systemd 单元文件 (/usr/lib/systemd/system/docker.service) 包含本地更改,或者
  • 存在 systemd 覆盖文件,并且 ExecStart 指令中包含 -H fd://

启动 docker service 会产生错误

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 附带的版本 替换该文件
  • 如果存在,从 /usr/lib/systemd/system/docker.service 文件中移除 Requires=docker.socket 指令
  • ExecStart 指令中移除 -H fd://(包括主单元文件和任何存在的覆盖文件中的该指令)。

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

运行时

  • 修复卷元数据未被移除的问题 #29083
  • 异步关闭流以防止持有容器锁 #29050
  • 修复新创建的容器卷的selinux标签问题 #29050
  • 移除主机名验证 #28990
  • 修复由IO竞争引起的死锁问题 #29095 #29141
  • 如果容器正在重启,则返回空统计信息 #29150
  • 修复卷存储锁定问题 #29151
  • 确保API中的状态码一致 #29150
  • 修复overlay2中不透明目录权限不正确的问题 #29093
  • 检测插件内容并在 docker pull 时报错 #29297

Swarm 模式

  • 拒绝名称不为“default”的 swarm 规范 #29152

网络

日志记录

  • 更新 syslog 日志驱动 #29150

Contrib

  • 在 Fedora 中安装前先运行 "dnf upgrade" #29150
  • 将构建日期重新添加到 RPM 包中 #29150
  • deb 包的文件名已更改,包含发行版信息以区分不同的发行版代号 #27829

1.12.3 (2016-10-26)

重要

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

  • systemd 单元文件 (/usr/lib/systemd/system/docker.service) 包含本地更改,或者
  • 存在 systemd 覆盖文件,并且 ExecStart 指令中包含 -H fd://

启动 docker service 会产生错误

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 附带的版本 替换该文件
  • 如果存在,从 /usr/lib/systemd/system/docker.service 文件中移除 Requires=docker.socket 指令
  • ExecStart 指令中移除 -H fd://(包括主单元文件和任何存在的覆盖文件中的该指令)。

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

运行时

  • 修复容器中的 ambient capability 使用问题 (CVE-2016-8867) #27610
  • 防止 Windows 版 libcontainerd 中出现死锁 #27136
  • 修复 CopyFileWithTar 中的错误报告问题 #27075
  • 在容器重启时将健康状态重置为 "starting" #27387
  • 在存储目录中正确处理共享挂载传播 #27609
  • 修复 docker exec #27610
  • 修复与 containerd 事件日志的向后兼容性问题 #27693

Swarm 模式

  • 修复重启策略的转换问题 #27062

网络

日志记录

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

Contrib

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

1.12.2 (2016-10-11)

重要

Docker 1.12 附带了更新的 systemd 单元文件,适用于基于 rpm 的安装(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)。从旧版本的 Docker 升级时,升级过程可能不会自动安装更新版本的单元文件,或者如果满足以下条件,则无法启动 docker service

  • systemd 单元文件 (/usr/lib/systemd/system/docker.service) 包含本地更改,或者
  • 存在 systemd 覆盖文件,并且 ExecStart 指令中包含 -H fd://

启动 docker service 会产生错误

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 附带的版本 替换该文件
  • 如果存在,从 /usr/lib/systemd/system/docker.service 文件中移除 Requires=docker.socket 指令
  • ExecStart 指令中移除 -H fd://(包括主单元文件和任何存在的覆盖文件中的该指令)。

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

运行时

  • 修复由于过滤 docker ps 命令时的竞态条件导致的 panic #26049
  • 实现重试逻辑,以防止在使用 aufs 存储驱动时出现“无法删除文件系统”错误 #26536
  • 如果 dm.use_deferred_removal 已启用,则防止 devicemapper 删除设备符号链接 #24740
  • 修复当命令以无效选项运行时,CLI 未返回正确退出码的问题 #26777
  • 修复由于健康检查中的标准输出/标准错误处理错误导致的 panic #26507
  • 修复 exec 的子进程处理 #26874
  • 修复 HEALTHCHECK CMD 的 exec 形式 #26208

网络

  • 修复 armv5 平台上的守护进程启动 panic #24315

Swarm 模式

  • 如果在 `service create` 或 `service update` 时发布了两次相同的端口,则报错 docker/swarmkit#1495

Contrib

  • 更新 debian sysv-init 脚本,使用 `dockerd` 代替 `docker daemon` #25869
  • 提高在 MacOS Sierra 上运行 Docker 客户端的稳定性 #26875
  • 修复在 debian stretch 上的安装问题 #27184

Windows

  • 修复在 ConEmu 中运行 Docker 客户端时箭头导航不起作用的问题 #25578

1.12.1 (2016-08-18)

重要

Docker 1.12 附带了更新的 systemd 单元文件,适用于基于 rpm 的安装(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)。从旧版本的 Docker 升级时,升级过程可能不会自动安装更新版本的单元文件,或者如果满足以下条件,则无法启动 docker service

  • systemd 单元文件 (/usr/lib/systemd/system/docker.service) 包含本地更改,或者
  • 存在 systemd 覆盖文件,并且 ExecStart 指令中包含 -H fd://

启动 docker service 会产生错误

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 附带的版本 替换该文件
  • 如果存在,从 /usr/lib/systemd/system/docker.service 文件中移除 Requires=docker.socket 指令
  • ExecStart 指令中移除 -H fd://(包括主单元文件和任何存在的覆盖文件中的该指令)。

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

客户端

  • 在 `node inspect --pretty` 中添加 `Joined at` 信息 #25512
  • 修复 `service inspect` 时崩溃的问题 #25454
  • 修复 `service update --env-add` 未按预期工作的问题 #25427
  • 修复 `service update --publish-add` 未按预期工作的问题 #25428
  • 删除 `service update --network-add` 和 `service update --network-rm` 标志,因为此功能在 1.12 版本中尚未实现,但在 1.12.0 客户端中被意外添加 #25646

Contrib

  • 针对 Debian Jessie、Ubuntu Trusty 和 Raspbian Jessie 的官方 ARM 安装 #24815 #25591
  • 为每个发行版/版本添加 selinux 策略,修复在 Fedora 24 和 Oracle Linux 上无法成功安装的问题 #25334 #25593

网络

  • 修复在 Swarm Mode 中使用 Docker overlay 驱动程序时容器无法通过主机名访问的问题 #25603 #25648
  • 修复带有已发布端口的服务上出现的随机网络问题 #25603
  • 修复缩容和扩容后不可靠的服务间通信问题 #25603
  • 修复删除节点上所有任务并重新添加后与其他服务连接中断的问题 #25603
  • 修复任务启动失败导致竞争条件,进而出现掩盖实际错误的 `network xxx not found` 错误的问题 #25550
  • 放松对使用未按 RFC 2782 格式化的 SRV 记录的外部服务的 SRV 记录验证 #25739

插件(实验性)

  • 使 daemon 事件监听插件生命周期事件 #24760
  • 在启用插件之前检查插件状态 #25033
  • 在执行 plugin rm 时从文件系统中移除插件根目录 #25187
  • 防止安装多个插件时发生死锁 #25384

运行时

  • 在 daemon 日志中屏蔽加入集群的令牌(join tokens) #25346
  • 修复 docker ps --filter 导致结果不再按创建时间排序的问题 #25387
  • 修复各种崩溃问题 #25053

安全

  • /proc/timer_list 添加到 masked paths 列表中,以防止主机信息泄露 #25630
  • 允许 systemd 仅使用 --cap-add SYS_ADMIN 运行,而无需同时添加 --cap-add DAC_READ_SEARCH 或禁用 seccomp 过滤 #25567

Swarm

  • 修复 swarm 在失去仲裁(quorum)后选举新 leader 时卡住的问题 #25055
  • 修复 leader 故障转移后容器被意外重新调度的问题 #25017
  • 将 swarm 根 CA 密钥更改为 P256 曲线 swarmkit#1376
  • 允许强制从 swarm 中移除节点 #25159
  • 修复节点离开 swarm 时连接泄露的问题 swarmkit/#1277
  • 将 swarm 证书回溯一个小时,以容忍更大的时钟偏差 swarmkit/#1243
  • 避免在存在大量不可调度任务时导致 CPU 使用率过高 swarmkit/#1287
  • 修复 global task 无法启动的问题 swarmkit/#1295
  • 回收 raft 日志的垃圾 swarmkit/#1327

  • 在 daemon 重启后持久化 local volume 选项 #25316
  • 修复 volume unmount 时未返回 mount ID 的问题 #25333
  • 修复 volume mount 可能意外创建 bind mount 的问题 #25309
  • docker service create --mount type=bind,... 现在正确验证源路径是否存在,而不是创建它 #25494

1.12.0 (2016-07-28)

重要

Docker 1.12.0 附带了用于基于 rpm 的安装(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)的更新的 systemd unit 文件。从旧版本 Docker 升级时,升级过程可能不会自动安装更新的 unit 文件,或者在以下情况下无法启动 docker service

  • systemd 单元文件 (/usr/lib/systemd/system/docker.service) 包含本地更改,或者
  • 存在 systemd 覆盖文件,并且 ExecStart 指令中包含 -H fd://

启动 docker service 会产生错误

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 附带的版本 替换该文件
  • 如果存在,从 /usr/lib/systemd/system/docker.service 文件中移除 Requires=docker.socket 指令
  • ExecStart 指令中移除 -H fd://(包括主单元文件和任何存在的覆盖文件中的该指令)。

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

重要

从 Docker 1.12 开始,Linux docker 安装现在包含两个额外的二进制文件:dockerddocker-proxy。如果您有安装 docker 的脚本,请确保相应地更新它们。

构建器

  • 新增 HEALTHCHECK Dockerfile 指令,以支持用户自定义的健康检查 #23218
  • 新增 SHELL Dockerfile 指令,用于在使用 shell 格式编写 Dockerfile 中的命令时指定默认 shell #22489
  • 添加 #escape= Dockerfile 指令,以支持 Dockerfile 中文件路径的平台特定解析 #22268
  • .dockerignore 中添加注释支持 #23111
  • Dockerfiles 中支持 UTF-8 #23372
  • 如果存在,跳过 Dockerfile.dockerignore 中的 UTF-8 BOM 字节 #23234
  • Windows: 支持 ARG 以与 Linux 匹配 #22508
  • 修复使用禁用桥接网络的守护程序构建时的错误消息 #22932

Contrib

  • 为 Centos 7 和 Oracle Linux 7 启用 seccomp #22344
  • 移除 systemd 单元中的 MountFlags 以允许共享挂载传播 #22806

分发

  • 添加 --max-concurrent-downloads--max-concurrent-uploads 守护程序标志,适用于网络连接不支持并行下载/上传的情况 #22445
  • Registry 操作现在遵守 ALL_PROXY 环境变量 #22316
  • 为用户提供更多关于 docker load 的信息 #23377
  • 始终保存关于推送和拉取镜像的 registry digest 元数据 #23996

日志记录

  • Syslog 日志驱动程序现在支持 DGRAM 套接字 #21613
  • docker logs 添加 --details 选项以同时显示日志标签 #21889
  • 启用 syslog 日志记录器以访问 env 和 labels #21724
  • 添加一个额外的 syslog 格式选项 rfc5424micro,以允许 syslog 时间戳具有微秒级分辨率 #21844
  • 创建容器时继承守护程序的日志选项 #21153
  • 从日志消息标签中移除 docker/ 前缀,并将其替换为 {{.DaemonName}},以便用户可以选择更改前缀 #22384

网络

  • 使用 IPVS 实现内置的基于虚拟 IP 的内部和入口负载均衡 #23361
  • 使用入口覆盖网络实现 Routing Mesh #23361
  • 使用加密的控制平面和数据平面实现安全的跨主机覆盖网络 #23361
  • MacVlan 驱动程序不再是实验性功能 #23524
  • network ls 命令添加 driver 过滤器 #22319
  • docker ps --filter 添加 network 过滤器 #23300
  • createrunnetwork connect 命令添加 --link-local-ip 标志,用于指定容器的链路本地地址 #23415
  • 添加网络标签过滤器支持 #21495
  • 移除 Swarm-Mode 中 Overlay 网络的外部 KV 存储依赖 #23361
  • 添加容器的短 ID 作为默认网络别名 #21901
  • run 命令的 --dns--net=host 选项不再互斥 #22408
  • 修复重命名具有生成名称的容器时出现的 DNS 问题 #22716
  • 允许同时使用 network inspect -f {{.Id}}network inspect -f {{.ID}},以解决 inspect 输出不一致的问题 #23226

插件(实验性)

  • 新的 plugin 命令,用于通过 installenabledisablerminspectset 子命令管理插件 #23446

远程 API (v1.24) & 客户端

  • 将二进制文件拆分为两个:docker (客户端) 和 dockerd (守护程序) #20639
  • docker images --filter 添加 beforesince 过滤器 #22908
  • docker search 添加 --limit 选项 #23107
  • docker search 添加 --filter 选项 #22369
  • docker info 输出添加安全选项 #21172 #23520
  • docker info 输出添加不安全的注册表 #20410
  • 通过 TLS 用户信息扩展 Docker 授权 #21556
  • devicemapper:通过 docker info 暴露 Minimum Thin Pool Free Space #21945
  • API 在发生错误时现在返回 JSON 对象,使其更加一致 #22880
  • 防止 docker run -i --restart 在退出时挂起 #22777
  • 修复 API/CLI 在主机名验证上的差异 #21641
  • 修复 stats 中大小格式的差异,从 HumanSize 变更为 BytesSize #21773
  • authz:当请求被拒绝时,返回 Forbidden 退出码 (403) #22448
  • Windows:修复 tty 相关显示问题 #23878

运行时

  • 将用户空间代理拆分为单独的二进制文件(docker-proxy#23312
  • 添加 --live-restore 守护程序标志,以便在守护程序关闭时保持容器运行,并在启动时重新获得控制 #23213
  • 支持添加 OCI 兼容的运行时(通过 --add-runtime 守护程序标志),并在 createrun 时使用 --runtime 选择其中一个 #22983
  • 针对 Linux 4.0+ 的新 overlay2 graphdriver,支持多个 lower 目录 #22126
  • 新增 load/save 镜像事件 #22137
  • 添加通过 systemd 重新加载守护进程配置的支持 #22446
  • 为 btrfs 添加磁盘配额支持 #19651
  • 为 zfs 添加磁盘配额支持 #21946
  • 添加对 docker run --pid=container:<id> 的支持 #22481
  • 使默认的 seccomp 配置与选定的能力对齐 #22554
  • 在守护进程重新加载配置时添加 daemon reload 事件 #22590
  • 在 pprof 分析器中添加 trace 能力,以二进制形式显示执行跟踪 #22715
  • 添加 detach 事件 #22898
  • 添加通过 --sysctl 设置 sysctl 的支持 #19265
  • createrun 命令中添加 --storage-opt 标志,允许在 devicemapper 上设置 size #19367
  • 添加 --oom-score-adjust 守护进程标志,默认值为 -500,使守护进程在容器之前被杀死的可能性降低 #24516
  • 取消弃用 runbuildcreateupdate 命令中 --cpu-shares 的短别名 -c #22621
  • 防止在 eCryptfs 挂载上使用 aufs 和 overlay graphdrivers #23121
  • 修复 tmpfs 挂载顺序问题 #22329
  • 使用 docker ps -a -f exited=0 不再列出已创建的容器 #21947
  • 修复容器卡在“移除中”(Removal In Progress)状态的问题 #22423
  • 修复在 run/create 命令中未指定命令时返回 HTTP 500 而非 400 的错误 #22762
  • 修复 --detach-keys 错误,该错误导致与分离键前缀匹配的输入未被保留 #22943
  • 使用 --privileged 模式时,SELinux 标签现已禁用 #22993
  • 如果卷挂载到容器中,/etc/hosts/etc/resolv.conf/etc/hostname 不再进行 SELinux 重新标记 #22993
  • 修复 --tmpfs 在挂载选项行为方面的不一致问题 #22438
  • 修复守护进程在启动时挂起的问题 #23148
  • 忽略 SIGPIPE 事件,以防止 journald 重启在某些情况下导致 docker 崩溃 #22460
  • 发生错误时,容器不会从统计列表中移除 #20835
  • 修复守护进程重启时 on-failure 重启策略的问题 #20853
  • 修复了当容器使用另一个容器的网络时,stats 命令的一个问题 #21904

Swarm 模式

  • 新增 `swarm` 命令,用于管理集群 (swarms),包含 `init`, `join`, `join-token`, `leave`, `update` 子命令 #23361 #24823
  • 新增 `service` 命令,用于管理集群范围的服务 (service),包含 `create`, `inspect`, `update`, `rm`, `ps` 子命令 #23361 #25140
  • 新增 `node` 命令,用于管理节点 (node),包含 `accept`, `promote`, `demote`, `inspect`, `update`, `ps`, `ls` 和 `rm` 子命令 #23361 #25140
  • (实验性功能) 新增 `stack` 和 `deploy` 命令,用于管理和部署多服务应用 #23522 #25140

  • 添加对本地和全局卷范围 (volume scopes) 的支持 (类似于网络范围) #22077
  • 允许卷驱动程序 (volume drivers) 提供 `Status` 字段 #21006
  • 为卷 (volume) 添加名称/驱动程序过滤支持 #21361
  • 挂载 (Mount)/卸载 (Unmount) 操作现在接收一个不透明 ID (opaque ID),以允许卷驱动程序区分两个调用者 #21015
  • 修复了在特殊情况下阻止删除卷的问题 #22103
  • Windows: 启用主机路径 (host-path) 的自动创建功能,以匹配 Linux 的行为 #22094

弃用

  • 环境变量 `DOCKER_CONTENT_TRUST_OFFLINE_PASSPHRASE` 和 `DOCKER_CONTENT_TRUST_TAGGING_PASSPHRASE` 已分别重命名为 `DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE` 和 `DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE` #22574
  • 移除已弃用的 `syslog-tag`, `gelf-tag`, `fluentd-tag` 日志选项,转而使用更通用的 `tag` 选项 #22620
  • 移除在 API 容器启动时传递 HostConfig 的已弃用功能 #22570
  • 移除 docker tag 命令上已弃用的 `-f`/`--force` 标志 #23090
  • 移除已弃用的 `/containers/<id|name>/copy` 端点 #22149
  • 移除已弃用的 `docker ps` 标志 `--since` 和 `--before` #22138
  • 弃用旧版带有 3 个参数形式的 `docker import` 命令 #23273

1.11.2 (2016-05-31)

网络

  • 修复在非正常重启期间覆盖网络 (overlay networks) 上出现的陈旧端点问题 ( #23015)
  • 修复了 `docker inspect`/`ps`/`port` 命令可能报告错误端口的问题 ( #22997)

运行时

  • 修复运行 `docker build` 时可能发生的 panic 错误 ( #23032)
  • 修复对 `--user` 参数的解释问题 ( #22998)
  • 修复阻止容器统计信息正确报告的错误 ( #22955)
  • 修复一个问题,该问题阻止容器在守护进程重启后重启 ( #22947)
  • 修复在 Ubuntu 16.04 上运行 32 位二进制文件时出现的问题 ( #22922)
  • 修复镜像删除和容器附加时可能发生的死锁问题 ( #22918)
  • 修复如果容器依赖于容器化的集群存储,则在守护进程重启后无法启动容器的问题 ( #22561)
  • 修复在 CentOS 上使用 devicemapper 时导致 docker ps 命令挂起的问题 ( #22168, #23067)
  • 修复使用 devicemapper 时无法 docker exec 进入容器的 bug ( #22168, #23067)

1.11.1 (2016-04-26)

分发

  • 修复 schema2 manifest 媒体类型为 application/vnd.docker.container.image.v1+json ( #21949)

文档

  • 补充 1.11.0 中引入的更改所缺失的 API 文档 ( #22048)

构建器

  • 将传递给 docker build 的标签作为参数,在处理过的 Dockerfile 末尾添加一个隐式的 LABEL 命令 ( #22184)

网络

  • 修复转发 DNS 查询时可能发生的 panic ( #22261)
  • 修复使用用户定义网络时,OS 线程可能进入错误网络命名空间的问题 ( #22261)

运行时

  • 修复无法通过配置文件重新加载标签配置的 bug ( #22299)
  • 修复一个回归问题,该问题导致挂载 /var/run 的容器阻止其他容器被移除 ( #22256)
  • 修复无法同时更新 memory-swapmemory 值的问题 ( #22255)
  • 修复来自 1.11.0 的一个回归问题,该问题导致 /auth 端点在未提供时不会初始化 serveraddress ( #22254)
  • 补充取消计划重启时对容器临时文件的清理 ( #22237)
  • 删除未指定重启策略时的警告错误消息 ( #21993)
  • 修复通过 json 规范激活插件时可能发生的 panic ( #22191)
  • 修复重启退避逻辑,以便在容器运行至少 10 秒后正确重置延迟 ( #22125)
  • 删除容器重启被取消时的错误消息 ( #22123)
  • 修复 dockerdocker exec 后未正确清理的问题 ( #22121)
  • 修复处理并发 docker stats 命令时可能发生的 panic ( #22120)
  • 撤销对不存在的主机目录自动创建的废弃 ( #22065)
  • 在 Daemon(守护进程)关机时隐藏误导性的 RPC 错误 ( #22058)

1.11.0 (2016-04-13)

重要

从 Docker 1.11 开始,Linux Docker 安装现在由 4 个二进制文件组成(dockerdocker-containerddocker-containerd-shimdocker-runc)。如果您有依赖于 docker 是单个静态二进制文件的脚本,请务必更新它们。否则,与 Daemon 的交互方式保持不变,其他二进制文件的使用应该是透明的。Windows Docker 安装仍然是单个二进制文件 docker.exe

构建器

  • 修复了一个 bug,该 bug 导致 Docker 在处理 WORKDIR 命令时未使用正确的 uid/gid ( #21033)
  • 修复了一个 bug,该 bug 导致使用 userns(用户命名空间)进行复制操作时未使用正确的 uid/gid ( #20782, #21162)

客户端

  • 安全选项使用 : 分隔符的方式已被废弃。应该改用 = ( #21232)
  • 客户端用户代理现在在 pullbuildpushloginsearch 操作期间传递给 Registry(注册中心) ( #21306, #21373)
  • 允许通过 API 分别设置 Domainname(域名)和 Hostname(主机名) ( #20200)
  • docker info 现在会警告用户,如果它无法检测到内核版本或操作系统 ( #21128)
  • 修复了一个问题,该问题导致 docker stats --no-stream 输出可能全部是 0 ( #20803)
  • 修复了一个 bug,该 bug 导致一些新启动的容器不会出现在正在运行的 docker stats 命令输出中 ( #20792)
  • 后处理不再对 linux-cgo 终端启用 ( #20587)
  • 如果 --hostname 的值不符合 RFC1123,现在将被拒绝 ( #20566)
  • Docker 现在支持使用 SOCKS 代理 ( #20366, #18373)
  • Docker 现在支持外部凭证存储 ( #20107)
  • docker ps 现在支持显示容器内部挂载的卷列表 ( #20017)
  • docker info 现在还会报告 Docker 的根目录位置 ( #19986)
  • Docker 现在禁止使用空用户名登录(空格会被去除) ( #19806)
  • Docker 事件属性现在按键排序 ( #19761)
  • docker ps 不再显示已停止容器的导出端口 ( #19483)
  • Docker 现在在 save/export 命令失败后会清理自身 ( #17849)

分发

  • 修复了拉取零层镜像时发生的 panic ( #21222)
  • 修复了向配置错误的 token service 注册表推送时可能发生的 panic ( #21212)
  • 在进行受信任推送时,所有一级委托角色现在都会被签名 ( #21046)
  • 添加了对注册表的 OAuth 支持 ( #20970)
  • docker login 现在使用 docker/distribution 中找到的实现来处理 token ( #20832)
  • docker login 不再提示输入电子邮件 ( #20565)
  • 如果没有可用的基本认证凭据,Docker 现在会回退到 registry V1 ( #20241)
  • 在网络错误/超时后,Docker 现在会尝试从中断的地方继续下载层 ( #19840)
  • 修复了跨仓库推送时生成的 manifest mediaType ( #19509)
  • 修复了在启用内容信任时,Docker 在拉取镜像时请求额外推送凭据的问题 ( #20382)

日志记录

  • 修复了 journald 日志驱动中的一个竞态条件问题 ( #21311)
  • Docker syslog 驱动现在在输出日志时使用 RFC-5424 格式 ( #20121)
  • Docker GELF 日志驱动现在允许通过 gelf-compression-typegelf-compression-level 选项指定压缩算法和级别 ( #19831)
  • Docker daemon 现在学会了通过 --raw-logs 选项输出无颜色日志 ( #19794)
  • Docker 在 Windows 平台现在包含一个名为 etwlogs 的 ETW (Event Tracing in Windows) 日志驱动 ( #19689)
  • Journald 日志驱动现在学会了如何处理标签 ( #19564)
  • fluentd 日志驱动现在学会了以下选项:fluentd-address, fluentd-buffer-limit, fluentd-retry-wait, fluentd-max-retriesfluentd-async-connect ( #19439)
  • Docker 现在学会了通过新的 gcplogs 日志驱动将日志发送到 Google Cloud。 ( #18766)

其他

  • 使用 docker save 保存关联镜像后,后续的 docker load 将正确恢复它们的父子关系 ( #21385)
  • 添加了对在 OpenBSD 上构建 Docker cli 的支持 ( #21325)
  • 现在可以在创建网络、卷和镜像时应用标签 ( #21270)
  • The dockremap is now created as a system user ( #21266)
  • Fix a few response body leaks ( #21258)
  • Docker, when run as a service with systemd, will now properly manage its processes cgroups ( #20633)
  • docker info now reports the value of cgroup KernelMemory or emits a warning if it is not supported ( #20863)
  • docker info now also reports the cgroup driver in use ( #20388)
  • Docker completion is now available on PowerShell ( #19894)
  • dockerinit is no more ( #19490, #19851)
  • Support for building Docker on arm64 was added ( #19013)
  • Experimental support for building docker.exe in a native Windows Docker installation ( #18348)

网络

  • Fix panic if a node is forcibly removed from the cluster ( #21671)
  • Fix "error creating vxlan interface" when starting a container in a Swarm cluster ( #21671)
  • docker network inspect will now report all endpoints whether they have an active container or not ( #21160)
  • Experimental support for the MacVlan and IPVlan network drivers has been added ( #21122)
  • Output of docker network ls is now sorted by network name ( #20383)
  • Fix a bug where Docker would allow a network to be created with the reserved default name ( #19431)
  • docker network inspect returns whether a network is internal or not ( #19357)
  • Control IPv6 via explicit option when creating a network (docker network create --ipv6). This shows up as a new EnableIPv6 field in docker network inspect ( #17513)
  • Support for AAAA Records (aka IPv6 Service Discovery) in embedded DNS Server ( #21396)
  • Fix to not forward docker domain IPv6 queries to external servers ( #21396)
  • Multiple A/AAAA records from embedded DNS Server for DNS Round robin ( #21019)
  • Fix endpoint count inconsistency after an ungraceful dameon restart ( #21261)
  • Move the ownership of exposed ports and port-mapping options from Endpoint to Sandbox ( #21019)
  • Fixed a bug which prevents docker reload when host is configured with ipv6.disable=1 ( #21019)
  • Added inbuilt nil IPAM driver ( #21019)
  • Fixed bug in iptables.Exists() logic #21019
  • 修复了在使用 overlay 网络时 Veth 接口的泄露问题 ( #21019)
  • 修复了在关机期间删除网络后阻止 docker 重载的 bug ( #20214)
  • 确保在 firewalld 重载时 iptables 链得到重新创建 ( #20419)
  • 允许在配置重载期间传递全局数据存储 ( #20419)
  • 对于匿名容器,使用别名进行 IP 到名称的映射,例如:DNS PTR 记录 ( #21019)
  • 修复了从 /etc/hosts 文件删除条目时可能发生的 panic(崩溃)问题 ( #21019)
  • 从容器网络命名空间获取转发的 DNS 查询来源 ( #21019)
  • 修复了在守护进程重载时,桥接网络的网络内部模式配置会丢失的问题 ([#21780] ( https://github.com/docker/docker/pull/21780))
  • 修复了在守护进程重载时,IPAM 驱动选项配置会丢失的问题 ([#21914] ( https://github.com/docker/docker/pull/21914))

插件

  • 修复了每次枚举插件时会发生的文件描述符泄露问题 ( #20686)
  • 修复了 Authz 插件在处理大量数据时会破坏有效负载主体的问题 ( #20602)

运行时

  • 修复了在容器使用无效参数启动后进行清理时可能发生的 panic(崩溃)问题 ( #21716)
  • 修复了事件计时器过早停止的竞态条件问题 ( #21692)
  • 修复了层存储中的竞态条件,这些条件可能导致 map 损坏并导致进程崩溃 ( #21677)
  • 取消弃用为挂载点自动创建主机目录的功能。此功能在 ( #21666) Docker 1.9 中被标记为弃用,但由于其向后不兼容性太大,因此决定保留此功能。
  • 现在当启用 userns 时,容器可以共享 NET 和 IPC 命名空间 ( #21383)
  • docker inspect <image-id> 命令现在将显示 rootfs 层 ( #21370)
  • Docker Windows 现在拥有了一个最小化的 top 命令实现 ( #21354)
  • Docker 现在会报告由于其状况而无法启动的容器所对应的故障可执行文件 ( #21345)
  • 如果 udev sync 不可用,使用 device mapper 的 Docker 现在将拒绝运行 ( #21097)
  • 修复了 Docker 在配置重载时不会验证配置文件的问题 ( #21089)
  • 修复了如果初次启动失败,在附加(attach)时会发生的挂起问题 ( #21048)
  • 修复了守护进程配置文件中的镜像仓库服务选项未被正确考虑的问题 ( #21045)
  • 修复了 exec 和 resize 操作之间的竞态问题 ( #21022)
  • 修复了过滤 Docker 事件时,纳秒未被正确考虑的问题 ( #21013)
  • 修复了当传递 64 字节 ID 时 Docker 命令的处理问题 ( #21002)
  • Docker 现在会在成功删除网络时返回 204 (即 http.StatusNoContent) 代码 ( #20977)
  • 修复了一个错误,即如果守护进程即将杀死的进程已自行退出,则守护进程会无限期等待 ( #20967)
  • devmapper 驱动程序支持 dm.min_free_space 选项。如果映射设备的可用空间达到指定值,将禁止创建新设备。 ( #20786)
  • Docker 现在可以通过 --security-opt=no-new-privileges 标志阻止容器中的进程获取新权限 ( #20727)
  • 使用 --device 选项启动容器现在将正确解析符号链接 ( #20684)
  • 修复了 Docker 配置重新加载时仅修改给定配置文件中存在的值的问题 ( #20604)
  • Docker 现在允许在使用 --net=host 时通过 --hostname 标志设置容器主机名 ( #20177)
  • Docker 现在允许在使用 --userns-remap 运行时,如果同时指定 --privileged 和新的 --userns=host 标志,则执行特权容器 ( #20111)
  • 修复了 Docker 在崩溃后重启时未正确清理旧容器的问题 ( #19679)
  • 如果 Docker 无法识别配置文件中的配置键,现在会报错 ( #19517)
  • 修复了守护进程启动时,当容器依赖于在容器内运行的插件时的容器加载问题 ( #19500)
  • docker update 现在支持更改容器的重启策略 ( #19116)
  • docker inspect 现在还返回一个新的 State 字段,其中包含人类可读的容器状态 (即 createdrestartingrunningpausedexiteddead 之一)( #18966)
  • Docker 支持通过 pids-limit 标志限制容器内的活跃 pids (即进程) 数量。注意:这需要在内核配置中启用 CGROUP_PIDS=y。 ( #18697)
  • docker load 现在有一个 --quiet 选项,用于抑制加载输出 ( #20078)
  • 修复了 IPv6 对等体的邻居发现中的一个错误 ( #20842)
  • 修复了如果容器使用无效选项启动时,清理过程中的 panic (程序崩溃) 问题 ( #21802)
  • 修复了如果终端关闭时容器无法停止的情况 ( #21840)

安全

  • 具有 pcp_pmcd_t selinux 类型的对象被授予了对 /var/lib/docker(/.*)? 的管理访问权限 ( #21370)
  • restart_syscallcopy_file_rangemlock2 已加入默认 seccomp 配置文件的允许调用列表 ( #21117, #21262)
  • sendrecvx32 已添加到默认 seccomp 配置文件的允许系统调用和架构列表中 ( #19432)
  • Docker 内容信任现在请求服务器执行快照签名 ( #21046)
  • 对使用 YubiKey 进行内容信任签名的支持已移出实验阶段 ( #21591)

  • docker volume ls 的输出现在按卷名排序 ( #20389)
  • 本地卷现在可以接受类似于 unix mount 工具的选项 ( #20262)
  • 修复了一个问题,即单字母目录名不能用作卷的源 ( #21106)
  • docker run -v 现在接受一个新标志 nocopy。这指示运行时不要将容器路径内容复制到卷中(这是默认行为) ( #21223)

1.10.3 (2016-03-10)

运行时

  • 修复了 Docker 客户端因“无法识别的输入头”错误退出的问题 #20706
  • 修复了当 Exec 同时使用 AttachStdinDetach 标志启动时 Docker 退出的问题 #20647

分发

  • 修复了并行推送多个共享相同层的镜像到同一仓库时可能发生的崩溃问题 #20831
  • 修复了向使用配置错误的令牌服务的仓库推送镜像时出现的 panic 问题 #21030

插件系统

  • 修复了启用 SELinux 时阻止卷插件启动的问题 #20834
  • 避免了当卷插件对 Get 请求返回空响应时 Docker 退出的问题 #20682
  • 修复了插件系统在插件出错时泄漏文件描述符的问题 #20680

安全

  • 修复了 docker build 期间 linux32 仿真失败的问题 #20672。这是由于默认的 seccomp 配置文件阻止了 personality 系统调用。
  • 修复了 Oracle XE 10g 在容器中启动失败的问题 #20981。这是由于默认的 seccomp 配置文件阻止了 ipc 系统调用。
  • 修复了用户命名空间在 Linux From Scratch 上无法工作的问题 #20685
  • 修复了启用 userns 且 subuidsubgid 文件包含注释时阻止守护程序启动的问题 #20725

1.10.2 (2016-02-22)

运行时

  • 阻止了 systemd 在其配置重新加载时删除容器的 cgroups #20518
  • 通过在挂载 /dev/mqueue 时忽略 --read-only 解决了 SELinux 问题 #20333
  • 修复了使用 userns 时,docker cp 期间使用的 chown 权限问题 #20446
  • 修复了配置加载问题,之前所有布尔值都默认为 true #20471
  • 修复了 docker logs -f 偶尔出现的 panic 问题 #20522

分发

  • 如果删除失败,保留层引用以避免严重不一致的状态 #20513
  • 在取消迁移时优雅地处理一个边界情况 #20372
  • 修复对压缩数据的 docker import (导入) 问题 #20367
  • 修复迁移过程中 tar-split 文件损坏导致后续 docker push 和 docker save 失败的问题 #20458

网络

  • 修复当嵌入式 DNS 接收到无效数据时守护进程崩溃的问题 #20510

  • 修复多个同名卷引用导致的问题 #20381

安全

  • 修复潜在的缓存损坏和委托冲突问题 #20523

1.10.1 (2016-02-11)

运行时

  • 迁移硬失败时不要停止守护进程 #20156
  • 修复迁移到基于内容寻址的镜像时遇到的各种问题 #20058
  • 修复用户命名空间中 ZFS 权限错误的问题 #20045
  • 防止将主机的 /dev/mqueue 泄露给所有容器,使其保持为容器特定 #19876 #20133
  • 修复 docker ps --filter before=... 在未提供 -a 标志时显示已停止容器的问题 #20135

安全

  • 修复阻止 docker events 与授权插件正常工作的问题 #20002

分发

  • 添加额外验证,防止上传无效数据到仓库 #20164
  • 修复导致镜像引用主机名无法使用大写字母的回归问题 #20175

网络

  • 修复存在 firewalld 时用户定义网络中嵌入式 DNS 的问题 #20060
  • 修复在关机期间移除网络导致 Docker 无法运行的问题 #20181 #20235
  • 嵌入式 DNS 现在能够返回压缩结果 #20181
  • 修复使用 userland-proxy=false 时端口映射的问题 #20181

日志记录

  • 修复 tcp+tls 协议会被拒绝的错误 #20109

  • 修复较旧的卷驱动程序无法接收卷选项的问题 #19983

其他

  • 从 Docker systemd 服务中移除 TasksMax #20167

1.10.0 (2016-02-04)

重要

Docker 1.10 对镜像和层使用了新的基于内容寻址的存储方式。

首次运行 docker 时会执行迁移,这可能需要大量时间,具体取决于存在的镜像数量。更多信息请参阅 Wiki 页面: https://github.com/docker/docker/wiki/Engine-v1.10.0-content-addressability-migration 我们还发布了一个很棒的迁移工具,它使您能够在更新之前执行迁移以减少停机时间。Engine 1.10 迁移工具可在 Docker Hub 上找到: https://hub.docker.com/r/docker/v1.10-migrator/

运行时

  • 新增 docker update 命令,用于更新运行中容器的资源限制 #15078
  • docker run 命令添加 --tmpfs 标志,用于在容器中创建一个 tmpfs 挂载 #13587
  • docker images 命令添加 --format 标志 #17692
  • 允许在文件中设置守护进程配置,并通过 SIGHUP 信号进行热重载 #18587
  • 更新了 docker 事件,使其包含更多元数据和事件类型。此更改在 API 中向后兼容,但在 CLI 中不兼容。#18888
  • docker run 命令添加 --blkio-weight-device 标志 #13959
  • docker run 命令添加 --device-read-bps--device-write-bps 标志 #14466
  • docker run 命令添加 --device-read-iops--device-write-iops 标志 #15879
  • docker run 命令添加 --oom-score-adj 标志 #16277
  • attach, run, startexec 命令添加 --detach-keys 标志,用于覆盖从容器分离的默认按键序列 #15666
  • run, createbuild 命令添加 --shm-size 标志,用于设置 /dev/shm 的大小 #16168
  • docker info 命令中显示运行中、已停止和已暂停的容器数量 #19249
  • docker info 命令中显示 OSTypeArchitecture #17478
  • daemon 命令添加 --cgroup-parent 标志,用于设置所有容器的 cgroup 父级 #19062
  • docker cp 命令添加 -L 标志,用于跟随符号链接 #16613
  • docker ps 命令新增 status=dead 过滤器 #17908
  • 更改 docker run 命令的退出码,以区分运行时错误和应用程序错误 #14012
  • 增强 docker events --since--until 选项,使其支持纳秒和时区 #17495
  • docker stats 命令添加 --all/-a 标志,用于包含运行中和已停止的容器 #16742
  • 将默认的 cgroup-driver 更改为 cgroupfs #17704
  • 使用 docker build -t 标记镜像时,会触发 "tag" 事件 #17115
  • 在启动守护进程时,尽力按链接的容器的顺序启动 #18208
  • docker build 命令中增加添加多个标签的功能 #15780
  • 允许对任何 URL 发起 OPTIONS 请求,从而修复 CORS 问题 #19569
  • 修复 `docker build` 命令的 `--quiet` 标志,使其真正安静 #17428
  • 修复 `docker images --filter dangling=false` 命令,使其现在会显示所有非悬空镜像 #19326
  • 修复导致在重启时自动重启功能关闭的竞态条件 #17629
  • 识别 GPFS 文件系统 #19216
  • 修复一个阻止启动容器的隐蔽 bug #19751
  • 禁止在容器重启期间执行 `exec` 操作 #19722
  • devicemapper:增加 `--storage-opt dm.basesize` 的值现在将在守护程序重启时增加基础设备大小 #19123

安全

  • 为 `daemon` 添加 `--userns-remap` 标志,以支持用户命名空间(以前在实验性功能中) #19187
  • 在 `--security-opt` 中添加对自定义 seccomp 配置文件的支持 #17989
  • 添加默认 seccomp 配置文件 #18780
  • 为 `daemon` 添加 `--authorization-plugin` 标志,以自定义 ACL #15365
  • Docker 内容信任现在支持读取和写入用户委托的能力 #18887。这是一项可选的、需要选择启用的功能,启用此功能需要显式使用 Notary 命令行工具。在特定仓库中启用委托支持将会破坏 Docker 1.9 和 1.8 在启用内容信任时从该仓库拉取镜像的能力。
  • 当使用 BTRFS 存储驱动时,允许 SELinux 在容器中运行 #16452

分发

  • 修复了 docker 可能会无限期挂起以等待一个不存在的进程来拉取镜像的问题 #19743

网络

  • 使用基于 DNS 的服务发现,而不是 `/etc/hosts` #19198
  • 支持使用 `run` 命令上的 `--net-alias` 和 `network connect` 命令上的 `--alias` 来实现网络范围的别名 #19242
  • 在 `run` 和 `network connect` 命令上添加 `--ip` 和 `--ip6` 标志,以支持为网络中的容器自定义 IP 地址 #19001
  • network create 命令添加 --ipam-opt 选项,用于传递自定义 IPAM 选项 #17316
  • network create 命令添加 --internal 标志,以限制网络的外部访问 #19276
  • --cluster-store-opt 添加 kv.path 选项 #19167
  • --cluster-store-opt 添加 discovery.heartbeatdiscovery.ttl 选项,用于配置发现 TTL 和心跳计时器 #18204
  • network inspect 命令添加 --format 标志 #17481
  • network connect 命令添加 --link 选项,用于提供容器本地别名 #19229
  • 支持与远程 IPAM 插件进行能力交换 #18775
  • network disconnect 命令添加 --force 选项,强制容器与网络断开连接 #19317
  • 支持使用内置 overlay 驱动程序进行多主机联网,适用于所有支持的内核版本:3.10+ #18775
  • 现在在 docker run 命令中支持 --link 选项,用于用户定义网络中的容器 #19229
  • 增强 docker network rm 命令,以允许删除多个网络 #17489
  • network inspect 命令的输出中包含容器名称 #17615
  • network inspect 命令的输出中包含用户定义网络的自动生成子网 #17316
  • network ls 命令添加 --filter 标志,用于隐藏预定义网络 #17782
  • 添加对停止容器进行网络连接/断开连接的支持 #18906
  • container inspect 命令添加网络 ID #19323
  • 修复当存在两个或多个默认路由时导致 Docker 无法启动的 MTU 问题 #18108
  • 修复容器重复 IP 地址的问题 #18106
  • 修复有时阻止 Docker 创建桥接网络的问题 #19338
  • 使用 --net=host 时,不替换 127.0.0.1 名称服务器 #19573

日志记录

  • 用于 Splunk 的新日志驱动程序 #16488
  • 添加对通过 TCP+TLS 使用 syslog 的支持 #18998
  • 增强 docker logs 命令的 --since--until 选项,以支持纳秒和时间格式 #17495
  • 增强 AWS 日志功能,以自动检测区域 #16640

  • 添加对设置卷的挂载传播模式的支持 #17034
  • 为卷插件 API 添加 lsinspect 端点 #16534 现有插件需要使用这些新的 API 来满足用户的期望。为此,请使用新的 MIME 类型 application/vnd.docker.plugins.v1.2+json #19549
  • 修复数据未复制到命名卷的问题 #19175
  • 修复阻止卷驱动程序容器化的问题 #19500
  • 修复 docker volumes ls --dangling=false 命令现在可以显示所有非悬空卷的问题 #19671
  • 在容器移除时不要删除命名卷 #19568
  • 允许外部卷驱动程序托管匿名卷 #19190

构建器

  • .dockerignore 中添加对 ** 的支持,以匹配多级目录 #17090
  • 修复 Dockerfile 中 UTF-8 字符的处理问题 #17055
  • 修复从 STDIN 读取时的权限问题 #19283

客户端

  • 添加通过 DOCKER_API_VERSION 环境变量覆盖要使用的 API 版本的功能 #15964
  • 修复 Windows 客户端无法登录 Docker Hub 的错误 #19891

其他

  • systemd: 在 systemd 服务文件中除 LimitNPROC 外还设置 TasksMax #19391

弃用

  • 移除 LXC 支持。LXC 驱动程序已在 Docker 1.8 中弃用,现已移除 #17700
  • 移除守护程序标志 --exec-driver,因为它已不再使用 #17700
  • 移除旧的已弃用的单短划线长 CLI 标志(例如 -rm;请改用 --rm#17724
  • 弃用 API 容器启动时的 HostConfig #17799
  • 弃用针对新近 EOL(生命周期结束)的 Linux 发行版(Fedora 21 和 Ubuntu 15.04 (Vivid))的 docker 软件包 #18794, #18809
  • 弃用 docker tag 命令的 -f 标志 #18350

1.9.1 (2015-11-21)

运行时

  • 如果镜像无法恢复,不要阻止守护程序启动 (#17695)
  • 在守护程序关闭/初始化时强制卸载 IPC 挂载 (#17539)
  • 将 IPC 卸载错误转为警告 (#17554)
  • 修复 docker stats 的性能退化问题 (#17638)
  • 阐明当使用 --log-driver=nonedocker logs 的神秘错误消息 (#17767)
  • 修复偶发的 panic 问题 (#17639, #17634, #17703)
  • 修复带点前缀文件的 opq whiteouts 问题 (#17819)
  • devicemapper: 出于性能原因,尝试默认使用 xfs 而非 ext4 (#17903, #17918)
  • devicemapper: 修复 docker info 中显示的 fs 问题 (#17974)
  • selinux: 仅在用户通过 z 选项请求时重新标记 (#17450, #17834)
  • 在规范化名称时不进行网络调用 (#18014)

客户端

  • 修复 Windows 上 docker login 的问题 (#17738)
  • 修复未连接到守护程序时 docker inspect 输出的错误 (#17715)
  • 修复 docker inspect -f {{.HostConfig.Dns}} somecontainer 命令的问题 (#17680)

构建器

  • 修复 ADD/COPY 中符号链接行为的退化问题 (#17710)

网络

  • 允许将网络 ID 作为 --net 的参数传递 (#17558)
  • 修复 host 网络连接到主机以及防止与主机断开连接的问题 (#17476)
  • 修复当网关 IP 在 IP 范围之内且 IP 范围不是网络中的第一个块时 --fixed-cidr 的问题 (#17853)
  • 在默认 bridge 网络上恢复从 MAC 地址确定性生成 IPv6 (#17890)
  • 仅允许为 docker run 创建的端点进行端口映射 (#17858)
  • 修复了端点删除问题,可能与陈旧的 sbox 有关 (#18102)

分发

  • 当磁盘上的 v1Compatibility 文件不一致时,修正 v2 push 中的父链 (#18047)

1.9.0 (2015-11-03)

运行时

  • docker stats 现在返回块 IO 指标 (#15005)
  • docker stats 现在按接口详细显示网络统计信息 (#15786)
  • docker ps --filter 标志添加 ancestor=<image> 过滤器,根据祖先镜像过滤容器 (#14570)
  • docker ps --filter 添加 label=<somelabel> 过滤器,根据标签过滤容器 (#16530)
  • docker run 添加 --kernel-memory 标志 (#14006)
  • docker import 添加 --message 标志,允许指定可选消息 (#15711)
  • docker exec 添加 --privileged 标志 (#14113)
  • docker run 添加 --stop-signal 标志,允许替换容器进程的停止信号 (#15307)
  • 添加新的 unless-stopped 重启策略 (#15348)
  • 检查镜像现在会返回标签 (#13185)
  • docker inspect 添加容器大小信息 (#15796)
  • /images/{name:.*}/json 添加 RepoTagsRepoDigests 字段 (#17275)
  • 从 API 中移除已弃用的 /container/ps 端点 (#15972)
  • /exec/<name>/start 发送并文档化正确的 HTTP 代码 (#16250)
  • 在共享 IPC 命名空间的容器之间共享 shm 和 mqueue (#15862)
  • 设置 --oom-kill-disable 时,事件流现在显示 OOM 状态 (#16235)
  • 确保特殊网络文件(如 /etc/hosts 等)如果使用 ro 选项进行绑定挂载,则为只读 (#14965)
  • 提高 rmi 的性能 (#16890)
  • 除了链接之外,不要更新默认 bridge 网络的 /etc/hosts 文件 (#17325)
  • 修复容器名称重复的冲突 (#17389)
  • 修复 docker inspect 中模板执行不正确的问题 (#17284)
  • 弃用 docker run--cpu-shares 的短标志变体 -c (#16271)

客户端

  • 允许 docker import 从本地文件导入 (#11907)

构建器

  • 添加 STOPSIGNAL Dockerfile 指令,允许为容器进程设置不同的停止信号 (#15307)
  • 添加 ARG Dockerfile 指令以及 docker build--build-arg 标志,允许添加构建时环境变量 (#15182)
  • 提高缓存未命中的性能 (#16890)

存储

  • devicemapper: 实现延迟删除功能 (#16381)

网络

  • docker network 已退出实验阶段,成为标准发行版的一部分 (#16645)
  • 新的顶层网络概念,附带相关的子命令和 API (#16645) 警告:此 API 与实验性 API 不同
  • 支持多个隔离/微分段网络 (#16645)
  • 使用基于 VXLAN 的 overlay 驱动程序实现内置多主机网络 (#14071)
  • 支持第三方网络插件 (#13424)
  • 能够动态地将容器连接到多个网络 (#16645)
  • 支持通过可插拔的 IPAM 驱动程序进行用户定义的 IP 地址管理 (#16910)
  • 为内置节点发现添加守护程序标志 --cluster-store--cluster-advertise (#16229)
  • 添加 --cluster-store-opt 用于设置 TLS (#16644)
  • 为守护程序添加 --dns-opt 标志 (#16031)
  • 在 API v1.21 中弃用以下容器 NetworkSettings 字段:EndpointID, Gateway, GlobalIPv6Address, GlobalIPv6PrefixLen, IPAddress, IPPrefixLen, IPv6GatewayMacAddress。这些现在仅用于 bridge 网络。请使用 NetworkSettings.Networks 来按网络检查容器的网络设置。

  • 新增顶级 volume 子命令和 API (#14242)
  • 将 API 卷驱动设置移至主机特定配置 (#15798)
  • 如果卷名称不唯一,则打印错误消息 (#16009)
  • 确保从 Dockerfile 创建的卷始终使用本地卷驱动 (#15507)
  • 弃用为绑定挂载自动创建缺失主机路径的功能 (#16349)

日志记录

  • 添加用于 Amazon CloudWatch 的 awslogs 日志驱动 (#15495)
  • 添加通用的 tag 日志选项,允许自定义传递给驱动的容器/镜像信息 (#15384)
  • 实现用于 journald 驱动的 docker logs 端点 (#13707)
  • 弃用驱动特定的日志标签 (#15384)

分发

  • docker search 命令现在支持部分名称搜索 (#16509)
  • 推送优化:避免缓冲到文件 (#15493)
  • 守护进程将显示已经被另一个客户端拉取的镜像的进度 (#15489)
  • 仅请求当前执行操作所需的权限 (#)
  • 将信任密钥(以及相应的环境变量)从 offline 重命名为 root,从 tagging 重命名为 repository (#16894)
  • 弃用信任密钥环境变量 DOCKER_CONTENT_TRUST_OFFLINE_PASSPHRASEDOCKER_CONTENT_TRUST_TAGGING_PASSPHRASE (#16894)

安全

  • 将 SELinux 配置添加到 rpm 包 (#15832)
  • 修复 deb 包中提供的 AppArmor 配置的各种问题 (#14609)
  • 添加阻止写入 /proc 的 AppArmor 策略 (#15571)

1.8.3 (2015-10-12)

分发

  • 修复层 ID 导致本地图中毒的问题 (CVE-2014-8178)
  • 修复清单验证和解析逻辑错误,该错误允许 pull-by-digest 验证绕过 (CVE-2014-8179)
  • 添加 --disable-legacy-registry 选项,以阻止守护进程使用 v1 镜像仓库

1.8.2 (2015-09-10)

分发

  • 修复处理 GNU LongLink 和 LongName 条目的罕见边缘情况。
  • 修复在 docker pull 时按 ^C 的问题。
  • 修复客户端断开连接时 docker pull 的问题。
  • 修复当日志记录器未正确配置时导致守护进程发生 panic 的问题。
  • 修复从 V2 镜像仓库拉取镜像时的 goroutine 泄露问题。

运行时

  • 修复对于在 Docker 容器内部运行的 Docker 守护进程挂载 cgroups 的 bug。
  • 正确初始化日志配置。

客户端

  • 当存在默认格式时,正确处理 docker ps 命令中的 -q 标志。

网络

  • 修复 netlink 的几个边缘情况。

Contrib

  • 修复 bash 自动补全的几个问题。

1.8.1 (2015-08-12)

分发

  • 修复推送多个标签会导致产生无效镜像的 bug

1.8.0 (2015-08-11)

分发

  • 受信任的拉取、推送和构建,默认禁用
  • 使 tar 层在镜像仓库之间具有确定性
  • 不允许删除正在运行容器的镜像
  • 检查要加载的标签名称是否是有效的摘要
  • 允许单个字符的仓库名称
  • 添加对无效标签名称更准确的错误描述
  • 使构建缓存忽略 mtime

命令行

  • 添加对 DOCKER_CONFIG/--config 的支持,用于指定配置文件目录
  • 添加用于 docker inspect 命令的 --type 标志
  • 使用 --formatdocker ps 添加格式化选项
  • 使用新的子命令 docker daemon 替换 docker -d
  • Zsh 自动补全更新和改进
  • 添加一些缺失的事件到 bash 自动补全
  • docker -H 中支持带有基本路径的守护进程 URL
  • 验证用于 docker psstatus= 过滤器
  • docker ps 输出中显示容器处于 --net=host 模式
  • 扩展 docker inspect 命令以导出与图驱动相关的镜像元数据
  • 恢复 --default-gateway{,-v6} 守护进程选项
  • docker ps 输出中添加缺失的未发布端口
  • 允许在 docker events 中使用持续时间字符串作为 --since/--until 参数
  • docker inspect 输出中显示更多挂载信息

运行时

  • 添加新的 Fluentd 日志驱动
  • 允许 docker import 命令从本地文件加载
  • 添加用于通过 UDP 的 GELF 日志驱动
  • 允许使用 docker cp 命令将文件从主机复制到容器
  • 将卷驱动从实验性状态移至主线
  • 为 json-file 日志驱动添加滚动选项,并添加 --log-driver-opts 标志
  • 添加内存 swappiness 调优选项
  • 在特权模式下移除 cgroup 只读标志
  • 使只读容器的 /proc, /sys 和 /dev 为只读
  • 默认添加 cgroup 绑定挂载
  • Overlayfs: 在 docker inspect 输出中导出容器和镜像的元数据
  • Devicemapper: 外部设备激活
  • Devicemapper: 在启动时比较基础设备的 UUID
  • 从镜像仓库密码套件列表中移除 RC4
  • 添加 syslog-facility 选项
  • LXC execdriver 与最新的 LXC 版本兼容
  • 将 LXC execdriver 标记为弃用(将在迁移到 runc 时移除)

插件

  • 分离插件套接字和 spec 位置
  • 允许 TLS 连接到插件

Bug 修复

  • 向 /containers/json API 输出中添加缺失的 'Names' 字段
  • 使在拉取时对悬空镜像执行 docker rmi 操作更安全
  • Devicemapper: 将默认 basesize 更改为 100G
  • 关于 sync.Mutex 和 gcc 的 Go 调度器问题。
  • 修复由于 AuthConfig 为空导致 Search API 端点发生 panic 的问题
  • 正确设置镜像规范名称
  • 仅当使用 lxc 驱动时才检查 dockerinit
  • 修复 ulimit 对 nproc 的使用问题
  • 如果指定了 -i--interactive,则始终附加 STDIN。
  • 当保存容器状态失败时,显示错误消息。
  • 修复关于将 --bridge=none 视为禁用网络的不正确假设。
  • 检查主机配置中是否存在无效的端口规范。
  • 修复 --net=host 模式下的端点离开失败问题。
  • 修复当容器未运行时 stats API 中的 goroutine 泄露问题。
  • 在读取 apparmor 文件之前检查它是否存在。
  • 修复 DOCKER_TLS_VERIFY 被忽略的问题。
  • 在启动时将 umask 设置为默认值。
  • 更正暂停和取消暂停非运行状态容器的消息。
  • 调整容器创建时不允许的 CpuShares。
  • ZFS: 正确应用 selinux 上下文。
  • 显示空字符串,而不是当 IP opt 为 nil 时
  • 当容器未运行时,docker kill 命令返回错误。
  • 修复 COPY/ADD 指令的带引号/json 形式。
  • 修复 logs -f 没有输出时的 goroutine 泄露问题。
  • 防止 nat 包在遇到无效 hostport 时发生 panic。
  • 修复 Fedora 22 中的容器链接问题。
  • 修复使用超出分配范围的默认网关引起的错误。
  • inspect 命令中使用模板将时间格式化为 RFC3339Nano。
  • 使镜像仓库客户端接受 2xx 和 3xx HTTP 状态响应为成功。
  • 修复当某些层下载以特定顺序失败时导致守护进程崩溃的竞态问题。
  • 修复当 docker ps 格式无效时的错误。
  • 移除多余的 IP 转发检查。
  • 修复尝试将镜像推送到仓库镜像的问题。
  • 修复当存在初始化问题时清理网络入口点时发生的错误。

1.7.1 (2015-07-14)

运行时

  • 修复使用 docker exec 命令时默认用户生成 exec 进程的问题
  • 使 --bridge=none 不配置网络桥接
  • 正确发布网络统计信息
  • 修复静态二进制文件时的隐式 devicemapper 选择问题
  • 修复会间歇性挂起的套接字连接问题
  • 修复在 CentOS/RHEL 6.6 上创建桥接接口的问题
  • 修复添加到 resolv.conf 的本地 DNS 查找问题
  • 修复 docker cp 命令在处理挂载卷时的问题
  • 修复使用 --volumes-from 挂载的卷中的读/写权限问题

远程 API

  • 修复 Command 和 Entrypoint 的反序列化问题
  • 设置支持的最低客户端版本限制
  • 验证端口规范
  • 当附加/重新附加失败时,返回正确的错误

分发

  • 修复拉取私有镜像的问题
  • 修复镜像仓库 V2 和 V1 之间的回退问题

1.7.0 (2015-06-16)

运行时

  • 实验性功能:支持进程外卷插件
  • userland 代理可以使用守护进程的 --userland-proxy=false 标志禁用,转而支持 Hairpin NAT
  • exec 命令支持 -u--user 标志,用于指定新进程的所有者
  • 可以使用守护进程范围内的 --default-gateway--default-gateway-v6 标志指定容器的默认网关
  • 可以在 docker run 命令中使用 --cpu-quota 设置 CPU CFS (完全公平调度器) 配额
  • 可以在 docker run 命令中使用--blkio-weight 控制容器块 IO
  • 支持 ZFS
  • docker logs 命令支持 --since 参数
  • 可以使用 docker run --uts=host 命令将 UTS 命名空间与主机共享

质量

  • 作为 libnetwork 工作的一部分,网络栈被完全重写
  • 引擎内部重构
  • 卷代码被完全重写以支持插件工作
  • 向守护进程发送 SIGUSR1 将转储所有 goroutines 栈而不退出

构建

  • 支持环境变量的 ${variable:-value}${variable:+value} 语法
  • 支持资源管理标志:--cgroup-parent, --cpu-period, --cpu-quota, --cpuset-cpus, --cpuset-mems
  • 支持带有分支和目录的 git 上下文更改
  • .dockerignore 文件支持排除规则

分发

  • 客户端支持官方仓库的 v2 镜像功能

Bug 修复

  • 现在支持 Firewalld,并在可用时自动使用
  • 递归地挂载 --device

1.6.2 (2015-05-13)

运行时

  • 回滚禁止挂载到 /sys 的更改

1.6.1 (2015-05-07)

安全

  • 修复 /proc 路径的读/写问题 (CVE-2015-3630)
  • 禁止 VOLUME /procVOLUME / (CVE-2015-3631)
  • 修复文件描述符 1 的打开问题 (CVE-2015-3627)
  • 修复在容器重新生成时允许本地权限提升的符号链接遍历问题 (CVE-2015-3629)
  • 禁止挂载 /sys

运行时

  • 更新 AppArmor 策略以禁止挂载

1.6.0 (2015-04-07)

构建器

  • 支持从镜像 ID 构建镜像
  • 支持构建带有资源限制的容器,例如 docker build --cpu-shares=100 --memory=1024m...
  • 使用 commit --change 在提交镜像时应用指定的 Dockerfile 指令
  • 使用 import --change 在导入镜像时应用指定的 Dockerfile 指令
  • 当用 CTRL-C 取消时,构建不再在后台继续

客户端

  • 支持 Windows

运行时

  • 容器和镜像标签
  • --cgroup-parent 用于指定父 cgroup,将容器 cgroup 放置在其中
  • 日志驱动:json-file, syslognone
  • 支持按 ID 拉取镜像
  • --ulimit 用于在容器上设置 ulimit
  • 守护进程上的 --default-ulimit 选项,应用于所有创建的容器(并在运行时被 --ulimit 覆盖)

1.5.0 (2015-02-10)

构建器

  • 对于给定的 docker build 命令,要使用的 Dockerfile 可以使用 -f 标志指定
  • Dockerfile 和 .dockerignore 文件本身可以作为 .dockerignore 文件的一部分被排除,从而防止对这些文件的修改导致 ADD 或 COPY 指令缓存失效
  • ADD 和 COPY 指令接受相对路径
  • Dockerfile 的 FROM scratch 指令现在被解释为无基础镜像的指定符
  • 改进暴露大量端口时的性能

Hack

  • 允许仅客户端的 Windows 集成测试
  • 将针对 Docker 守护进程的 docker-py 集成测试包含到我们的测试套件中

打包

  • 支持新版本的镜像仓库 HTTP API
  • 加速推送包含大部分已存在层的镜像(docker push
  • 修复通过代理连接私有仓库的问题

远程 API

  • 一个新的端点将流式传输实时容器资源指标,并且可以通过 docker stats 命令访问
  • 容器可以使用新的 rename 端点和相关的 docker rename 命令进行重命名
  • 容器 inspect 端点显示在此容器中运行的 exec 命令的 ID
  • 容器 inspect 端点显示 Docker 自动重启容器的次数
  • 新类型的事件可以通过 events 端点流式传输:'OOM'(容器因内存不足而死亡)、'exec_create' 和 'exec_start'
  • 修复包含数字字符的返回字符串字段错误省略周围双引号的问题

运行时

  • Docker 守护进程拥有完整的 IPv6 支持
  • docker run 命令可以接受 --pid=host 标志来使用主机 PID 命名空间,这使得例如使用容器化的调试工具调试主机进程成为可能
  • docker run 命令可以接受 --read-only 标志,使容器的根文件系统被挂载为只读,这可以与卷结合使用,以强制容器的进程仅写入将被持久化的位置
  • 容器总内存使用量可以通过 docker run 命令的 --memory-swap 标志进行限制
  • 对 devicemapper 存储驱动进行了主要稳定性改进
  • 更好地与主机系统集成:容器在重启时将反映主机 /etc/resolv.conf 文件的更改
  • 更好地与主机系统集成:每个容器的 iptable 规则被移到 DOCKER 链
  • 修复容器因内存不足而退出时返回无效退出码的问题

其他

  • 客户端连接到 Docker 守护进程时,会正确考虑 HTTP_PROXY, HTTPS_PROXY 和 NO_PROXY 环境变量

1.4.1 (2014-12-15)

运行时

  • 修复 volumes-from 和绑定挂载在创建后未被遵循的问题

1.4.0 (2014-12-11)

自 1.3.0 版本以来值得注意的功能

  • 为守护进程设置 key=value 标签(在 docker info 中显示),使用新的 -label 守护进程标志应用
  • 添加对形式为 ENV name=value name2=value2... 的 Dockerfile 中的 ENV 指令的支持
  • 新的 Overlayfs 存储驱动
  • docker info 命令现在返回 IDName 字段
  • 支持按事件名称、容器或镜像过滤事件
  • docker cp 命令现在支持从容器卷复制
  • 修复 docker tag,使其在覆盖现有镜像的标签时遵循 --force

1.3.3 (2014-12-11)

安全

  • 修复在处理绝对符号链接时的路径遍历漏洞 (CVE-2014-9356)
  • 修复 xz 镜像归档的解压缩问题,该问题防止权限提升 (CVE-2014-9357)
  • 验证镜像 ID (CVE-2014-9358)

运行时

  • 修复当镜像归档被缓慢读取时发生的问题

客户端

  • 修复与 stdin 重定向相关的一个回归问题
  • 修复当目标是当前目录时 docker cp 的一个回归问题

1.3.2 (2014-11-20)

安全

  • 修复 tar 逃逸漏洞
  • 解压现在在沙盒 chroot 中进行
  • 安全选项不再提交到镜像

运行时

  • 修复 docker ps -f exited=1 命令中的死锁问题
  • 修复当 --volumes-from 引用一个启动失败的容器时发生的 bug

镜像仓库

  • --insecure-registry 现在接受 CIDR 表示法,例如 10.1.0.0/16
  • IP 地址落在 127.0.0.0/8 范围内的私有仓库不需要 --insecure-registry 标志
  • 启用镜像时跳过实验性镜像仓库 v2 API

1.3.1 (2014-10-28)

安全

  • 防止客户端、守护进程和镜像仓库回退到 SSL 协议 < TLS 1.0
  • 与镜像仓库建立带有证书验证且没有 HTTP 回退的安全 HTTPS 连接,除非指定了 --insecure-registry

运行时

  • 修复卷不会被共享的问题

客户端

  • 修复 --iptables=false 没有自动设置 --ip-masq=false 的问题
  • 修复 docker run 输出到非 TTY 的 stdout 问题

构建器

  • 修复环境变量中 $ 的转义问题
  • 修复小写 onbuild Dockerfile 指令的问题
  • 将环境变量扩展限制在 ENV, ADD, COPY, WORKDIR, EXPOSE, VOLUMEUSER 指令中

1.3.0 (2014-10-14)

自 1.2.0 版本以来值得注意的功能

  • Docker exec 命令允许在现有容器内部运行额外的进程
  • Docker create 命令提供了通过 CLI 创建容器而不执行进程的能力
  • --security-opts 选项允许用户自定义容器标签和 apparmor 配置
  • Docker ps 过滤器
  • 支持 COPY/ADD 指令使用通配符
  • 将生产 URL 从 get.docker.io 移至 get.docker.com
  • 在桥接上分配有效 CIDR 范围内的 IP 地址
  • 使用 drone.io 进行 PR 和 CI 测试
  • 支持设置官方镜像仓库镜像
  • 支持使用 docker save 命令保存多个镜像

1.2.0 (2014-08-20)

运行时

  • 使 /etc/hosts、/etc/resolv.conf 和 /etc/hostname 在运行时可编辑
  • 支持使用策略自动重启容器
  • 使用 /var/lib/docker/tmp 用于大型临时文件
  • --cap-add--cap-drop 用于调整你想要的 Linux Capabilities
  • --device 用于在容器中使用设备

客户端

  • 在私有 registry 上执行 docker search
  • docker ps --filter 添加 exited 过滤器
  • docker rm -f 现在执行强杀 (kill),而不是停止 (stop)
  • --dns 标志支持 IPv6 地址

代理

  • 在独立的进程中运行代理实例
  • UDP 代理的一个小 bug 修复

1.1.2 (2014-07-23)

运行时

  • 修复现有容器的端口分配问题
  • 修复容器在 daemon 重启时重启的问题

打包

  • 修复 Debian 上 /etc/init.d/docker 的问题

1.1.1 (2014-07-09)

构建器

  • 修复 ADD 指令的问题

1.1.0 (2014-07-03)

1.0.1 版本以来的重要特性

  • 添加 .dockerignore 支持
  • docker commit 期间暂停容器
  • docker logs 添加 --tail 选项

构建器

  • 允许将 tar 文件作为 docker build 的 context
  • 修复 Dockerfile 中空格和多行的问题

运行时

  • 整体性能提升
  • 允许将 / 作为 docker run -v 的源 (source)
  • 修复端口分配问题
  • 修复 docker save 中的一个 bug
  • docker inspect 添加 links 信息

客户端

  • 改进 docker commit 的命令行解析

远程 API

  • 改进 startstop endpoint 的状态码

1.0.1 (2014-06-19)

1.0.0 版本以来的重要特性

  • 增强 LXC 驱动的安全性

构建器

  • 修复传递给孙子镜像的 ONBUILD 指令问题

运行时

  • 修复事件订阅问题
  • 修复使用 host networking 时 /etc/hostname 文件的问题
  • 允许使用 -h--net=none 选项
  • 修复 --privileged 模式下热插拔设备的问题

客户端

  • 修复事件处理中的问题
  • 修复空标志导致的 panic 问题
  • 修复 Mac OS X 上 docker cp 的问题

其他杂项

  • 修复 Mac OS X 上的编译问题
  • 修复几个 race condition 问题

1.0.0 (2014-06-09)

0.12.0 版本以来的重要特性

  • 生产环境支持

0.12.0 (2014-06-05)

0.11.0 版本以来的重要特性

  • 40 多项稳定、性能和可用性方面的改进
  • 新的 COPY Dockerfile 指令,允许将 context 中的本地文件复制到容器中,如果文件是 tar 文件,则不会解压
  • 在执行 ADD 时继承宿主机的权限
  • 新的 pauseunpause 命令,允许使用 cgroup freezer 暂停和解除暂停容器
  • images 命令有一个 -f/--filter 选项,用于过滤镜像列表
  • 添加 --force-rm 选项,用于在构建失败后进行清理
  • 将 Remote API 中的 JSON key 标准化为 CamelCase 格式
  • docker run 执行 pull 时,如果未指定 tag,现在默认为 latest
  • 增强 Linux capabilities 和设备节点的安全性

0.11.1 (2014-05-07)

镜像仓库

  • 修复向私有 registry 的 push 和 pull 问题

0.11.0 (2014-05-07)

0.10.0 版本以来的重要特性

  • SELinux 支持 mount 和 process labels
  • 链接的容器可以通过 hostname 访问
  • 使用 --net 标志,允许进行高级网络配置,例如 host networking,从而使容器可以使用宿主机的网络接口
  • 为 Remote API 添加一个 ping endpoint,用于对 docker daemon 进行健康检查
  • 日志现在可以带有一个可选的时间戳返回
  • Docker 现在支持支持 SHA-512 的 registry
  • 支持多个 registry endpoint,允许使用 registry 镜像

0.10.0 (2014-04-08)

构建器

  • 修复在一行上打印多条消息的问题。修复了构建期间输出混乱的问题。
  • 对于 ADD 构建指令,跟随容器 root 内的符号链接。
  • 修复 EXPOSE 缓存问题。

文档

  • docker ps 的新选项添加到文档中。
  • docker restart 的选项添加到文档中。
  • 更新关于 --iptables 和 --ip-forward 的 daemon 文档和帮助信息。
  • 更新 apt-cacher-ng 文档示例。
  • 从文档中移除对 --mtu 的重复描述。
  • docker images 缺失的 -t 和 -v 选项添加到文档中。
  • 添加对 CLI 文档的修复。
  • 更新 libcontainer 文档。
  • 更新文档中的图片,移除对 AUFS 和 LXC 的引用。
  • 更新文档中的 nodejs_web_app 示例,使用新的 epel RPM 地址。
  • 修复容器安全性相关的外部链接。
  • 更新 Remote API 文档。
  • 在 history 文档中添加镜像大小信息。
  • 在 redis 示例中明确说明绑定到所有接口。
  • 在 1.10 版本 Remote API 文档中记录 DisableNetwork 标志。
  • 记录 --lxc-conf 仅适用于 lxc。
  • 添加 chef 使用文档。
  • 添加一个包含多个镜像的 docker load 示例。
  • 在文档中解释 docker run -a 的作用。

Contrib

  • 为 sysvinit 添加 DOCKER_LOGFILE 变量,并在打开日志文件时使用追加模式而非覆盖模式。
  • 修复 init 脚本中 cgroup 挂载的 workarounds,使其更类似于 cgroupfs-mount,从而正常工作。
  • 从 upstart host-integration 示例中移除 inotifywait hack,因为它不再需要。
  • 将 check-config 脚本添加到 contrib。
  • 修复 fish shell 补全问题。

Hack

  • 清理 "make test" 的 "go test" 输出,使其更易读/易扫描。
  • 从 hack/make/test 中排除更多“肯定未进行单元测试的 Go 源代码”目录。
  • 在构建时生成 md5 和 sha256 hash,并通过 hack/release.sh 上传它们。
  • 在 Ubuntu PPA 中包含贡献的补全文件。
  • 添加 CLI 集成测试。
  • 对 hack 脚本进行微调,使其更简单。

远程 API

  • 为 API 添加 TLS 认证支持。
  • 将 git clone 操作从 daemon 移到 client。
  • 修复 docker cp 中的 content-type 检测问题。
  • 将 API 分拆为 2 个 Go package。

运行时

  • 支持不经过 Docker server 的 hairpin NAT。
  • devicemapper: 在移除不存在的设备时立即成功。
  • devicemapper: 改进 devicemapper 设备的处理(添加每设备锁,增加 sleep 时间并在 sleep 时解锁)。
  • devicemapper: 将 waitClose 中的超时时间增加到 10 秒。
  • devicemapper: 确保干净地关闭 thin pool。
  • devicemapper: 将 info 而非 hash 传递给 activateDeviceIfNeeded, deactivateDevice, setInitialized, deleteDevice 函数。
  • devicemapper: 避免 AB-BA 死锁。
  • devicemapper: 使关闭过程更好/更快。
  • 改进 mflag 中的字母排序。
  • 移除手动 http cookie 管理,因为现在使用了 cookiejar。
  • 在 Darwin 上使用 BSD raw mode。修复了 nano、tmux 等程序的问题。
  • 为客户端添加 FreeBSD 支持。
  • 将 auth package 合并到 registry 中。
  • docker pull 的 -t 选项添加弃用警告。
  • 移除错误处理中的 goroutine leak。
  • 更新 parseLxcInfo 以符合新的 lxc1.0 格式。
  • 修复 Darwin 上的 attach 退出问题。
  • 改进弃用消息。
  • 对于 docker pull,重试获取层元数据最多 5 次。
  • 仅为 execin 取消共享 mount namespace。
  • 在执行 commit 时合并现有配置。
  • 禁用 daemon 启动超时。
  • 修复问题 #4681:在网络禁用时添加 loopback 接口。
  • 为问题 #4681 添加失败的测试用例。
  • 向子进程发送 SIGTERM,而不是 SIGKILL。
  • 即使不在 debug 模式下,也在 docker info 中显示驱动和内核版本。
  • 始终为 libcontainer 符号链接 /dev/ptmx。这修复了控制台相关问题。
  • 修复由于缺少 /etc/apparmor.d 引起的问题。
  • 在创建容器失败时,不留下空的 cidFile。
  • 如果 cgroups 未挂载,自动挂载它们。
  • 在 search 测试中使用 mock。
  • 在所有地方更新为双划线(--)。
  • 将 .dockerenv 解析移到 lxc 驱动中。
  • 将容器内的所有 bind-mount 移到 namespace 内部。
  • 不为容器使用单独的 bind mount。
  • 始终为 libcontainer 符号链接 /dev/ptmx。
  • 对于其他驱动,不通过 pid 进行 kill。
  • 为 libcontainer 添加初始日志记录。
  • docker ps 中按端口排序。
  • 将网络驱动移到 runtime 顶层 package。
  • docker rmi 添加 --no-prune 选项。
  • docker ps 中添加退出时间。
  • graphdriver: 添加 build tag。
  • 阻止分配之前已分配的端口并改进端口分配。
  • docker ps 中添加对 --since/--before 的支持。
  • 清理容器停止逻辑。
  • 添加对可配置 DNS 搜索域的支持。
  • 添加对相对 WORKDIR 指令的支持。
  • 为 docker save 添加 --output 标志。
  • 在配置合并时移除 DNS 条目的重复。
  • 将 cpuset.cpus 添加到 cgroups 和 native 驱动选项中。
  • 移除 docker-ci。
  • 提升 btrfs。btrfs 不再被视为实验性功能。
  • docker load 添加 --input 标志。
  • 当现有 bridge 与 IP 地址不匹配时返回错误。
  • 在解析行连接符之前移除注释,以避免将指令误解为注释。
  • 修复 TestOnlyLoopbackExistsWhenUsingDisableNetworkOption,使其忽略“DOWN”状态的接口。
  • 添加 cgroups 的 systemd 实现,并使容器显示为 systemd unit。
  • 修复未指定 repository 时的 commit 和 import 问题。
  • /var/lib/docker 重新挂载为 --private,以修复扩展性问题。
  • 在 ping 远程 registry 时使用环境变量中配置的代理。
  • 降低无害错误的错误级别。
  • 允许 --volumes-from 指向单个文件。
  • 修复 StdCopy 中 buffer 扩展问题。
  • 设置错误,无论是否进行 attach 或使用 stdin。这修复了问题 #3364。
  • 添加 --env-file 支持,可以从文件加载环境变量。
  • 符号链接 /etc/mtab/proc/mounts
  • 允许 push 单个 tag。
  • 在关机时干净地关闭容器,并无限期等待容器关闭。这使得 daemon 关机时通过 SIGTERM 关闭容器的功能正常工作。
  • 启动已运行容器时,不抛出错误。
  • 修复动态端口分配限制问题。
  • 从 libcontainer 移除 setupDev。
  • 将 API 版本添加到 docker version 输出。
  • 接收到信号时返回正确的退出码,并使 SIGQUIT 在不清理的情况下退出。
  • 修复 --volumes-from 挂载失败问题。
  • 允许非特权容器创建设备节点。
  • 跳过登录测试,因为依赖于外部托管服务。
  • 弃用 docker images --treedocker images --viz
  • 弃用 docker insert
  • 包含 apparmor 的基础抽象。这修复了 Ubuntu 14.04 上一些 apparmor 相关问题。
  • 在通过 HTTP 进行 push 时遇到 401 错误时添加特定的错误消息。
  • 修复绝对 volume 检查。
  • 从配置中移除 volumes-from。
  • 将 DNS 选项移到 hostconfig。
  • 更新 libcontainer 的 apparmor profile。
  • docker commit -run 添加弃用通知。

0.9.1 (2014-03-24)

构建器

  • 修复在一行上打印多条消息的问题。修复了构建期间输出混乱的问题。

文档

  • 修复容器安全性相关的外部链接。

Contrib

  • 修复 init 脚本中 cgroup 挂载的 workarounds,使其更类似于 cgroupfs-mount,从而正常工作。
  • 为 sysvinit 添加 DOCKER_LOGFILE 变量,并在打开日志文件时使用追加模式而非覆盖模式。

Hack

  • 在构建时生成 md5 和 sha256 hash,并通过 hack/release.sh 上传它们。

远程 API

  • 修复 docker cp 中的 content-type 检测问题。

运行时

  • 在 Darwin 上使用 BSD raw mode。修复了 nano、tmux 等程序的问题。
  • 仅为 execin 取消共享 mount namespace。
  • 对于 docker pull,重试获取层元数据最多 5 次。
  • 在执行 commit 时合并现有配置。
  • 修复 monitor 中的 panic 问题。
  • 禁用 daemon 启动超时。
  • 修复问题 #4681:在网络禁用时添加 loopback 接口。
  • 为问题 #4681 添加失败的测试用例。
  • 向子进程发送 SIGTERM,而不是 SIGKILL。
  • 即使不在 debug 模式下,也在 docker info 中显示驱动和内核版本。
  • 始终为 libcontainer 符号链接 /dev/ptmx。这修复了控制台相关问题。
  • 修复由于缺少 /etc/apparmor.d 引起的问题。
  • 在创建容器失败时,不留下空的 cidFile。
  • 改进弃用消息。
  • 修复 Darwin 上的 attach 退出问题。
  • devicemapper: 改进 devicemapper 设备的处理(添加每设备锁,增加 sleep 时间并在 sleep 时解锁)。
  • devicemapper: 在移除不存在的设备时立即成功。
  • devicemapper: 将 waitClose 中的超时时间增加到 10 秒。
  • 移除错误处理中的 goroutine leak。
  • 更新 parseLxcInfo 以符合新的 lxc1.0 格式。

0.9.0 (2014-03-10)

构建器

  • 避免在构建期间进行额外的 mount/unmount。这修复了构建期间与 mount/unmount 相关的问题。
  • docker build --rm 添加错误处理。这添加了缺失的错误处理逻辑。
  • 禁止使用链式 onbuild、onbuild fromonbuild maintainer 触发器。
  • --rm 设为 docker build 的默认选项。

文档

  • 通过 https 下载 Mac 上的 docker client 二进制文件。
  • 更新安装说明的标题和描述。
  • 添加升级 boot2docker 的说明。
  • 在 OS X 安装文档中添加端口转发示例。
  • 尝试理清 repository 和 registry 的关系。
  • 更新文档,更详细地解释 docker ps
  • 更新 sshd 示例,使其使用 Dockerfile。
  • 重写一些示例,包括 Python 示例。
  • 更新文档,包含容器生命周期的说明。
  • 更新文档的文档,讨论 docs 分支。
  • 对于某个示例,不跳过证书检查并使用 HTTPS。
  • 恢复内存和 swap 记账部分,该部分在内核页面被移除时丢失了。
  • 解释 DNS 警告以及如何在运行和使用本地 nameserver 的系统上修复它们。

Contrib

  • mkimage-debootstrap 添加 Tanglu 支持。
  • mkimage-debootstrap 添加 SteamOS 支持。

Hack

  • 在运行集成测试时获取 package coverage。
  • 移除 Vagrantfile。它将被 boot2docker 替代。
  • 修复在 aufs 不可用的系统上的测试问题。
  • 更新打包说明并移除对 lxc 的依赖。

远程 API

  • 将特定于 API 的代码移到 api package。
  • 修复 API 的 header content type。使所有 endpoint 使用正确的 content type。
  • 修复 registry 认证并从 CmdPush 和 CmdPull 中移除 ping 调用。
  • 为 JSON stream 函数添加换行符。

运行时

  • 不再从 CLI ping registry。所有对 registry 的请求都通过 daemon 流动。
  • 检查 lxc 驱动中返回的 nil 信息。这修复了使用旧版本 lxc 时的 panic 问题。
  • Devicemapper: 清理并修复 unmount 问题。修复了导致 unmount 间歇性失败的两个问题。
  • Devicemapper: 在移除设备时移除目录。移除设备时不会留下目录。
  • Devicemapper: 启用 skip_block_zeroing。通过不填充零块来提高性能。
  • Devicemapper: 修复关闭警告。修复了关于 pool 设备移除的关闭警告。
  • 确保 docker cp stream 正确关闭。修复了 docker cp 无法复制文件的问题。
  • 停止将 tcp:// 默认设为 127.0.0.1:4243,并移除 tcp 的默认端口。
  • 修复 docker commit 中的 --run 选项。这使得 docker commit --run 再次可用。
  • 修复自定义 bridge 相关选项。这使得自定义 bridge 再次可用。
  • 将 PTY mount-bind 为容器控制台。这允许运行 tmux/screen。
  • 添加纯 Go 语言实现的 libcontainer 库,使得仅使用 Linux 内核特性就可以运行容器。
  • 添加使用 libcontainer 的 native exec 驱动,并将其设为默认 exec 驱动。
  • 添加对处理归档文件中扩展属性的支持。
  • 将容器的 MTU 设置为与宿主机 MTU 相同。
  • 为层添加简单的 sha256 校验和,以加速 docker push
  • 改进内核版本解析。
  • 允许标志分组 (例如 docker run -it)。
  • 移除 chroot exec 驱动。
  • 修复除以零错误以修复 panic 问题。
  • 重写 docker rmi
  • 修复与 lxc 1.0.0 一起使用 docker info 的问题。
  • 修复 Fedora 上 apparmor 相关的 tty 问题。
  • 不总是追加环境变量,而是用配置中的变量替换默认值。
  • 修复一个 goroutine leak。
  • 切换到 Go 1.2.1。
  • 修复唯一约束错误检查。
  • 处理 Docker 数据目录和 TMPDIR 的符号链接。
  • 为标志添加弃用警告(-flag 已弃用,请使用 --flag)。
  • 为 native execution 驱动添加 apparmor profile。
  • 将特定于系统的代码从 archive 移到 pkg/system。
  • 修复 docker run -i -t 的重复信号问题(问题 #3336)。
  • 返回 lxc 的正确进程 pid。
  • 添加 -G 选项,用于指定 unix socket 所属的组。
  • docker rm 添加 -f 标志,用于强制移除正在运行的容器。
  • 在 docker daemon 重启时 kill ghost containers 并重启所有 ghost containers。
  • 添加 DOCKER_RAMDISK 环境变量,使 Docker 在 root 位于 ramdisk 上时也能工作。

0.8.1 (2014-02-18)

构建器

  • 避免在构建期间进行额外的 mount/unmount。这移除了一个不必要的 mount/unmount 操作,该操作导致了 devicemapper 的问题。
  • 修复 ADD tar 文件导致的回归问题。这阻止了 Docker 在通过 ADD 从本地文件系统添加 tarball 时进行解压。
  • docker build --rm 添加错误处理。这添加了缺失的错误处理逻辑,以确保能够检测和报告移除容器的失败。

文档

  • 更新问题提交说明
  • 警告不要使用符号链接作为 Docker 的存储文件夹
  • 将 Firefox 示例替换为 IceWeasel 示例
  • 重写 PostgreSQL 示例,使用 Dockerfile 并添加更多细节
  • 改进 OS X 文档

远程 API

  • 修复版本低于 1.7 时损坏的 images API
  • 对所有返回 JSON 的 API endpoint 使用正确的编码
  • 将 remote api 客户端移到 api/ 目录
  • 使用通用 socket 等待来对 API 调用进行排队

运行时

  • 修复 bridge 和自定义 bridge 使用自定义设置的问题
  • 重构 devicemapper 代码,以避免许多 mount/unmount 竞争条件和失败
  • 移除两个可能导致 Docker 在某些情况下崩溃的 panic 问题
  • 不再从 CLI 客户端 ping 仓库
  • 为 devicemapper 启用 skip_block_zeroing。这会阻止 devicemapper 总是清零整个块
  • 修复 docker commit 中的 --run。这使得 docker commit 将 --run 存储在镜像配置中
  • 移除 devicemapper 设备时删除目录。这清理了残留的挂载目录
  • 移除非特权容器的 NET_ADMIN 能力。非特权容器无法更改其网络配置
  • 确保 docker cp 流正确关闭
  • 避免容器注册期间额外的挂载/卸载操作。这移除了一个不必要的挂载/卸载操作,该操作曾导致 devicemapper 出现问题
  • 停止允许将 tcp:// 作为默认的 tcp 绑定地址(该地址绑定到 127.0.0.1:4243),并移除默认端口
  • 将 PTY 挂载绑定作为容器控制台。这允许 tmux 和 screen 在容器中运行
  • 清理归档关闭操作。这修复并改进了归档处理
  • 修复临时目录为符号链接的系统上的引擎测试
  • 添加保存和加载的测试方法
  • 避免在重启容器时临时卸载容器。这修复了 devicemapper 在重启期间的竞争问题
  • 支持从 GitHub 仓库构建时使用子模块
  • 引用卷路径以允许路径中包含空格
  • 修复远程 tar ADD 行为。这修复了一个导致 Docker 解压 tarball 的回归问题

0.8.0 (2014-02-04)

自 0.7.0 以来的显著功能

  • 镜像和容器的移除速度显著提高

  • 使用 docker build 从源码构建镜像现在快得多

  • Docker 守护进程的启动和停止速度显著提高

  • 通过流式传输文件而非在内存中缓冲、修复内存泄漏以及修复各种次优的内存分配,许多常见操作的内存占用已减少

  • 修复了多个竞争条件,使得 Docker 在高并发负载下更加稳定。这使得 Docker 更稳定,更不容易崩溃,并减少了许多常见操作的内存占用

  • 现在所有打包操作都基于 Go 语言的标准 tar 实现,该实现捆绑在 Docker 本身中。这使得打包在不同主机发行版上更具可移植性,并解决了由不同 tar 发行版之间的怪异行为和不兼容性引起的一些问题

  • 凭借更积极地释放系统资源,Docker 现在可以更优雅地创建、移除和修改大量的容器和镜像。例如,存储驱动程序 API 现在允许 Docker 对驱动程序创建的挂载进行引用计数。随着 Docker 网络和执行子系统的持续变化,测试这些领域一直是重构的重点。通过将这些子系统移到单独的包中,我们可以测试、分析和监控这些包的覆盖率和质量

  • 许多组件已被拆分成更小的子包,每个子包都有专门的测试套件。因此,代码得到了更好的测试,可读性更高,也更容易修改

  • ADD 指令现在支持缓存,当源内容未更改时,这避免了不必要的重复上传相同内容

  • 新的 ONBUILD 指令会向您的镜像添加一个“触发器”指令,该指令将在以后用此镜像作为另一个构建的基础时执行

  • Docker 现在附带一个实验性的存储驱动程序,该驱动程序使用 BTRFS 文件系统来实现写时复制(copy-on-write)

  • Docker 现已在 Mac OS X 上正式支持

  • Docker 守护进程支持 systemd socket 激活

0.7.6 (2014-01-14)

构建器

  • 不跟踪构建上下文外部的符号链接

运行时

  • 指定 ro 时重新挂载绑定挂载
  • 使用 https 获取 Docker 版本

其他

  • 将 test.docker.io 指纹内联
  • 将 ca-certificates 添加到打包文档中

0.7.5 (2014-01-09)

构建器

  • 禁止构建时的压缩。这将增加空间使用量,但上传速度快得多
  • 修复某些路径的 ADD 缓存问题
  • 不压缩来自 git 构建的归档

文档

  • 修复 GROUP add 示例中的错误
  • 确保 GPG 指纹内联在文档中
  • 提供关于为 DCO 设置提交签名更具体的建议

运行时

  • 修复容器名称拼写错误
  • 网络禁用时不添加主机名
  • 按日期从缓存中返回最新的镜像
  • 从 docker wait 返回所有错误
  • 为 GET /version 和 /info 响应添加 Content-Type Header "application/json"

其他

  • 将 DCO 更新至 1.1 版本
  • 更新 Makefile,使用 "docker:GIT_BRANCH" 作为生成的镜像名称
  • 更新 Travis 以检查新的 1.1 版本 DCO

0.7.4 (2014-01-07)

构建器

  • 修复以 "." 开头的路径的 ADD 缓存问题
  • 通过恢复稀疏文件 tar 选项,修复 devicemapper 上的 docker build 问题
  • 修复文件缓存问题并防止错误的缓存命中
  • 在 unmarshalling CMD 和 ENTRYPOINT 时使用相同的错误处理

文档

  • 简化并精简 Amazon Quickstart
  • 安装说明使用无前缀的 Fedora 镜像
  • 更新 Docker 在 GCE 上的 mtu 标志说明
  • 添加 Ubuntu Saucy 到安装说明
  • 修复 master 分支上显示错误版本警告而非 latest 的问题

运行时

  • 仅在需要计算镜像大小时获取镜像的 rootfs
  • 正确处理 UDP 端口的解除映射
  • 使 CopyFileWithTar 使用管道而非缓冲区,以在 docker build 时节省内存
  • 修复登录消息,将 push 改为 pull
  • 修复 "docker load" 帮助信息,移除 "SOURCE" 提示并提及 STDIN
  • 使空白的 -H 选项默认为与未发送 -H 选项时相同
  • 将 cgroups 工具提取到单独的子模块中

其他

  • 添加 Travis CI 配置以验证 DCO 和 gofmt 要求
  • 添加 Developer Certificate of Origin 文本
  • 升级 VBox Guest Additions
  • ping 注册表服务器时检查独立头部

0.7.3 (2014-01-02)

构建器

  • 更新 ADD 指令,使其基于添加内容的哈希值使用镜像缓存
  • 为空的 Dockerfile 添加错误消息

文档

  • 更新文档,使其随着屏幕宽度变宽
  • 添加关于使用原始二进制文件时需要安装 LXC 的信息
  • 更新 Fedora 文档,以解决 docker 和 docker.io 的冲突
  • 添加关于在几个 GCE 区域中使用新的 -mtu 标志的说明
  • 添加 FrugalWare 安装说明
  • 添加一个更完整的 docker run 示例
  • 修复创建和启动 Privileged 容器的 API 文档
  • 在 "/containers/create" 添加缺失的 "name" 参数文档
  • 添加关于 lxc-checkconfig 作为检查必要内核配置的方法的说明
  • 更新 1.8 API 文档,包含一些已添加到 1.7 文档中的内容

Hack

  • 向打包者文档添加缺失的 libdevmapper 依赖项
  • 将 Go 的最低要求更新为硬性要求 Go 1.2+
  • Vagrantfile 进行了许多小的改进
  • 添加在编译时自定义 dockerinit 搜索位置的能力(仅供需要非标准位置的平台打包者非常谨慎地使用)
  • 添加 coverprofile 生成报告
  • 在 Go 构建标志中添加 -a,从而无需手动重新编译标准库
  • 更新 Dockerfile,使其更规范并在构建过程中减少不必要的警告
  • 修复一些杂项的 docker pull 进度条显示问题
  • 将更多杂项包迁移到 "pkg" 文件夹下
  • 更新 TextMate 语法高亮,使其自动为名为 "Dockerfile" 的文件启用
  • 将语法高亮文件重组到共同的 "contrib/syntax" 目录
  • 更新 install.sh 脚本 ( https://get.docker.io/) ,使其在 Ubuntu/Debian 安装结束时即使 busybox 下载或运行失败也不会失败
  • 在 bash 补全中添加容器名称支持

打包

  • 为 Darwin (Mac OS X) 添加官方 Docker 客户端二进制文件
  • 移除 deb 包中空的 "Vendor" 字符串并添加 "License"
  • 在 deb 包中添加 "/etc/default/docker" 的存根版本

运行时

  • 更新层应用,使其在原地解压 tar,避免在处理 whiteouts 时文件大量变动
  • 修复 tar 处理中 mtime 比较的宽容度问题(因为 GNU tar 和 Go tar 尚不支持亚秒级 mtime 精度)
  • 使用纯 Go 重新实现 docker top,使其工作更一致,甚至可以在 Docker-in-Docker 环境中工作(从而移除某些版本 lxc-ps 中存在的 shell 注入漏洞)
  • 更新 -H unix:// 的工作方式,使其类似于 -H tcp://,通过插入缺失部分的默认值
  • 修复关于 dockerinit 以及被删除或替换的 docker 或 dockerinit 文件的更多边缘情况
  • 更新容器名称验证,使其包含 '.'
  • 修复使用符号链接或非绝对路径作为 -g 参数时,使其按预期工作
  • 更新以处理 LXC 外部的外部挂载,修复了许多小的挂载怪癖,并使未来的执行后端和其他功能更简单
  • 更新 docker images -tree 中所有位置使用正确的绘制框字符
  • 将 MTU 设置从 LXC 配置移动到直接使用 netlink
  • 为外部 tar 调用添加 -S 选项,以更有效地处理稀疏文件
  • 在 User-Agent 字符串中添加 arch/os 信息,特别是针对注册表请求
  • 为 Docker 守护进程添加 -mtu 选项以配置 MTU
  • 修复 docker build 在出错时以非零退出码退出
  • 添加 DOCKER_HOST 环境变量,无需在每次调用时手动指定即可配置客户端的 -H 标志

0.7.2 (2013-12-16)

运行时

  • 创建时使用标准正则表达式验证容器名称
  • 将最大镜像深度从 42 增加到 127
  • 继续将 API 端点移至 job api
  • 添加 -bip 标志,允许通过 CIDR 指定动态桥接 IP
  • 允许在某些系统上未启用 ipv6 时创建桥接
  • 在 dockerinit 中设置主机名和 IP 地址
  • 在 dockerinit 中移除 capabilities
  • 修复镜像中存在符号链接时主机上的卷问题
  • 如果有任何容器依赖于某个镜像(即使容器未运行),则阻止删除该镜像
  • 更新 docker push 以使用新的进度显示
  • 使用 os.Lstat,以便在检查卷时允许挂载 unix sockets
  • 调整非活动用户登录的处理
  • 为旧内核在 devicemapper 中添加缺失的定义
  • 允许在没有容器验证的情况下进行 untag 操作
  • 向 docker build 添加认证配置

文档

  • 添加更多关于 Docker 日志记录的信息
  • 添加 RHEL 文档
  • 添加一个直接示例,说明如何更改在容器中运行的 CMD
  • 更新 Arch 安装文档
  • 添加关于 Trusted Builds 的章节
  • 添加网络文档页面

其他

  • 添加新的 cover bundle,用于提供代码覆盖率报告
  • 在 bundles 中分离集成测试
  • 指定 Tianon 为 hack maintainer
  • 更新 mkimage-debootstrap,增加更多保持镜像小的调整
  • 使用 https 获取安装脚本
  • 由于 Go 1.2 已发布,移除 vendored dotcloud/tar

0.7.1 (2013-12-05)

文档

  • 将 @SvenDowideit 添加为文档维护者
  • 添加链接示例
  • 添加关于 ambassador 模式的文档
  • 添加 Google Cloud Platform 文档
  • 添加 Dockerfile 最佳实践
  • 更新 RHEL 文档
  • 更新注册表文档
  • 更新 Postgres 示例
  • 更新 Ubuntu 安装文档
  • 改进远程 API 文档

运行时

  • 将 hostconfig 添加到 docker inspect
  • 实现 docker log -f 以流式传输日志
  • 添加环境变量以禁用内核版本警告
  • docker inspect 添加 -format 选项
  • 支持文件的绑定挂载
  • 修复 RHEL 上的桥接创建问题
  • 修复镜像大小计算问题
  • 确保即使桥接已存在,也会调用 iptables
  • 修复仅连接到 stderr 的问题
  • 销毁容器时移除 init 层
  • 修复不同接口绑定相同端口的问题
  • docker build 现在返回正确的退出码
  • 修复 docker port 显示不正确端口的问题
  • docker build 现在在客户端检查 dockerfile 是否存在
  • docker attach 现在返回正确的退出码
  • 当容器不存在时移除名称条目

镜像仓库

  • 改进进度条,添加下载 ETA
  • 并发拉取现在会等待第一个完成,而不是失败
  • 推送到注册表时只标记顶层镜像
  • 修复离线镜像传输的问题
  • 修复注册表密码中使用 ":" 导致的问题

其他

  • 添加 pprof 处理程序用于调试
  • 创建 Makefile
  • 使用现在包含修复的标准库 tar
  • 改进 make.sh 测试脚本
  • 处理守护进程上的 SIGQUIT 信号
  • 在测试期间禁用详细输出
  • 官方构建升级到 go1.2
  • 改进单元测试
  • 现在,即使有测试失败,测试套件也会运行所有测试
  • 重构 Go 中的 C 代码(Devmapper)
  • 修复 OS X 编译问题

0.7.0 (2013-11-25)

自 0.6.0 以来的显著特性

  • 存储驱动:可选择 aufs、device-mapper 或 vfs。
  • 标准 Linux 支持:docker 现在可在未修改的 Linux 内核和所有主要发行版上运行。
  • 链接:通过相互连接容器来构建复杂的软件栈。
  • 容器命名:通过赋予容器易于记忆的名称来组织它们。
  • 高级端口重定向:可以指定每个接口的端口重定向,或保持敏感端口私有。
  • 离线传输:将镜像推送到文件系统或从文件系统拉取镜像,而不会丢失信息。
  • 质量:大量错误修复和小的可用性改进。测试覆盖率显著增加。

0.6.7 (2013-11-21)

运行时

  • 提高稳定性,修复了一些竞态条件
  • 删除容器卷时跳过已挂载的卷。
  • 修复层大小计算:正确处理硬链接
  • 对 docker cp CONTAINER:PATH 使用工作路径
  • 修复 tmp 目录永不清理的问题
  • 加速 docker ps 命令
  • 名称冲突时提供更详细的错误消息
  • 修复 nameserver 正则表达式
  • 总是返回长 ID
  • 修复容器重启的竞态条件
  • 在 docker stop; docker start 后保留已发布的端口
  • 修复 Fedora 上的容器网络问题
  • 向 iptables 正确表达“任意地址”
  • 修复重新连接到“幽灵”容器时的网络设置问题
  • 如果镜像被正在运行的容器使用,则阻止删除
  • 在图(graph)的读取操作周围加锁

远程 API

  • 在 docker rmi 时返回完整 ID

客户端

  • 为 images 命令添加 -tree 选项
  • 离线镜像传输
  • 使用错误时以状态 2 退出,并在 stderr 上显示用法信息
  • 不将 SIGCHLD 转发到容器
  • 为 docker events -since 使用字符串时间戳

其他

  • 更新到 go 1.2rc5
  • 为 upstart 添加 /etc/default/docker 支持

0.6.6 (2013-11-06)

运行时

  • 注册时确保容器名称存在
  • 修复 /etc/hosts 的回归问题
  • 在图(graph)的写操作周围加锁
  • 检查端口是否有效
  • 修复“幽灵”容器网络相关的重启运行时错误
  • 添加更多颜色和动物,以增加生成的名称池
  • 修复 docker inspect 中的问题
  • 逃脱 apparmor 的限制
  • 使用文件设置环境变量。
  • 防止 docker insert 擦除数据
  • 防止 CreateBridgeIface 中出现 DNS 服务器冲突
  • 在服务器端验证绑定挂载
  • 在 docker build 中使用父镜像配置
  • 修复 /etc/hosts 的回归问题

客户端

  • 添加 -P 标志以发布所有暴露的端口
  • 为 docker history 添加 -notrunc 和 -q 标志
  • 修复 docker commit、tag 和 import 的用法
  • 在 docker search 中添加 stars、trusted builds 和 library 标志
  • 修复带有 tty 的 docker logs

远程 API

  • 使 /events API 立即发送头部信息
  • docker top 不拆分最后一列
  • 为 history 添加大小信息

其他

  • 贡献:桌面集成。Firefox 用例。
  • Dockerfile:更新到 go1.2rc3

0.6.5 (2013-10-29)

运行时

  • 容器现在可以被命名
  • 容器现在可以相互链接以进行服务发现
  • 'run -a'、'start -a' 和 'attach' 可以将信号转发到容器,以便更好地与进程管理器集成
  • 重启后自动启动崩溃的容器
  • 为容器链接将 IP、port 和 proto 作为单独的环境变量暴露
  • 允许将端口发布到特定的 IP 地址
  • 默认禁止容器间通信
  • 在 Container.Attach 中忽略 stdin 的 ErrClosedPipe 错误
  • 移除未使用的字段 kernelVersion
  • 修复在容器中挂载 /mnt 子目录时的问题
  • 修复删除镜像时的 untag 问题
  • 在 dockerinit 内部改变工作目录时检查 syscall.Chdir 的返回值

客户端

  • 仅在需要时将 stdin 传递给 hijack,以避免封闭管道错误
  • 在命令行方法调用中减少反射的使用
  • 在容器启动后而不是之前监视 tty 大小
  • 移除 log.Fatal 后无用的 os.Exit() 调用

Hack

  • 添加初始 init 脚本库以及一个对 Debian 也适用的更安全的 Ubuntu 打包脚本
  • 添加 -p 选项以使用 http_proxy 调用 debootstrap
  • 更新 install.sh,使用 $sh_c 来获取 modprobe 的 sudo/su 权限
  • 更新所有 mkimage 脚本,将 --numeric-owner 用作 tar 参数
  • 更新 hack/release.sh 流程,使其自动调用 hack/make.sh 并在构建和测试出现问题时中止

其他

  • 文档:修复示例中 nc 的标志
  • 测试:移除警告并防止挂载问题
  • 测试:改变 tty 调整大小的逻辑,以避免测试中的警告
  • 构建器:修复 docker build 详细输出时的竞态条件
  • 注册中心:修复 PushImageJSONIndex 方法的内容类型(content-type)
  • 贡献:改进用于生成 debian 和 Arch Linux 服务器镜像的辅助工具

0.6.4 (2013-10-16)

运行时

  • 在 Start() 失败时添加容器清理
  • 为 utils/stdcopy.go 添加更好的注释
  • 添加 utils.Errorf 用于错误日志记录
  • 为 docker run 添加 -rm 选项,用于在容器退出时移除容器
  • 移除实际上不是错误的错误消息
  • 修复带有卷的 docker rm 命令
  • 修复某些 HTTP body 可能未关闭的错误情况
  • 修复错误的 dockercfg 文件引起的 panic
  • 修复带有 -i 的 attach 行为
  • 在状态中记录终止时间。
  • 使用空字符串,以便 TempDir 自动使用 OS 的临时目录
  • 确保关闭网络分配器
  • 默认自动重启容器
  • 更新 vendor kr/pty 到 commit 3b1f6487b (syscall.O_NOCTTY)
  • lxc: 允许容器中的 set_file_cap 能力
  • 将 run -rm 移至仅 CLI 可用
  • 分离 stdout 和 stderr
  • 始终为容器创建一个新会话

测试

  • 添加聚合的 docker-ci 电子邮件报告
  • 添加清理功能以移除遗留容器
  • 为 docker-ci 添加夜间发布
  • 为 auth.ResolveAuthConfig 添加更多测试
  • 移除测试中的一些错误
  • 当 TCP 和 UDP 代理终止时捕获 errClosing 错误
  • 仅使用 TESTFLAGS='-run TestName' make.sh 运行特定测试
  • 防止 docker-ci 测试正在关闭的 PR
  • 在测试中用 log.Fatal 替换 panic
  • 增加 TestRunDetach 的超时时间

文档

  • 添加 Docker 基础设施文档的初稿
  • 在 CONTRIBUTING.md 中添加开发环境链接
  • 在 Ubuntu 文档中添加 apt-get install curl
  • 添加出口限制的解释
  • 添加 .dockercfg 文档
  • 移除 Gentoo 安装文档中关于 #1422 变通方法的说明
  • 修复 -v 选项的帮助文本
  • 修复 Ping 端点文档
  • 修复 ADD 命令文档中的参数名称
  • 修复 changelog 中具有讽刺意味的拼写错误
  • 修复 postgres 示例中的各种命令
  • 记录如何编辑和发布文档
  • postgresql_service.rst 进行小幅更新
  • 向贡献者澄清 LGTM 流程
  • 更正了包名称中的错误
  • 记录 vagrant up 的实际作用
  • 改进文档搜索结果
  • 清理 API 1.5 文档中的空白
  • 在 MAINTAINER 示例电子邮件中使用尖括号
  • 更新 archlinux.rst
  • 文档改为新样式。包含版本切换器。
  • 格式化,添加关于多行 json 的信息
  • 改进注册中心和索引 REST API 文档
  • 替换已弃用的指向 docker-latest.tgz 的升级参考,该文件自 0.5.3 以来未更新
  • 更新 Gentoo 安装文档,因为我们现在已正式包含在 portage 树中
  • 清理和重组贡献者和维护者的文档和工具
  • 将 protocoll 的小拼写错误更正为 protocol

Contrib

  • 添加 @honza 提供的 Dockerfiles 的 vim 语法高亮
  • 添加 mkimage-arch.sh
  • 重组贡献的补全脚本以添加 zsh 补全

Hack

  • 将 vagrant 用户添加到 docker 组
  • 为 "docker push" 添加适当的 bash 补全
  • 添加 xz utils 作为运行时依赖项
  • 添加 #2010 中针对 hack 和 Dockerfile 更新的清理/重构部分
  • 重新添加 contrib/mkimage-centos.sh(来自 #1621)及其相关文档链接
  • 添加 #1920 中的几个 make.sh 小修复,并使输出更一致、更利于贡献者
  • 将 @tianon 添加到 hack/MAINTAINERS
  • 改进 VirtualBox 的网络性能
  • 改造 install.sh,使其更易被更多人使用,并尽可能使用官方安装方法(apt 仓库、portage 树等)
  • 修复 contrib/mkimage-debian.sh 中的 apt 缓存阻止问题
  • 将 Dockerfile.tmLanguage 添加到 contrib
  • 配置 FPM 使 /etc/init/docker.conf 成为配置文件
  • 在 Vagrant VM 中启用 SSH Agent 转发
  • 对 contrib/mkimage-debian.sh 进行一些小的调整/修复

其他

  • 构建器:如果 mergeConfig 返回错误则中止构建,并修复重复的错误消息
  • 打包:移除已弃用的 packaging 目录
  • 注册中心:登录时使用正确的 auth 配置。
  • 注册中心:修复错误消息,使其与正则表达式相同

0.6.3 (2013-09-23)

打包

  • 为 ubuntu 包安装时添加 'docker' 组
  • 更新 tar vendor 依赖
  • 通过 HTTPS 下载 apt 密钥

运行时

  • 仅复制非绑定挂载卷并更改其权限
  • 允许使用多个 volumes-from
  • 修复从 STDIN 的 HTTP 导入问题

文档

  • 更新关于构建后提取 docker 二进制文件的章节
  • 更新新构建流程的开发环境文档
  • 从文档中移除 'base' 镜像

其他

  • 客户端:修复分离(detach)问题
  • 注册中心:更新正则表达式以匹配索引

0.6.2 (2013-09-17)

运行时

  • 添加 domainname 支持
  • 使用 path.Match 实现镜像过滤
  • 移除不必要的警告
  • 移除 os/user 依赖
  • 仅在配置存在时挂载 hostname 文件
  • docker login 命令中处理信号
  • UID 和 GID 现在也应用于卷
  • docker start 在出错时设置错误码
  • docker run 设置与启动的进程相同的错误码

构建器

  • 添加 -rm 选项以移除中间容器
  • 允许 RUN 指令使用多行

镜像仓库

  • 实现私有注册中心的登录
  • 修复 push 问题

其他

  • Hack: Vendor 所有依赖项
  • 远程 API: 更新到 v1.5
  • 打包:将 hack/make.sh 分解成小脚本,每个 'bundle' 一个:test, binary, ubuntu 等。
  • 文档:一般性改进

0.6.1 (2013-08-23)

镜像仓库

  • 在对注册中心的 API 调用中传递“元”头部

打包

  • 使用新构建工具使用正确的 upstart 脚本
  • 使用 libffi-dev,不从源代码构建
  • 移除重复的 mercurial 安装命令

0.6.0 (2013-08-22)

运行时

  • 添加 lxc-conf 标志以允许自定义 lxc 选项
  • 添加设置工作目录的选项
  • 在 LogEvent 测试中添加镜像名称
  • 添加 -privileged 标志以及相关的测试、文档和示例
  • 为 /container/ 添加 websocket 支持/attach/ws
  • 当 net.ipv4.ip_forwarding = 0 时添加警告
  • 将 hostname 添加到环境变量
  • docker version 中添加上一个稳定版本
  • 修复并行 pull 中的竞态条件
  • 修复 Graph ByParent() 以生成每个父镜像的子镜像列表。
  • 修复 typo: fmt.Sprint -> fmt.Sprintf
  • 修复 docker build 中小的 \n 错误
  • 修复“在 /.dockerinit 注入 dockerinit”的问题
  • 修复 #910。将用户名打印到 docker info 输出
  • dockerbuilder 使用 Go 1.1.2
  • 在 channels 上使用 range 循环
  • 在 server.ImageDelete 中使用 utils.ParseRepositoryTag 替代 strings.Split(name, ":")
  • 改进 CMD、ENTRYPOINT 和 attach 的文档。
  • 改进带有 socket 错误的连接消息
  • 仅在需要时加载 authConfig 并修复无用的 WARNING
  • 显示镜像丢失时使用的 tag
  • 在创建卷之前应用 volumes-from
  • 使 docker run 处理 SIGINT/SIGTERM 信号
  • 防止 .dockercfg 文件不可读时崩溃
  • 安装脚本应通过 https 获取,而非 http。
  • API, issue 1471: 使用组来管理 socket 权限
  • 正确检测 IPv4 转发
  • 将 /dev/shm 挂载为 tmpfs
  • 将 get.docker.io 从 http 切换到 https
  • 让用户空间代理处理容器绑定的流量
  • 更新 Docker CLI,指定 "Host" 头部的值。
  • 更改网络范围以避免与 EC2 DNS 冲突
  • ping 注册中心时减少连接和读取超时时间
  • 并行 pull
  • 处理 ip route 显示无掩码 IP 地址的情况
  • 允许只有 ENTRYPOINT 没有 CMD
  • 解析 FQN 仓库名称时始终将 localhost 视为域名
  • 重构 checksum

文档

  • 添加 MongoDB 镜像示例
  • 添加创建和使用 docker 组的说明
  • 在示例和安装文档中添加 sudo
  • 添加 ufw 文档
  • 添加对 ps -a 的引用
  • 添加关于 Docker 在 LXC 之上的高级工具的信息。
  • 修复 docker run -dns 文档中的拼写错误
  • 修复 ubuntu 安装指南中的一个拼写错误
  • 修复关于添加 docker 组的文档
  • 更新默认 -H 文档
  • 更新 readme,包含构建依赖项
  • 更新 amazon.rst,解释在 ec2 上运行 Docker 不需要 Vagrant
  • 文档中的 PostgreSQL 服务示例
  • 建议默认安装 linux-headers。
  • 更改 Twitter 账号
  • 澄清 Amazon EC2 安装
  • 'base' 镜像已弃用,不应再在文档中引用。
  • 移动关于官方支持内核的注释
  • 解决了 logo 在 Safari 中被压扁的问题

构建器

  • 为 Dockerfile 添加 USER 指令
  • 为 Buildfile 添加 workdir 支持
  • 为 docker build 添加无缓存选项
  • 修复 docker build 和 docker events 的输出
  • 仅将已知指令计为构建步骤
  • 确保构建中的 ENV 指令每次都执行一次提交
  • 禁止 docker build ADD 中的某些路径
  • 在 build 用法中包含仓库名称(以及可选的 tag)
  • 确保 ADD 创建的所有内容权限为 0755

远程 API

  • 按最近创建日期排序镜像。
  • 重做 registry 模块中的不透明请求
  • 在 /events 中添加镜像名称
  • 使用 mime 包解析 Content-Type
  • 改进 650 http utils 和用户代理字段相关功能

Hack

  • Bash 补全:限制命令仅作用于相关状态的容器
  • 在 docker-ci 中添加 docker 依赖项覆盖率测试

打包

  • 支持 Docker-brew 0.5.2 并减少内存占用
  • 在 docker-ci 中添加新的 docker 依赖项
  • 还原 "docker.upstart: 避免生成一个 sh 进程"
  • Docker-brew 和 Docker 标准库
  • 使用 docker 发布 docker
  • 修复 get.docker.io 生成的 upstart 脚本
  • 启用文档生成 manpages。
  • 还原 Vagrant 中 daemon 绑定到 0.0.0.0 的设置。

注册

  • 改进 auth push
  • 注册中心单元测试 + mock 注册中心

测试

  • 改进 TestKillDifferentUser 以防止在 buildbot 上超时
  • 修复 TestBindMounts 中的拼写错误(未带镜像调用 runContainer)
  • 改进 TestGetContainersTop,使其不依赖于 sleep
  • 放宽 lo 接口测试,允许接口索引不等于 1
  • 将 registry 功能测试添加到 docker-ci
  • 在 server 和 utils 中添加一些测试

其他

  • 贡献: bash 自动补全脚本
  • 客户端: 添加 docker cp 命令和 copy api 端点,用于将容器文件/文件夹复制到主机
  • 仅附加到 stdin 时,不从 stdout 读取

0.5.3 (2013-08-13)

运行时

  • 使用 docker 组来设置 socket 权限
  • 在 upstart 脚本中启动 shell
  • 处理 ip route 显示无掩码 IP 地址的情况
  • 将 hostname 添加到环境变量

构建器

  • 确保构建中的 ENV 指令每次都执行一次提交

0.5.2 (2013-08-08)

  • 构建器: 在 docker build ADD 中禁止某些路径
  • 运行时: 更改网络范围,避免与 EC2 DNS 冲突
  • API: 默认更改守护进程监听 unix socket

0.5.1 (2013-07-30)

运行时

  • docker top 添加 ps 参数
  • 添加对容器 ID 文件(类似 pidfile)的支持
  • 在默认环境中添加 container=lxc
  • 支持无网络容器,使用 docker run -ndocker -d -b=none
  • stdout/stderr 日志现在与 JSON 存储在同一文件中
  • 默认分配 /16 IP 范围,回退到 /24。尝试 12 个范围而不是 3 个。
  • 将 .dockercfg 格式更改为 json 并支持多个远程认证
  • 不覆盖配置中的卷
  • 修复 EXPOSE 覆盖问题

API

  • Docker 客户端现在设置 useragent (RFC 2616)
  • 添加 /events 端点

构建器

  • ADD 命令现在支持 URL
  • CmdAdd 和 CmdEnv 现在遵循 Dockerfile 中设置的 ENV 变量
  • 在 ADD 指令中创建目录时使用 755 权限而不是 700

Hack

  • 使用 helpers 简化单元测试
  • 改进 docker.upstart 事件
  • 将覆盖率测试添加到 docker-ci

0.5.0 (2013-07-17)

运行时

  • 使用 'docker top' 列出容器内运行的所有进程
  • 主机目录可以使用 'docker run -v' 挂载为卷
  • 容器可以暴露公共 UDP 端口(例如,'-p 123/udp')
  • 可选地指定一个精确的公共端口(例如,'-p 80:4500')
  • 'docker login' 支持额外选项
  • 提交镜像时,不保存容器的主机名。

镜像仓库

  • 新的镜像命名方案受 Go 包命名约定的启发,允许任意组合 registry
  • 修复上传镜像到私有 registry 的问题

构建器

  • ENTRYPOINT 指令为容器设置默认二进制入口点
  • VOLUME 指令将容器的一部分标记为持久化数据
  • 默认情况下,'docker build' 显示构建的完整输出

0.4.8 (2013-07-01)

  • 构建器: 新的构建操作 ENTRYPOINT 为容器添加可执行入口点。 - 运行时: 修复导致 'docker run -d' 不再打印容器 ID 的 bug。
  • 测试: 修复测试套件中的问题

0.4.7 (2013-06-28)

远程 API

  • 下载和上传大文件时,进度条更新更快
  • 修复可选 unix socket 传输中的 bug

运行时

  • 改进内核版本检测
  • 主机目录可以使用 'docker run -b' 挂载为卷
  • 修复仅附加到 stdin 时的已知问题
  • 使用 'tar --numeric-owner' 避免多个主机之间的 uid 不匹配

Hack

  • 改进测试套件和开发环境
  • 移除单元测试对 'os/user' 的依赖

其他

  • Registry: 更轻松地推/拉到自定义 registry
  • 文档: 添加术语部分

0.4.6 (2013-06-22)

  • 运行时: 修复创建空镜像(和卷)导致崩溃的 bug。

0.4.5 (2013-06-21)

  • 构建器: 'docker build git://URL' 会拉取并构建远程 git 仓库
  • 运行时: 'docker ps -s' 可选地打印容器大小
  • 测试: 改进和简化
  • 运行时: 修复 0.4.3 引入的导致 logs 命令失败的回归问题。
  • 构建器: 修复 ADD 用于单个普通文件时的回归问题。

0.4.4 (2013-06-19)

  • 构建器: 修复 0.4.3 引入的导致在新客户端上构建失败的回归问题。

0.4.3 (2013-06-19)

构建器

  • ADD 一个本地文件会检测 tar 压缩包并解压它们
  • ADD 改进: 使用 tar 进行复制 + 自动解压本地压缩包
  • ADD 使用 tar/untar 进行复制,而不是调用 'cp -ar'
  • 修复 ADD 的行为,使其(大部分)向后兼容、可预测并有良好文档。
  • 修复当 ADD 是第一个命令时导致构建失败的 bug
  • 'docker build' 的输出更美观

运行时

  • 移除 bsdtar 依赖
  • 添加 unix socket 和多个 -H 支持
  • 阻止删除正在运行的容器
  • 使用 go1.1 cookiejar
  • 修复从正在运行的 TTY 容器分离的问题
  • 禁止对单个镜像/仓库进行并行推/拉。修复 #311
  • 修复 Run 命令在附加时存在的竞态条件。

客户端

  • 拉取时进度条显示人性化大小
  • 修复 docker version 的 git commit 输出

API

  • 在 History API 调用中发送所有标签
  • 向 history 命令添加标签查找。修复 #882

文档

  • 修复 irc bouncer 示例中缺少的命令

0.4.2 (2013-06-17)

  • 打包: 提升版本以规避 Ubuntu 的一个 bug

0.4.1 (2013-06-17)

远程 API

  • 添加标志以启用跨域请求
  • 在 docker ps 和 docker images 中添加镜像和容器大小

运行时

  • 使用 'docker -d -dns' 在主机范围内配置 DNS
  • 检测有问题的 DNS 配置并将其替换为公共默认值
  • 允许 docker run:
  • 现在可以指定公共端口(例如:-p 80:4500)
  • 改进镜像删除,以垃圾回收未被引用的父镜像

客户端

  • 允许 inspect 命令使用多个参数
  • docker run 劫持之前打印容器 ID

镜像仓库

  • 对仓库名称添加正则表达式检查
  • 将认证移至客户端
  • 移除拉取时的登录检查

其他

  • Vagrantfile: 将 rest api 端口添加到 vagrantfile 的 port_forward
  • 升级到 Go 1.1
  • 构建器: Dockerfile 的最后一行如果不是以 \n 结尾,则不忽略

0.4.0 (2013-06-03)

构建器

  • 引入构建器
  • 'docker build' 从包含 Dockerfile 的源仓库逐层构建容器

远程 API

  • 引入远程 API
  • 使用简单的 HTTP/json API 以编程方式控制 Docker

运行时

  • 各种可靠性和可用性改进

0.3.4 (2013-05-30)

构建器

  • 'docker build' 从包含 Dockerfile 的源仓库逐层构建容器
  • 'docker build -t FOO' 将标签 FOO 应用到新构建的容器。

运行时

  • 交互式 TTY 正确处理窗口大小调整
  • 修复层之间配置合并的方式

远程 API

  • 'docker run' 分离 stdout 和 stderr
  • 可选地在不同的 IP 和端口上监听(使用风险自负)

文档

  • 改进安装说明。

0.3.3 (2013-05-23)

  • Registry: 修复推送回归问题
  • 各种错误修复

0.3.2 (2013-05-09)

镜像仓库

  • 改进校验过程
  • 推送时使用大小显示良好的进度条
  • 如果存在实际归档,则使用它以加快推送速度
  • 修复推送时出现的 400 错误

运行时

  • 提交时存储实际归档

0.3.1 (2013-05-08)

构建器

  • 在 docker 构建器中实现自动运行功能
  • 为 docker 构建器添加缓存
  • 添加对使用原生 API 作为顶级命令的 docker 构建器的支持
  • 在 docker 构建器中实现 ENV
  • 在创建之前检查命令是否存在,并为此情况添加单元测试
  • 使用任意空白字符而不是 tab

运行时

  • 将 go 版本添加到调试信息中
  • 内核版本 - 如果 flavor 为空,则不显示短横线

镜像仓库

  • 添加 docker search 顶级命令以搜索仓库
  • 修复拉取带有特定标签的官方镜像的问题
  • 修复使用不同用户登录并尝试推送时的问题
  • 改进校验和 - 异步计算

镜像

  • 将镜像图输出为 dot (graphviz) 格式
  • 修复 ByParent 函数

文档

  • 新的介绍和高层概述
  • 添加 docker 构建器的文档
  • 修复 Docker 文档的 CSS,使 REST API 文档看起来更好。
  • 修复 CouchDB 示例页面标题错误
  • 修复 README 格式

其他

  • 网站: 新的高层概述
  • Makefile: 将 "go get" 替换为 "go get -d",特别是在 go1.1rc 上编译时
  • 打包: Ubuntu 打包; issue #510: 使用 golang-stable PPA 包构建 docker

0.3.0 (2013-05-06)

运行时

  • 修复命令存在性检查
  • strings.Split 在没有匹配项时可能返回空字符串
  • 修复 cgroup 内存不存在时导致的索引越界崩溃

文档

  • 各种改进
  • 新示例: 在两个 CouchDB 数据库之间共享数据

其他

  • Vagrant: 在 /etc/apt 中只使用一行 deb
  • Registry: 实现新的 registry

0.2.2 (2013-05-03)

  • 支持数据卷 ('docker run -v=PATH')
  • 在容器之间共享数据卷 ('docker run -volumes-from')
  • 改进文档
  • 升级到 Go 1.0.3
  • 为贡献者改进开发环境的各种升级

0.2.1 (2013-05-01)

  • 'docker commit -run' 将层与默认运行时选项(command, ports 等)打包在一起。
  • 改进在 Vagrant 上的安装过程
  • 新的 Dockerfile 操作: "maintainer"
  • 新的 Dockerfile 操作: "expose"
  • 新的 Dockerfile 操作: "cmd"
  • 贡献脚本用于构建 Debian 基础层
  • 'docker -d -r': 在守护进程启动时重启崩溃的容器
  • 运行时: 改进测试覆盖率

0.2.0 (2013-04-23)

  • 运行时: ghost 容器可以被杀死和等待
  • 文档: 更新安装说明
  • 打包: 修复 Vagrantfile
  • 开发: 自动化发布二进制文件和 Ubuntu 包
  • 添加变更日志
  • 各种错误修复

0.1.8 (2013-04-22)

  • 动态检测 cgroup 能力
  • 在内核版本 <3.8 上发出稳定性警告
  • 'docker push' 在磁盘而非内存中进行缓冲
  • 修复 'docker diff' 处理已删除文件的问题
  • 修复 'docker stop' 处理 ghost 容器的问题
  • 修复 pidfile 处理问题
  • 各种错误修复和稳定性改进

0.1.7 (2013-04-18)

  • 容器端口可在 localhost 上访问
  • 'docker ps' 显示已分配的 TCP 端口
  • 贡献者可以运行 'make hack' 启动持续集成 VM
  • 简化 Ubuntu 打包和上传流程
  • 各种错误修复和稳定性改进

0.1.6 (2013-04-17)

  • 使用 'docker commit -author' 记录镜像作者

0.1.5 (2013-04-17)

  • 禁用独立模式
  • 使用 'docker -d -dns' 指定自定义 DNS 解析器
  • 检测 ghost 容器
  • 改进对系统能力缺失的诊断
  • 允许在编译时禁用内存限制
  • 添加 Debian 打包
  • 文档: 在 Arch Linux 上安装
  • 文档: 在 Docker 上运行 Redis
  • 修复与 lxc 0.9 的兼容性问题
  • 自动加载 aufs 模块
  • 各种错误修复和稳定性改进

0.1.4 (2013-04-09)

  • 全面支持 TTY 模拟
  • 使用转义序列 C-p C-q 从 TTY 会话分离
  • 各种错误修复和稳定性改进
  • 微小的 UI 改进
  • 自动创建我们自己的桥接接口 'docker0'

0.1.3 (2013-04-04)

  • 使用 '-p :PORT' 选择 TCP 前端端口
  • 层格式已版本化
  • 进程管理器的重大可靠性改进
  • 各种错误修复和稳定性改进

0.1.2 (2013-04-03)

  • 使用 'docker run -h' 设置容器主机名
  • 在运行时选择性附加,使用 'docker run -a [stdin[,stdout[,stderr]]]'
  • 各种错误修复和稳定性改进
  • UI 优化
  • 推/拉时的进度条
  • 默认使用 XZ 压缩
  • 使 IP 分配器延迟分配

0.1.1 (2013-03-31)

  • 为方便起见显示短 ID
  • 稳定进程管理
  • 层可以包含提交消息
  • 简化 'docker attach'
  • 修复重新附加的支持
  • 各种错误修复和稳定性改进
  • 运行时自动下载
  • 推送时自动登录
  • 增强文档

0.1.0 (2013-03-23)

首次公开发布

  • 实现 registry,用于推/拉镜像
  • TCP 端口分配
  • 修复 Linux 上的 termcaps 问题
  • 添加文档
  • 添加 Vagrant 支持,包含 Vagrantfile
  • 添加单元测试
  • 添加仓库/标签以简化镜像管理
  • 改进层的实现
页面选项