Docker Engine 以前的版本
1.13.1 (2017-02-08)
重要在以 `devicemapper` 为默认存储驱动的 Linux 发行版上,现在默认使用 `overlay2` 或 `overlay`(如果内核支持)。要使用 `devicemapper`,您可以通过 `--storage-driver` 守护进程选项手动配置存储驱动,或者在 `daemon.json` 配置文件中设置 "storage-driver"。
重要在 Docker 1.13 中,托管插件 API 与 Docker 1.12 中引入的实验版本相比发生了变化。在升级到 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
要手动删除所有插件并解决此问题,请执行以下步骤:
- 从 ` /var/lib/docker/plugins/` 中删除 `plugins.json`。
- 重新启动 Docker。验证 Docker 守护进程启动时没有错误。
- 重新安装您的插件。
贡献
远程 API (v1.26) & 客户端
- 在 `docker stack deploy` 中使用 compose 文件支持 secrets #30144
运行时
- 修复 `docker system df` 中的大小问题 #30378
- 修复 Swarm 证书过期时 `docker inspect` 的错误。 #29246
- 修复 v1 插件激活错误时的死锁 #30408
- 修复 SELinux 回归 #30649
插件
- 在 swarm 模式下支持全局范围的网络插件 (v2) #30332
- 添加 `docker plugin upgrade` #29414
Windows
1.13.0 (2017-01-18)
重要在以 `devicemapper` 为默认存储驱动的 Linux 发行版上,现在默认使用 `overlay2` 或 `overlay`(如果内核支持)。要使用 `devicemapper`,您可以通过 `--storage-driver` 守护进程选项手动配置存储驱动,或者在 `daemon.json` 配置文件中设置 "storage-driver"。
重要在 Docker 1.13 中,托管插件 API 与 Docker 1.12 中引入的实验版本相比发生了变化。在升级到 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
要手动删除所有插件并解决此问题,请执行以下步骤:
- 从 ` /var/lib/docker/plugins/` 中删除 `plugins.json`。
- 重新启动 Docker。验证 Docker 守护进程启动时没有错误。
- 重新安装您的插件。
构建器
- 修复 Dockerfile 解析器在转义后空行的问题 #24725
- 在 `docker build` 上添加步骤编号 #24978
- 现在允许使用未使用的 build-args。将显示警告而不是错误和失败的构建 #27412
- 修复 Windows 上的构建器缓存问题 #27805
贡献
- 添加在 PPC64LE 上为 Ubuntu 16.04 Xenial 构建 docker debs 的支持 #23438
- 添加在 s390x 上为 Ubuntu 16.04 Xenial 构建 docker debs 的支持 #26104
- 添加在 PPC64LE 上为 Ubuntu 16.10 Yakkety Yak 构建 docker debs 的支持 #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
- 支持在 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 数据将导致更新失败 - 例如,如果存在无效的根轮换。docker/notary#982
- 改进根验证和 yubikey 调试日志记录 docker/notary#858 docker/notary#891
- 警告根证书或委托证书接近过期 docker/notary#802
- 警告角色元数据接近过期 docker/notary#786
- 修复密码检索尝试计数和终端检测 docker/notary#906
- 当不同用户将相同层推送到经过身份验证的注册表时,避免不必要的 blob 上传 #26564
- 允许外部存储注册表凭据 #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-mode overlay 网络中工作 #25962
- 在 `docker service create` 中使用 `--publish` 选项时,支持服务中的主机端口 PublishMode #27917 和 #28943
- 添加对 Windows Server 2016 overlay 网络驱动的支持(需要即将发布的 ws2016 更新) #28182
- 将默认 `FORWARD` 策略更改为 `DROP` #28257
- 添加支持在 Windows 上为预定义网络指定静态 IP 地址 #22208
- 修复 `docker run` 上的 `--publish` 标志与 IPv6 地址不工作的问题 #27860
- 修复检查网络显示带有掩码的网关 #25564
- 修复桥接中多个地址可能导致 `--fixed-cidr` 没有正确地址的问题 #26659
- 为 `docker network inspect` 添加创建时间戳 #26130
插件
- 添加支持动态重新加载授权插件 #22770
- 在 `docker plugin ls` 中添加描述 #25556
- 为 `docker plugin inspect` 添加 `-f`/`--format` #25990
- 添加 `docker plugin create` 命令 #28164
- 将请求的 TLS 对等证书发送给授权插件 #27383
- 在 swarm-mode 中支持全局范围的网络和 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
- 使 `docker node ps` 在 swarm 节点中默认为 `self` #25214
- 在 `docker service create` 中添加 `--group` #25317
- 为 service/node/stack ps 输出添加 `--no-trunc` #25337
- 将 Logs 添加到 `ContainerAttachOptions`,以便 Go 客户端可以请求在连接过程中检索容器日志 #26718
- 允许客户端与旧服务器通信 #27745
- 客户端通知用户正在进行容器删除 #26074
- 不允许在服务终结点中同时请求多种模式 #26643
- 为 `/containers/create` API 添加功能,以更精细和安全的方式指定挂载 #22373
- 为 `network ls` 和 `volume ls` 添加 `--format` 标志 #23475
- 允许顶层 `docker inspect` 命令检查任何类型的资源 #23614
- 为 `docker run` 和 `docker create` 添加 `--cpus` 标志以控制 CPU 资源,并为 `HostConfig` 添加 `NanoCPUs` #27958
- 允许在 `docker run` 或 `docker create` 中取消设置 `--entrypoint` #23718
- 通过添加 `docker image` 和 `docker container` 命令来重构 CLI 命令,以实现更高的一致性 #26025
- 从 `service ls` 输出中删除 `COMMAND` 列 #28029
- 为 `docker events` 添加 `--format` #26268
- 为 `docker run` 添加 `--dns-option` #28186
- 将 Image 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
- 在 `dockerd` 和 `docker 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
- 允许引擎在用户命名空间内运行 #25672
- 修复使用 devicemapper graphdriver 时设备延迟删除和恢复设备之间的竞争条件 #23497
- 添加 Windows 中 `docker stats` 支持 #25737
- 当 `--userns=host` 时,允许使用 `--pid=host` 和 `--net=host` #25771
- (实验性)为基本的 `container`、`image` 和 `daemon` 操作添加指标 (Prometheus) 输出 #25820
- 修复 `docker stats` 中 `NetworkDisabled=true` 的问题 #25905
- 添加 Windows 中 `docker top` 支持 #25891
- 记录 exec 进程的 pid #27470
- 添加通过 `getent` 查找用户/组的支持 #27599
- 添加新的 `docker system` 命令,带有 `df` 和 `prune` 子命令用于系统资源管理,以及 `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` 守护进程标志以指定覆盖默认值的 seccomp 配置文件的路径 #26276
- 在 `docker exec -t` 上添加 `TERM` 环境变量 #26461
- 在 `docker kill` 时遵守容器的 `--stop-signal` 设置 #26464
Swarm 模式
- 在 `docker service inspect --pretty` 的输出中显示端点模式 #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 create` 和 `docker 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
- 为 `docker service update` 添加 `--update-max-failure-ratio`、`--update-monitor` 和 `--rollback` 标志 #26421
- 修复在容器内运行的 `docker swarm init` 上地址自动发现问题 #26457
- 为 `docker node rm --force` 和 `docker swarm leave --force` 添加短 ( `-f` ) 标志 #28196
- 添加选项以自定义 Raft 快照(`--max-snapshots`、`--snapshot-interval`) #27997
- 如果通过摘要固定,则不重新拉取镜像 #28265
卷
- 在 `docker volume rm` 中添加 `--force` 标志,以强制清除已删除卷的数据 #23436
- 增强 `docker volume inspect` 以显示创建卷时使用的所有选项 #26671
- 添加对本地 NFS 卷的支持以解析主机名 #27329
安全性
弃用
- 将 `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
- 弃用 `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 附带了针对基于 rpm 的安装(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)的更新 systemd 单元文件。从旧版本的 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-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` 标志的值。
同样,如果您在使用默认 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 附带了针对基于 rpm 的安装(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)的更新 systemd 单元文件。从旧版本的 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-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` 标志的值。
同样,如果您在使用默认 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 驱动程序,则网络创建将成功。
运行时
- 修复发送 stdin 关闭事件时的竞争 #29424
网络
- 修复在旧 Docker 版本中使用 `--ipv6` 且没有 ipv6 `--subnet` 创建网络时,`docker network ls` 中出现 panic 的问题 #29416
贡献
- 修复 Darwin 上的编译问题 #29370
1.12.4 (2016-12-12)
重要Docker 1.12 附带了针对基于 rpm 的安装(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)的更新 systemd 单元文件。从旧版本的 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-reload` 和 `sudo systemctl restart docker` 以重新加载更改并(重新)启动 docker 守护进程。
运行时
- 修复卷元数据未移除的问题 #29083
- 异步关闭流以防止持有容器锁 #29050
- 修复新创建的容器卷的 selinux 标签 #29050
- 移除主机名验证 #28990
- 修复由 IO 竞争引起的死锁 #29095 #29141
- 如果容器正在重新启动,则返回空统计信息 #29150
- 修复卷存储锁 #29151
- 确保 API 中的状态代码一致 #29150
- 修复 overlay2 中不透明目录权限不正确的问题 #29093
- 检测插件内容并在 `docker pull` 上报错 #29297
Swarm 模式
- 更新 Swarmkit #29047
- orchestrator/global: 修复更新时的死锁 docker/swarmkit#1760
- 在领导者切换后,为现有网络保留 vxlan id docker/swarmkit#1773
- 拒绝未命名为 "default" 的 swarm 规范 #29152
网络
- 更新 libnetwork #29004 #29146
- 修复嵌入式 DNS 中的 panic docker/libnetwork#1561
- 修复在全局范围网络上传递 `--link-local-ip` 时解组 panic docker/libnetwork#1564
- 修复网络插件返回 nil StaticRoutes 时出现 panic 的问题 docker/libnetwork#1563
- 修复 `osl.(*networkNamespace).DeleteNeighbor` 中的 panic docker/libnetwork#1555
- 修复 swarm 网络并发 map 读/写中的 panic docker/libnetwork#1570
- 允许在容器内运行 docker 时使用加密网络 docker/libnetwork#1502
- 不阻止 IPv6 池的自动分配 docker/libnetwork#1538
- 设置 netlink 调用的超时时间 docker/libnetwork#1557
- 将网络本地存储超时增加到一分钟 docker/libkv#140
- 修复 `libnetwork.(*sandbox).execFunc` 中的 panic docker/libnetwork#1556
- 对于内部网络遵守 icc=false docker/libnetwork#1525
日志记录
- 更新 syslog 日志驱动 #29150
贡献
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-reload` 和 `sudo systemctl restart docker` 以重新加载更改并(重新)启动 docker 守护进程。
运行时
- 修复容器中环境能力的使用 (CVE-2016-8867) #27610
- 防止 Windows 中 libcontainerd 死锁 #27136
- 修复 CopyFileWithTar 中的错误报告 #27075
Swarm 模式
- 修复重启策略的转换 #27062
- 更新 Swarmkit #27554
- 避免重新启动已重新启动的任务 docker/swarmkit#1305
- 当发布端口使用不同协议时允许重复 docker/swarmkit#1632
- 允许服务上分配多个随机发布端口 docker/swarmkit#1657
- 修复初始化时发生分配时的 panic docker/swarmkit#1651
网络
- 更新 libnetwork #27559
- 修复序列化沙箱到字符串时的竞争 docker/libnetwork#1495
- 修复删除期间的竞争 docker/libnetwork#1503
- 在桥接驱动中连接撤销时重置端点端口信息 docker/libnetwork#1504
- 修复网络代码中的死锁 docker/libnetwork#1507
- 修复负载均衡器状态中的竞争 docker/libnetwork#1512
日志记录
- 更新 fluent-logger-golang 到 v1.2.1 #27474
贡献
1.12.2 (2016-10-11)
重要Docker 1.12 附带了针对基于 rpm 的安装(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)的更新 systemd 单元文件。从旧版本的 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-reload` 和 `sudo systemctl restart docker` 以重新加载更改并(重新)启动 docker 守护进程。
运行时
- 修复由于过滤 `docker ps` 的竞争条件引起的 panic #26049
- 实现重试逻辑,以防止在使用 aufs 存储驱动时出现 "Unable to remove filesystem" 错误 #26536
- 如果启用了 `dm.use_deferred_removal`,则防止 devicemapper 移除设备符号链接 #24740
- 修复 CLI 在使用无效选项运行命令时未返回正确退出代码的问题 #26777
- 修复由于健康检查中 stdout / stderr 处理错误引起的 panic #26507
- 修复 exec 的子进程处理 #26874
- 修复 HEALTHCHECK CMD 的 exec 形式 #26208
网络
- 修复 armv5 上守护进程启动 panic #24315
- Vendor libnetwork #26879 #26953
- 避免在代理加入失败时提前返回 docker/libnetwork#1473
- 修复服务发布端口清理问题 docker/libetwork#1432 docker/libnetwork#1433
- 从暂时性 gossip 故障中正确恢复 docker/libnetwork#1446
- 消除 gossip 集群已知节点名称的歧义,以避免节点名称冲突 docker/libnetwork#1451
- 遵守用户为 gossip 提供的监听地址 docker/libnetwork#1460
- 允许通过发布端口在同一主机上的服务之间进行可达性 docker/libnetwork#1398
- 将入口沙箱名称从随机 ID 更改为 `ingress_sbox` docker/libnetwork#1449
- 在入口网络中禁用服务发现 docker/libnetwork#1489
Swarm 模式
- 修复节点加入集群时远程检测节点地址的问题 #26211
- Vendor SwarmKit #26765
- 在状态更新失败后弹跳会话 docker/swarmkit#1539
- 修复可能的 raft 死锁 docker/swarmkit#1537
- 修复服务更新时没有端点的 panic 和端点泄漏 docker/swarmkit#1481
- 如果在 `service create` 或 `service update` 上发布了两次相同的端口,则产生错误 docker/swarmkit#1495
- 修复服务更改未被检测到导致服务未更新的问题 docker/swarmkit#1497
- 不允许在 ingress 网络上创建服务 docker/swarmkit#1600
贡献
- 更新 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 附带了针对基于 rpm 的安装(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)的更新 systemd 单元文件。从旧版本的 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-reload` 和 `sudo 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
贡献
网络
- 修复 Swarm 模式下 Docker overlay 驱动中容器无法通过主机名访问的问题 #25603 #25648
- 修复带有发布端口的服务上的随机网络问题 #25603
- 修复扩展和收缩后服务间通信不可靠的问题 #25603
- 修复删除节点上所有任务并重新添加它们后与其它服务的连接中断的问题 #25603
- 修复任务启动失败导致竞争,从而产生 `network xxx not found` 错误,掩盖实际错误的问题 #25550
- 放宽对使用不符合 RFC 2782 格式的 SRV 记录的外部服务的 SRV 记录验证 #25739
插件(实验性)
运行时
- 在守护进程日志中掩盖加入令牌 #25346
安全性
- 将 `/proc/timer_list` 添加到掩码路径列表,以防止主机信息泄露 #25630
- 允许 systemd 仅使用 `--cap-add SYS_ADMIN` 运行,而无需同时添加 `--cap-add DAC_READ_SEARCH` 或禁用 seccomp 过滤 #25567
Swarm
- 修复当仲裁丢失后 swarm 可能会卡住选择新领导者的问题 #25055
- 修复领导者故障转移后容器意外重新调度的问题 #25017
- 将 swarm 根 CA 密钥更改为 P256 曲线 swarmkit#1376
- 允许强制从 swarm 中移除节点 #25159
- 修复节点离开 swarm 时连接泄漏问题 swarmkit/#1277
- 将 swarm 证书提前一个小时,以容忍更大的时钟偏移 swarmkit/#1243
- 避免因许多无法调度的任务而导致高 CPU 使用率 swarmkit/#1287
- 修复全局任务无法启动的问题 swarmkit/#1295
- 垃圾回收 raft 日志 swarmkit/#1327
卷
- 在守护进程重启后持久化本地卷选项 #25316
- 修复卷卸载时未返回挂载 ID 的问题 #25333
- 修复卷挂载可能无意中创建绑定挂载的问题 #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 单元文件。从旧版本的 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-reload` 和 `sudo systemctl restart docker` 以重新加载更改并(重新)启动 docker 守护进程。
重要对于 Docker 1.12,Linux `docker` 安装现在有两个额外的二进制文件:`dockerd` 和 `docker-proxy`。如果您有用于安装 `docker` 的脚本,请务必相应地更新它们。
构建器
- 新的 `HEALTHCHECK` Dockerfile 指令以支持用户定义的健康检查 #23218
- 新的 `SHELL` Dockerfile 指令以指定在 Dockerfile 中使用命令的 shell 形式时的默认 shell #22489
- 添加 `#escape=` Dockerfile 指令以支持 Dockerfile 中文件路径的平台特定解析 #22268
- 添加对 `.dockerignore` 中注释的支持 #23111
- 支持 Dockerfile 中的 UTF-8 #23372
- 如果存在,跳过 `Dockerfile` 和 `.dockerignore` 中的 UTF-8 BOM 字节 #23234
- Windows:支持 `ARG` 以匹配 Linux #22508
- 修复在使用禁用桥接网络的守护进程进行构建时出现的错误消息 #22932
贡献
- 为 Centos 7 和 Oracle Linux 7 启用 seccomp #22344
- 在 systemd 单元中删除 MountFlags 以允许共享挂载传播 #22806
分发
- 添加 `--max-concurrent-downloads` 和 `--max-concurrent-uploads` 守护进程标志,适用于网络连接不支持多下载/上传的情况 #22445
日志记录
- Syslog 日志驱动现在支持 DGRAM socket #21613
- 为 `docker logs` 添加 `--details` 选项,以显示日志标签 #21889
- 启用 syslog 记录器以访问 env 和 labels #21724
- 一个额外的 syslog-format 选项 `rfc5424micro`,允许 syslog 时间戳具有微秒分辨率 #21844
网络
- 使用 IPVS 进行内置的基于虚拟 IP 的内部和入口负载平衡 #23361
- 使用入口 overlay 网络进行路由网格 #23361
- 使用加密控制平面和数据平面保护多主机 overlay 网络 #23361
- MacVlan 驱动程序不再是实验性功能 #23524
- 为 `network ls` 添加 `driver` 过滤器 #22319
- 向 `docker ps --filter` 添加 `network` 过滤器 #23300
- 为 `create`、`run` 和 `network connect` 添加 `--link-local-ip` 标志,以指定容器的链路本地地址 #23415
- 添加网络标签过滤器支持 #21495
- 在 Swarm 模式下移除对 Overlay 网络的外部 KV-Store 依赖 #23361
- 添加容器的 short-id 作为默认网络别名 #21901
- `run` 选项 `--dns` 和 `--net=host` 不再互斥 #22408
- 修复重命名带有生成名称的容器时出现的 DNS 问题 #22716
- 允许 `network inspect -f {{.Id}}` 和 `network inspect -f {{.ID}}` 以解决 inspect 输出的不一致性 #23226
插件(实验性)
- 新的 `plugin` 命令,用于管理插件,带有 `install`、`enable`、`disable`、`rm`、`inspect`、`set` 子命令 #23446
远程 API (v1.24) & 客户端
- 将二进制文件拆分为两个:`docker`(客户端)和 `dockerd`(守护进程) #20639
- 为 `docker images --filter` 添加 `before` 和 `since` 过滤器 #22908
- 为 `docker search` 添加 `--limit` 选项 #23107
- 为 `docker search` 添加 `--filter` 选项 #22369
- 向 `docker info` 输出添加安全选项 #21172 #23520
- 将不安全的注册表添加到 `docker info` 输出 #20410
- 使用 TLS 用户信息扩展 Docker 授权 #21556
- devicemapper:通过 `docker info` 公开最小精简池可用空间 #21945
- API 现在在发生错误时返回 JSON 对象,使其更加一致 #22880
- 防止 `docker run -i --restart` 在退出时挂起 #22777
- 修复主机名验证上的 API/CLI 差异 #21641
- 修复 `stats` 中大小格式从 HumanSize 到 BytesSize 的差异 #21773
- authz:当请求被拒绝时返回禁止退出代码 (403) #22448
- Windows:修复与 tty 相关的显示问题 #23878
运行时
- 将用户态代理拆分为单独的二进制文件 (`docker-proxy`) #23312
- 添加 `--live-restore` 守护进程标志,以在守护进程关闭时保持容器运行,并在启动时重新获得控制 #23213
- 能够添加兼容 OCI 的运行时(通过 `--add-runtime` 守护进程标志)并在 `create` 和 `run` 上使用 `--runtime` 选择一个 #22983
- 用于 Linux 4.0+ 的新 `overlay2` graphdriver,支持多个较低目录 #22126
- 新的加载/保存镜像事件 #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
- 在
create和run命令中添加--storage-opt标志,允许在 devicemapper 上设置size#19367 - 添加
--oom-score-adjust守护进程标志,默认值为-500,使守护进程在容器之前被杀死的可能性降低 #24516
- 取消在
run、build、create、update命令上对--cpu-shares短别名-c的弃用 #22621 - 阻止在 eCryptfs 挂载上使用 aufs 和 overlay graphdrivers #23121
- 修复 tmpfs 挂载顺序问题 #22329
- 创建的容器不再列在
docker ps -a -f exited=0中 #21947 - 修复容器停留在“正在移除”状态的问题 #22423
- 修复了在 run/create 命令中未指定命令时返回 HTTP 500 而不是 400 的错误 #22762
- 修复了
--detach-keys的 bug,其中与分离键前缀匹配的输入未被保留 #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命令,通过init、join、join-token、leave、update子命令管理集群 #23361 #24823 - 新增
service命令,通过create、inspect、update、rm、ps子命令管理集群范围的服务 #23361 #25140 - 新增
node命令,通过accept、promote、demote、inspect、update、ps、ls和rm子命令管理节点 #23361 #25140 - (实验性) 新增
stack和deploy命令,用于管理和部署多服务应用程序 #23522 #25140
卷
- 挂载/卸载操作现在接收一个不透明的 ID,允许卷驱动程序区分两个调用者 #21015
弃用
- 环境变量
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)
网络
运行时
- 修复运行
docker build时可能发生的恐慌 (#23032) - 修复
--user参数的解释问题 (#22998) - 修复阻止容器统计信息正确报告的错误 (#22955)
- 修复守护进程重启后阻止容器重启的问题 (#22947)
- 修复在 Ubuntu 16.04 上运行 32 位二进制文件时出现的问题 (#22922)
- 修复图像删除和容器附加时可能发生的死锁 (#22918)
- 修复守护进程重启后,如果容器依赖于容器化的集群存储,则容器无法启动的问题 (#22561)
- 修复在 CentOS 上使用 devicemapper 时
docker ps挂起的问题 (#22168, #23067) - 修复使用 devicemapper 时无法
docker exec到容器中的错误 (#22168, #23067)
1.11.1 (2016-04-26)
分发
- 修复 schema2 manifest media type 为
application/vnd.docker.container.image.v1+json类型 (#21949)
文档
- 添加 1.11.0 引入的更改的缺失 API 文档 (#22048)
构建器
- 将作为参数传递给
docker build的标签作为隐式LABEL命令附加到处理后的Dockerfile的末尾 (#22184)
网络
运行时
- 修复通过配置文件无法重新加载标签配置的错误 (#22299)
- 修复了挂载
/var/run的容器会阻止其他容器被移除的回归问题 (#22256) - 修复无法同时更新
memory-swap和memory值的问题 (#22255) - 修复了 1.11.0 版本中的一个回归问题,即如果未提供
serveraddress,/auth端点将不会初始化 (#22254) - 添加取消计划重启时容器临时文件的清理功能 (#22237)
- 移除未指定重启策略时的可怕错误信息 (#21993)
- 修复通过 json 规范激活插件时可能发生的恐慌 (#22191)
- 修复重启退避逻辑,以便容器运行至少 10 秒后正确重置延迟时间 (#22125)
- 移除容器重启被取消时的错误信息 (#22123)
- 修复
docker在docker exec后未能正确清理的问题 (#22121) - 修复在处理并发
docker stats命令时可能发生的恐慌 (#22120)` - 恢复对不存在的主机目录自动创建的弃用 (#22065)
- 隐藏守护进程关闭时误导性的 rpc 错误 (#22058)
1.11.0 (2016-04-13)
重要在 Docker 1.11 中,Linux Docker 安装现在由 4 个二进制文件组成 (
docker,docker-containerd,docker-containerd-shim和docker-runc)。如果您有依赖docker是单个静态二进制文件的脚本,请务必更新它们。与守护进程的交互保持不变,其他二进制文件的使用应该是透明的。Windows Docker 安装仍然是单个二进制文件docker.exe。
构建器
- 修复 Docker 在处理
WORKDIR命令时未使用正确 uid/gid 的错误 (#21033) - 修复 userns 的复制操作未使用正确 uid/gid 的错误 (#20782, #21162)
客户端
- 已弃用安全选项的
:分隔符。应使用=代替 (#21232)
- 修复了
docker stats --no-stream输出可能全部为 0 的问题 (#20803) - 修复了某些新启动的容器不会出现在正在运行的
docker stats命令中的错误 (#20792)
- linux-cgo 终端不再启用后处理 (#20587)
- Docker 现在禁止使用空用户名登录(空格会被修剪)(#19806)
- 如果保存/导出命令失败,Docker 现在会自行清理 (#17849)
分发
docker login现在使用 docker/distribution 中找到的实现处理令牌 (#20832)docker login不再提示输入电子邮件 (#20565)- 如果无法获得基本身份验证凭据,Docker 现在将回退到注册表 V1 (#20241)
- Docker 现在将尝试在网络错误/超时后从上次中断的地方恢复层下载 (#19840)
日志记录
- 修复 journald 日志驱动程序中的竞争条件 (#21311)
- Docker syslog 驱动程序现在在发出日志时使用 RFC-5424 格式 (#20121)
- Docker GELF 日志驱动程序现在允许通过
gelf-compression-type和gelf-compression-level选项指定压缩算法和级别 (#19831) - Docker 守护进程学会了通过
--raw-logs选项输出无颜色日志 (#19794)
- Docker 在 Windows 平台上现在包含一个名为
etwlogs的 ETW(Windows 事件跟踪)日志驱动程序 (#19689)
- Journald 日志驱动程序学会了如何处理标签 (#19564)
- fluentd 日志驱动程序学会了以下选项:
fluentd-address、fluentd-buffer-limit、fluentd-retry-wait、fluentd-max-retries和fluentd-async-connect(#19439) - Docker 学会了通过新的
gcplogs日志驱动程序将日志发送到 Google Cloud。(#18766)
杂项
- 当使用
docker save保存链接镜像时,后续的docker load将正确恢复它们的父/子关系 (#21385) - 添加了对 OpenBSD 构建 Docker cli 的支持 (#21325)
- 现在可以在网络、卷和镜像创建时应用标签 (#21270)
dockremap现在作为系统用户创建 (#21266)
docker info现在报告 cgroup KernelMemory 的值,如果不支持则发出警告 (#20863)docker info现在还报告正在使用的 cgroup 驱动程序 (#20388)- Docker 补全现在可在 PowerShell 上使用 (#19894)
dockerinit不再使用 (#19490,#19851)
网络
docker network inspect现在将报告所有端点,无论它们是否有活动的容器 (#21160)
- 已添加对 MacVlan 和 IPVlan 网络驱动程序的实验性支持 (#21122)
docker network ls的输出现在按网络名称排序 (#20383)
- 修复 Docker 允许创建名为
default的保留网络名称的错误 (#19431)
docker network inspect返回网络是否为内部网络 (#19357)
- 在创建网络时通过显式选项控制 IPv6 (
docker network create --ipv6)。这在docker network inspect中显示为新的EnableIPv6字段 (#17513)
- 嵌入式 DNS 服务器中支持 AAAA 记录(即 IPv6 服务发现)(#21396)
- 修复不将 docker 域的 IPv6 查询转发到外部服务器的问题 (#21396)
- 嵌入式 DNS 服务器为 DNS 轮询提供多个 A/AAAA 记录 (#21019)
- 修复不优雅的守护进程重启后端点计数不一致的问题 (#21261)
- 将暴露端口和端口映射选项的所有权从 Endpoint 转移到 Sandbox (#21019)
- 修复主机配置为 ipv6.disable=1 时阻止 docker 重新加载的错误 (#21019)
- 添加了内置的 nil IPAM 驱动程序 (#21019)
- 修复 iptables.Exists() 逻辑中的错误 #21019
- 修复使用 overlay 网络时 Veth 接口泄漏的错误 (#21019)
- 修复在关机期间删除网络后阻止 docker 重新加载的错误 (#20214)
- 确保在 firewalld 重新加载时重新创建 iptables 链 (#20419)
- 允许在配置重新加载期间传递全局数据存储 (#20419)
- 对于匿名容器,使用别名进行 IP 到名称映射,即 DNS PTR 记录 (#21019)
- 修复从 /etc/hosts 文件中删除条目时发生的恐慌 (#21019)
- 从容器网络命名空间获取转发的 DNS 查询 (#21019)
- 修复在守护进程重新加载时,为桥接网络保留网络内部模式配置 ([#21780] (https://github.com/docker/docker/pull/21780))
- 修复在守护进程重新加载时保留 IPAM 驱动程序选项配置 ([#21914] (https://github.com/docker/docker/pull/21914))
插件
运行时
- 修复使用无效参数启动的容器在清理后可能发生的恐慌 (#21716)
- 修复事件计时器过早停止的竞争条件 (#21692)
- 修复层存储中的竞争条件,可能导致映射损坏并使进程崩溃 (#21677)
- 取消弃用挂载时主机目录的自动创建。此功能在 Docker 1.9 中被标记为弃用 (#21666),但后来决定其对向后兼容性影响过大,因此决定保留该功能。
- 现在,当启用
userns时,容器可以共享 NET 和 IPC 命名空间 (#21383) docker inspect <image-id>现在将公开 rootfs 层 (#21370)- Docker Windows 获得了最小的
top实现 (#21354)
- 修复 Docker 在配置重新加载时未验证配置文件的错误 (#21089)
- 修复初始启动失败时,附加操作会发生的挂起问题 (#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 现在依赖
containerd和runc来启动容器。(#20662)
- 修复 Docker 配置重新加载仅更改给定配置文件中存在的值的问题 (#20604)
- 当
--net=host时,Docker 现在允许通过--hostname标志设置容器主机名 (#20177) - 如果同时指定了
--privileged和新的--userns=host标志,Docker 现在允许在启用--userns-remap的情况下执行特权容器 (#20111)
- 修复 Docker 在崩溃重启后未能正确清理旧容器的问题 (#19679)
- 如果配置文件中未识别配置键,Docker 现在将报错退出 (#19517)
- 修复守护进程启动时容器加载问题,如果它们依赖于在容器内运行的插件 (#19500)
docker update学会了如何更改容器重启策略 (#19116)docker inspect现在还返回一个新的State字段,其中包含容器状态以人类可读的方式显示(即created、restarting、running、paused、exited或dead之一)(#18966)
- Docker 学会了通过
pids-limit标志限制容器内活动进程(即进程)的数量。注意:这要求内核配置中包含CGROUP_PIDS=y。(#18697)
docker load现在有一个--quiet选项来抑制加载输出 (#20078)- 修复 IPv6 对等点邻居发现中的错误 (#20842)
- 修复容器以无效选项启动时,在清理期间发生的恐慌 (#21802)
- 修复终端关闭时容器无法停止的情况 (#21840)
安全性
- 具有
pcp_pmcd_tselinux 类型的对象获得了对/var/lib/docker(/.*)?的管理访问权限 (#21370) restart_syscall、copy_file_range、mlock2加入了默认 seccomp 配置文件中允许的调用列表 (#21117, #21262)send、recv和x32已添加到默认 seccomp 配置文件中允许的 syscalls 和 arch 列表 (#19432)- Docker Content Trust 现在要求服务器执行快照签名 (#21046)
- 使用 YubiKeys 进行内容信任签名的支持已从实验性阶段移出 (#21591)
卷
- 修复了一个问题,即一个字母的目录名称不能用作卷的源 (#21106)
docker run -v现在接受一个新标志nocopy。这告诉运行时不要将容器路径内容复制到卷中(这是默认行为)(#21223)
1.10.3 (2016-03-10)
运行时
分发
插件系统
安全性
- 修复 linux32 模拟在 docker build 期间失败的问题 #20672 这是由于
personalitysyscall 被默认 seccomp 配置文件阻止。 - 修复 Oracle XE 10g 无法在容器中启动的问题 #20981 这是由于
ipcsyscall 被默认 seccomp 配置文件阻止。 - 修复 Linux From Scratch 上用户命名空间无法工作的问题 #20685
- 修复如果启用了 userns 且
subuid或subgid文件包含注释,则守护进程无法启动的问题 #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偶尔发生的恐慌 #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 事件以包含更多元数据和事件类型 #18888 此更改在 API 上向后兼容,但在 CLI 上不兼容。
- 为
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、start和exec命令添加--detach-keys标志,以覆盖从容器分离的默认按键序列 #15666 - 为
run、create和build添加--shm-size标志,以设置/dev/shm的大小 #16168 - 在
docker info中显示运行中、已停止和已暂停的容器数量 #19249 - 在
docker info中显示OSType和Architecture#17478 - 在
daemon中添加--cgroup-parent标志,为所有容器设置 cgroup 父级 #19062 - 为 docker cp 添加
-L标志以跟踪符号链接 #16613 docker ps的新status=dead过滤器 #17908
- 更改
docker run退出代码以区分运行时和应用程序错误 #14012 - 增强
docker events --since和--until以支持纳秒和时区 #17495 - 为
stats添加--all/-a标志,以包含运行中和已停止的容器 #16742 - 将默认 cgroup-driver 更改为
cgroupfs#17704 - 使用
build -t标记镜像时发出“tag”事件 #17115 - 在启动守护进程时,尽力确保链接容器的启动顺序 #18208
- 添加在
build上添加多个标签的功能 #15780 - 允许对任何 URL 进行
OPTIONS请求,从而修复 CORS 问题 #19569
- 修复
docker build上的--quiet标志,使其真正安静 #17428 - 修复
docker images --filter dangling=false现在显示所有非悬空镜像的问题 #19326 - 修复导致自动重启在重启时关闭的竞争条件 #17629
- 识别 GPFS 文件系统 #19216
- 修复阻止启动容器的模糊错误 #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
分发
- 使用内容可寻址存储来存储镜像和层 #17924 第一次运行 docker 时会执行迁移;根据存在的镜像和容器数量,可能需要大量时间。镜像不再依赖于父链,而是包含层引用列表。
docker load/docker savetarball 现在也包含内容可寻址的镜像配置。更多信息请参阅:https://github.com/docker/docker/wiki/Engine-v1.10.0-content-addressability-migration - 添加对新 manifest 格式(“schema2”)的支持 #18785
- 推送和拉取的大量改进:性能提升,下载失败时重试,客户端断开连接时取消 #18353, #18418, #19109, #18353
- 限制 v1 协议回退 #18590
- 修复 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.heartbeat和discovery.ttl选项以配置发现 TTL 和心跳计时器 #18204 - 为
network inspect添加--format标志 #17481 - 为
network connect添加--link以提供容器本地别名 #19229 - 支持与远程 IPAM 插件进行功能交换 #18775
- 为
network disconnect添加--force以强制容器与网络断开连接 #19317
- 所有引擎支持的内核 (3.10+) 均支持使用内置 overlay 驱动程序进行多主机网络 #18775
--link现在在用户定义网络中的容器的docker run上受支持 #19229- 增强
docker network rm以允许移除多个网络 #17489 - 在
network inspect中包含容器名称 #17615 - 在
network inspect中包含用户定义网络的自动生成子网 #17316 - 为
network ls添加--filter标志以隐藏预定义网络 #17782 - 添加对停止容器的网络连接/断开连接支持 #18906
- 将网络 ID 添加到容器检查中 #19323
- 修复 MTU 问题,即 Docker 不会以两个或更多默认路由启动 #18108
- 修复容器重复 IP 地址问题 #18106
- 修复有时阻止 docker 创建桥接网络的问题 #19338
- 使用
--net=host时不要替换 127.0.0.1 名称服务器 #19573
日志记录
卷
- 添加支持为卷设置挂载传播模式 #17034
- 为卷插件 API 添加
ls和inspect端点 #16534 现有插件需要利用这些新 API 来满足用户期望 为此,请使用新的 MIME 类型application/vnd.docker.plugins.v1.2+json#19549
- 修复数据未复制到命名卷的问题 #19175
- 修复阻止卷驱动程序容器化的问题 #19500
- 修复
docker volumes ls --dangling=false现在显示所有非悬空卷的问题 #19671 - 在容器移除时不要移除命名卷 #19568
- 允许外部卷驱动程序托管匿名卷 #19190
构建器
- 在
.dockerignore中添加对**的支持,以通配多个目录级别 #17090
客户端
- 添加通过
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
- 弃用已达到生命周期结束的 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) - 澄清
docker logs在--log-driver=none时出现的神秘错误信息 (#17767) - 修复偶尔发生的恐慌 (#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) - 修复
--fixed-cidr问题,当网关 IP 落在 IP 范围中,并且 IP 范围不是网络中的第一个块时 (#17853) - 在默认
bridge网络上从MAC地址恢复确定性IPv6生成 (#17890) - 仅允许在 docker run 上创建的端点进行端口映射 (#17858)
- 修复了可能存在陈旧 sbox 的端点删除问题 (#18102)
分发
- 当磁盘上的 v1Compatibility 文件不一致时,在 v2 推送中更正父链 (#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添加RepoTags和RepoDigests字段 (#17275)
- 从 API 中移除已弃用的
/container/ps端点 (#15972) - 发送并记录
/exec/<name>/start的正确 HTTP 代码 (#16250) - 共享 IPC 命名空间的容器之间共享 shm 和 mqueue (#15862)
- 当设置
--oom-kill-disable时,事件流现在显示 OOM 状态 (#16235) - 确保如果使用
ro选项进行绑定挂载,则特殊网络文件(/etc/hosts 等)是只读的 (#14965) - 提高
rmi性能 (#16890) - 不要为默认桥接网络更新 /etc/hosts,链接除外 (#17325)
- 修复重复容器名称的冲突 (#17389)
- 修复
docker inspect中模板执行不正确的问题 (#17284) - 在 docker run 中弃用
--cpu-shares的-c短标志变体 (#16271)
客户端
- 允许
docker import从本地文件导入 (#11907)
构建器
- 添加
STOPSIGNALDockerfile 指令,允许为容器进程设置不同的停止信号 (#15307) - 添加
ARGDockerfile 指令,并为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) - 为设置 TLS 设置添加
--cluster-store-opt(#16644) - 为守护进程添加
--dns-opt(#16031)
- 在 API v1.21 中弃用以下容器
NetworkSettings字段:EndpointID、Gateway、GlobalIPv6Address、GlobalIPv6PrefixLen、IPAddress、IPPrefixLen、IPv6Gateway和MacAddress。这些现在仅限于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_PASSPHRASE和DOCKER_CONTENT_TRUST_TAGGING_PASSPHRASE(#16894)
安全性
- 将 SELinux 配置文件添加到 rpm 包中 (#15832)
- 修复 deb 包中提供的 AppArmor 配置文件中的各种问题 (#14609)
- 添加 AppArmor 策略,防止写入 /proc (#15571)
1.8.3 (2015-10-12)
分发
- 修复层 ID 导致本地图中毒的问题 (CVE-2014-8178)
- 修复 manifest 验证和解析逻辑错误,允许绕过按摘要拉取验证 (CVE-2014-8179)
- 添加
--disable-legacy-registry以防止守护进程使用 v1 注册表
1.8.2 (2015-09-10)
分发
- 修复了处理 GNU LongLink 和 LongName 条目的罕见边缘情况。
- 修复 docker pull 上的 ^C。
- 修复客户端断开连接时 docker pull 的问题。
- 修复日志记录器配置不当导致守护进程崩溃的问题。
- 正确初始化日志配置。
运行时
- 修复在 docker 容器内运行的 docker 守护进程的 cgroups 挂载错误。
- 正确初始化日志配置。
客户端
- 在存在默认格式的情况下,正确处理
docker ps中的-q标志。
网络
- 修复 netlink 的几个特殊情况。
贡献
- 修复 bash 补全的几个问题。
1.8.1 (2015-08-12)
分发
- 修复了推送多个标签会导致无效镜像的错误
1.8.0 (2015-08-11)
分发
- 可信拉取、推送和构建,默认禁用
- 使 tar 层在注册表之间具有确定性
- 不允许删除正在运行的容器的镜像
- 检查要加载的标签名称是否为有效的摘要
- 允许单个字符存储库名称
- 为无效标签名称添加更准确的错误描述
- 使构建缓存忽略 mtime
CLI
- 添加对 DOCKER_CONFIG/--config 的支持,以指定配置文件目录
- 为 docker inspect 命令添加 --type 标志
- 为
docker ps添加--format格式选项 - 将
docker -d替换为新的子命令docker daemon
- Zsh 补全更新和改进
- 为 bash 补全添加一些缺失的事件
- 在
docker -H中支持带有基本路径的守护进程 URL - 验证 status= 过滤器到 docker ps
- 在 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 标志
- 添加内存交换性调优选项
- 在特权模式下移除 cgroup 只读标志
- 使 /proc、/sys 和 /dev 对只读容器只读
- 默认添加 cgroup 绑定挂载
- Overlay:在
docker inspect中导出容器和镜像的元数据 - Devicemapper:外部设备激活
- Devicemapper:在启动时比较基本设备的 uuid
- 从注册表密码套件列表中移除 RC4
- 添加 syslog-facility 选项
- LXC execdriver 与最新 LXC 版本的兼容性
- 将 LXC execriver 标记为已弃用(将在迁移到 runc 时移除)
插件
- 分离插件套接字和规范位置
- 允许 TLS 连接到插件
错误修复
- 将缺失的 'Names' 字段添加到 /containers/json API 输出
- 在拉取时使悬空镜像的
docker rmi安全 - Devicemapper:将默认基本大小更改为 100G
- Go 调度器与 sync.Mutex 和 gcc 的问题
- 修复 Search API 端点因 AuthConfig 为空而导致 panic 的问题
- 正确设置镜像规范名称
- 仅在使用 lxc 驱动程序时检查 dockerinit
- 修复 ulimit 使用 nproc 的问题
- 如果指定了 -i,--interactive,则始终附加 STDIN
- 保存容器状态失败时显示错误消息
- 修复了将 --bridge=none 视为禁用网络的错误假设
- 检查主机配置中的无效端口规范
- 修复 --net=host 模式下的端点离开失败
- 修复如果容器未运行,stats API 中 goroutine 泄漏的问题
- 在读取 apparmor 文件之前检查它是否存在
- 修复 DOCKER_TLS_VERIFY 被忽略的问题
- 在启动时将 umask 设置为默认值
- 更正暂停和解除暂停未运行容器的消息
- 调整容器创建中不允许的 CpuShares
- ZFS:正确应用 selinux 上下文
- 显示空字符串而不是
当 IP 选项为 nil 时 - 当容器未运行时,
docker kill返回错误 - 修复 COPY/ADD 引用/json 形式
- 修复 logs -f 没有输出时的 goroutine 泄漏
- 移除 nat 包中无效主机端口的 panic
- 修复 Fedora 22 中的容器链接问题
- 修复使用分配范围之外的默认网关导致的错误
- 使用 RFC3339Nano 模板格式化 inspect 命令中的时间
- 使注册表客户端接受 2xx 和 3xx http 状态响应为成功
- 修复了由于某些层下载以特定顺序失败而导致守护进程崩溃的竞争问题。
- 修复了 docker ps 格式无效时的错误。
- 移除冗余的 ip forward 检查。
- 修复尝试将镜像推送到仓库镜像的问题。
- 修复在初始化问题时清理网络入口点的错误。
1.7.1 (2015-07-14)
运行时
- 修复使用
docker exec默认用户生成 exec 进程的问题 - 使
--bridge=none不配置网络桥接 - 正确发布网络统计信息
- 修复静态二进制文件与隐式 devicemapper 选择的问题
- 修复间歇性挂起的套接字连接
- 修复 CentOS/RHEL 6.6 上的桥接接口创建问题
- 修复添加到 resolv.conf 的本地 dns 查找问题
- 修复复制命令挂载卷的问题
- 修复使用 --volumes-from 挂载卷的读/写权限问题
远程 API
- 修复 Command 和 Entrypoint 的解组问题
- 设置支持的最小客户端版本限制
- 验证端口规范
- 当附加/重新附加失败时返回正确的错误
分发
- 修复拉取私有镜像的问题
- 修复注册表 V2 和 V1 之间的回退问题
1.7.0 (2015-06-16)
运行时
- 实验性功能:支持进程外卷插件
- 可以使用守护进程的
--userland-proxy=false标志禁用用户空间代理,以支持发夹 NAT exec命令支持-u|--user标志来指定新进程所有者
- 容器的默认网关可以使用
--default-gateway和--default-gateway-v6标志在守护进程范围内指定 - CPU CFS (Completely Fair Scheduler) 配额可以在
docker run中使用--cpu-quota设置 - 容器块 IO 可以在
docker run中使用--blkio-weight控制 - ZFS 支持
docker logs命令支持--since参数- UTS 命名空间可以使用
docker run --uts=host与主机共享
质量
- 网络堆栈作为 libnetwork 工作的一部分完全重写
- 引擎内部重构
- 卷代码完全重写以支持插件工作
- 向守护进程发送 SIGUSR1 将转储所有 goroutine 堆栈而不退出
构建
- 支持环境变量的 ${variable:-value} 和 ${variable:+value} 语法
- 支持资源管理标志
--cgroup-parent、--cpu-period、--cpu-quota、--cpuset-cpus、--cpuset-mems - git 上下文随分支和目录更改
- .dockerignore 文件支持排除规则
分发
- 客户端支持官方注册表的 v2 镜像支持
错误修复
- 现在支持 Firewalld,并在可用时自动使用
- 递归挂载 --device
1.6.2 (2015-05-13)
运行时
- 恢复禁止挂载到 /sys 的更改
1.6.1 (2015-05-07)
安全性
- 修复 /proc 路径的读/写问题 (CVE-2015-3630)
- 禁止 VOLUME /proc 和 VOLUME / (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、syslog或none - 通过 ID 拉取镜像
--ulimit用于设置容器的 ulimit- 守护进程上的
--default-ulimit选项适用于所有创建的容器(并在运行时被--ulimit覆盖)
1.5.0 (2015-02-10)
构建器
- 可以使用
-f标志为给定的docker build指定 Dockerfile
- Dockerfile 和 .dockerignore 文件本身可以作为 .dockerignore 文件的一部分被排除,从而防止对这些文件的修改使 ADD 或 COPY 指令缓存失效
- ADD 和 COPY 指令接受相对路径
- Dockerfile
FROM scratch指令现在被解释为无基础指定符 - 暴露大量端口时提高性能
Hack
- 允许仅客户端的 Windows 集成测试
- 将 docker-py 集成测试针对 Docker 守护进程作为我们的测试套件的一部分
打包
- 支持新版本的注册表 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标志来使容器的根文件系统以只读方式挂载,这可以与卷结合使用,强制容器的进程只写入将持久化的位置- 容器总内存使用量可以使用
--memory-swap标志限制docker run
- 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守护进程标志应用 - 在 Dockerfile 中添加
ENV格式支持:ENV name=value name2=value2... - 新的 Overlayfs 存储驱动程序
docker info现在返回ID和Name字段- 按事件名称、容器或镜像筛选事件
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)
安全性
- 阻止客户端、守护进程和注册表回退到低于 TLS 1.0 的 SSL 协议
- 使用证书验证和没有 HTTP 回退的注册表安全 HTTPS 连接,除非指定了
--insecure-registry
运行时
- 修复卷无法共享的问题
客户端
- 修复
--iptables=false未自动设置--ip-masq=false的问题 - 修复 docker run 输出到非 TTY stdout 的问题
构建器
- 修复环境变量中
$的转义问题 - 修复小写
onbuildDockerfile 指令的问题 - 将环境变量扩展限制为
ENV、ADD、COPY、WORKDIR、EXPOSE、VOLUME和USER
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 能力--device用于在容器中使用设备
客户端
docker search在私有注册表上搜索- 为
docker ps --filter添加exited过滤器
docker rm -f现在杀死而不是停止
--dns标志支持 IPv6 地址
代理
- 独立进程中的代理实例
- UDP 代理的小 bug 修复
1.1.2 (2014-07-23)
运行时
- 修复现有容器的端口分配
- 修复守护进程重启时容器重启的问题
打包
- 修复 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的上下文
- 修复
Dockerfiles中空格和多行的问题
运行时
- 整体性能改进
- 允许
/作为docker run -v的源 - 修复端口分配
- 修复
docker save中的 bug - 将链接信息添加到
docker inspect
客户端
- 改进
docker commit的命令行解析
远程 API
- 改进
start和stop端点的状态码
1.0.1 (2014-06-19)
自 1.0.0 以来的显著功能
- 增强 LXC 驱动程序的安全性
构建器
- 修复传递给孙子进程的
ONBUILD指令
运行时
- 修复事件订阅
- 修复使用主机网络的 /etc/hostname 文件
- 允许
-h和--net=none - 修复
--privileged中热插拔设备的问题
客户端
- 修复事件中的工件
- 修复空标志导致的 panic
- 修复 Mac OS X 上的
docker cp
杂项
- 修复 Mac OS X 上的编译
- 修复多个竞争条件
1.0.0 (2014-06-09)
自 0.12.0 以来的显著功能
- 生产支持
0.12.0 (2014-06-05)
自 0.11.0 以来的显著功能
- 稳定性、性能和可用性方面的 40 多项改进
- 新的
COPYDockerfile 指令,允许将本地文件从上下文复制到容器中,如果文件是 tar 文件,则无需提取 - 在
ADD上从主机继承文件权限 - 新的
pause和unpause命令,允许使用 cgroup freezer 暂停和解除暂停容器 images命令有一个-f/--filter选项来过滤镜像列表- 添加
--force-rm以在构建失败后进行清理 - 远程 API 中的 JSON 键标准化为 CamelCase
- 从 docker run 拉取现在假定未指定
latest标签 - 增强 Linux 能力和设备节点的安全性
0.11.1 (2014-05-07)
注册表
- 修复推送到私有注册表和从私有注册表拉取的问题
0.11.0 (2014-05-07)
自 0.10.0 以来的显著功能
- 挂载和进程标签的 SELinux 支持
- 链接容器可以通过主机名访问
- 使用
--net标志允许高级网络配置,例如主机网络,以便容器可以使用主机的网络接口 - 为远程 API 添加 ping 端点以对 docker 守护进程进行健康检查
- 日志现在可以返回可选的时间戳
- Docker 现在与支持 SHA-512 的注册表一起工作
- 支持多个注册表端点以允许注册表镜像
0.10.0 (2014-04-08)
构建器
- 修复在一行上打印多条消息的问题。修复了构建期间损坏的输出。
- 在 ADD 构建指令中遵循容器根目录内的符号链接。
- 修复 EXPOSE 缓存。
文档
- 将
docker ps的新选项添加到文档中。 - 将
docker restart的选项添加到文档中。 - 更新守护进程文档和 --iptables 和 --ip-forward 的帮助消息。
- 更新 apt-cacher-ng 文档示例。
- 从文档中移除 --mtu 的重复描述。
- 为
docker images添加缺失的 -t 和 -v 到文档中。 - 向 cli 文档添加修复。
- 更新 libcontainer 文档。
- 更新文档中的镜像以移除对 AUFS 和 LXC 的引用。
- 更新文档中的 nodejs_web_app 以使用新的 epel RPM 地址。
- 修复容器安全性的外部链接。
- 更新远程 API 文档。
- 将镜像大小添加到历史文档中。
- 在 redis 示例中明确绑定到所有接口。
- 在 1.10 远程 api 中记录 DisableNetwork 标志。
- 记录
--lxc-conf仅适用于 lxc。 - 添加 chef 使用文档。
- 为
docker load添加具有多个镜像的示例。 - 在文档中解释
docker run -a的作用。
贡献
- 为 sysvinit 添加 DOCKER_LOGFILE 变量,并使用 append 而不是 overwrite 打开日志文件。
- 修复 init 脚本 cgroup 挂载变通方案,使其更类似于 cgroupfs-mount,从而正常工作。
- 从 upstart host-integration 示例中移除 inotifywait hack,因为它不再需要。
- 将 check-config 脚本添加到 contrib。
- 修复 fish shell 补全。
Hack
- 清理 "make test" 的 "go test" 输出,使其更具可读性/可扫描性。
- 从 hack/make/test 中排除更多“肯定未经单元测试的 Go 源代码”目录。
- 在构建时生成 md5 和 sha256 哈希,并通过 hack/release.sh 上传它们。
- 在 Ubuntu PPA 中包含贡献的补全。
- 添加 cli 集成测试。
- 对 hack 脚本进行调整,使其更简单。
远程 API
- 添加 API 的 TLS 身份验证支持。
- 将 git clone 从守护进程移到客户端。
- 修复 docker cp 中的内容类型检测。
- 将 API 分为 2 个 go 包。
运行时
- 支持不通过 Docker 服务器的发夹 NAT。
- devicemapper:在移除不存在的设备时立即成功。
- devicemapper:改进 devicemapper 设备的处理(添加每个设备的锁,增加睡眠时间并在睡眠时解锁)。
- devicemapper:将 waitClose 中的超时增加到 10 秒。
- devicemapper:确保我们干净地关闭薄池。
- devicemapper:将信息而不是哈希传递给 activateDeviceIfNeeded、deactivateDevice、setInitialized、deleteDevice。
- devicemapper:避免 AB-BA 死锁。
- devicemapper:使关闭更好/更快。
- 改进 mflag 中的字母排序。
- 移除手动 http cookie 管理,因为正在使用 cookiejar。
- 在 Darwin 上使用 BSD 原始模式。修复了 nano、tmux 等。
- 添加客户端的 FreeBSD 支持。
- 将 auth 包合并到 registry。
- 为
docker pull上的 -t 添加弃用警告。 - 移除错误时的 goroutine 泄漏。
- 更新 parseLxcInfo 以符合新的 lxc1.0 格式。
- 修复 darwin 上的附加退出。
- 改进弃用消息。
- 为
docker pull重试检索层元数据最多 5 次。 - 仅为 execin 解除挂载命名空间。
- 提交时合并现有配置。
- 禁用守护进程启动超时。
- 修复问题 #4681:禁用网络时添加环回接口。
- 添加问题 #4681 的失败测试用例。
- 向子进程发送 SIGTERM,而不是 SIGKILL。
- 即使不在调试模式下,也在
docker info中显示驱动程序和内核版本。 - 始终为 libcontainer 符号链接 /dev/ptmx。这修复了控制台相关问题。
- 修复因 /etc/apparmor.d 不存在而导致的问题。
- 创建容器失败时不要留下空的 cidFile。
- 如果 cgroup 尚未挂载,则自动挂载它们。
- 使用 mock 进行搜索测试。
- 所有地方都更新为双短划线。
- 将 .dockerenv 解析移至 lxc 驱动程序。
- 将容器中的所有绑定挂载移到命名空间内。
- 不要为容器使用单独的绑定挂载。
- 始终为 libcontainer 符号链接 /dev/ptmx。
- 不要通过 pid 杀死其他驱动程序。
- 向 libcontainer 添加初始日志记录。
- 在
docker ps中按端口排序。
- 将网络驱动程序移至运行时顶级包。
- 为
docker rmi添加 --no-prune。 - 在
docker ps中添加退出以来的时间。
- graphdriver:添加构建标签。
- 防止分配先前已分配的端口并改进端口分配。
- 为
docker ps添加 --since/--before 支持。
- 清理容器停止。
- 添加对可配置 dns 搜索域的支持。
- 添加对相对 WORKDIR 指令的支持。
- 为 docker save 添加 --output 标志。
- 移除配置合并中 DNS 条目的重复。
- 向 cgroups 和本机驱动程序选项添加 cpuset.cpus。
- 移除 docker-ci。
- 推广 btrfs。btrfs 不再被视为实验性。
- 为
docker load添加 --input 标志。 - 当现有桥接与 IP 地址不匹配时返回错误。
- 在解析行延续之前剥离注释,以避免将指令解释为注释。
- 修复 TestOnlyLoopbackExistsWhenUsingDisableNetworkOption 以忽略“DOWN”接口。
- 添加 cgroup 的 systemd 实现,并使容器显示为 systemd 单元。
- 修复未指定仓库时的 commit 和 import。
- 将 /var/lib/docker 重新挂载为 --private 以修复扩展问题。
- 在 ping 远程注册表时使用环境的代理。
- 将无害错误的错误级别降低。
- 允许 --volumes-from 为单个文件。
- 修复 StdCopy 中扩展缓冲区的问题。
- 设置错误,无论附加或 stdin。这修复了 #3364。
- 添加 --env-file 支持以从文件中加载环境变量。
- 符号链接 /etc/mtab 和 /proc/mounts。
- 允许推送单个标签。
- 在关闭时干净地关闭容器,并永远等待容器关闭。这使得守护进程关闭时容器关闭通过 SIGTERM 正常工作。
- 启动已在运行的容器时不要抛出错误。
- 修复动态端口分配限制。
- 从 libcontainer 中移除 setupDev。
- 将 API 版本添加到
docker version。 - 接收信号时返回正确的退出代码,并使 SIGQUIT 在不清理的情况下退出。
- 修复 --volumes-from 挂载失败。
- 允许非特权容器创建设备节点。
- 跳过登录测试,因为外部依赖于托管服务。
- 弃用
docker images --tree和docker images --viz。 - 弃用
docker insert。 - 包含 apparmor 的基本抽象。这修复了 Ubuntu 14.04 上的一些 apparmor 相关问题。
- 在推送时遇到 HTTP 401 错误时添加特定的错误消息。
- 修复绝对卷检查。
- 从配置中移除 volumes-from。
- 将 DNS 选项移至 hostconfig。
- 更新 libcontainer 的 apparmor 配置文件。
- 为
docker commit -run添加弃用通知。
0.9.1 (2014-03-24)
构建器
- 修复在一行上打印多条消息的问题。修复了构建期间损坏的输出。
文档
- 修复容器安全性的外部链接。
贡献
- 修复 init 脚本 cgroup 挂载变通方案,使其更类似于 cgroupfs-mount,从而正常工作。
- 为 sysvinit 添加 DOCKER_LOGFILE 变量,并使用 append 而不是 overwrite 打开日志文件。
Hack
- 在构建时生成 md5 和 sha256 哈希,并通过 hack/release.sh 上传它们。
远程 API
- 修复
docker cp中的内容类型检测。
运行时
- 在 Darwin 上使用 BSD 原始模式。修复了 nano、tmux 等。
- 仅为 execin 解除挂载命名空间。
- 为
docker pull重试检索层元数据最多 5 次。 - 提交时合并现有配置。
- 修复监视器中的 panic。
- 禁用守护进程启动超时。
- 修复问题 #4681:禁用网络时添加环回接口。
- 添加问题 #4681 的失败测试用例。
- 向子进程发送 SIGTERM,而不是 SIGKILL。
- 即使不在调试模式下,也在
docker info中显示驱动程序和内核版本。 - 始终为 libcontainer 符号链接 /dev/ptmx。这修复了控制台相关问题。
- 修复因 /etc/apparmor.d 不存在而导致的问题。
- 创建容器失败时不要留下空的 cidFile。
- 改进弃用消息。
- 修复 darwin 上的附加退出。
- devicemapper:改进 devicemapper 设备的处理(添加每个设备的锁,增加睡眠时间,睡眠时解锁)。
- devicemapper:在移除不存在的设备时立即成功。
- devicemapper:将 waitClose 中的超时增加到 10 秒。
- 移除错误时的 goroutine 泄漏。
- 更新 parseLxcInfo 以符合新的 lxc1.0 格式。
0.9.0 (2014-03-10)
构建器
- 避免构建期间额外的挂载/卸载。这修复了构建期间挂载/卸载相关的错误。
- 为 docker build --rm 添加错误。这添加了缺失的错误处理。
- 禁止链式 onbuild、
onbuild from和onbuild maintainer触发器。 - 使
--rm成为docker build的默认值。
文档
- 通过 https 下载 Mac 的 docker 客户端二进制文件。
- 更新安装说明和描述的标题。
- 添加升级 boot2docker 的说明。
- 在 OS X 安装文档中添加端口转发示例。
- 尝试解耦仓库和注册表。
- 更新文档以解释更多关于
docker ps的内容。 - 更新 sshd 示例以使用 Dockerfile。
- 重做一些示例,包括 Python 示例。
- 更新文档以包含容器生命周期的说明。
- 更新文档文档以讨论 docs 分支。
- 不要跳过示例的证书检查并使用 HTTPS。
- 恢复因内核页面移除而丢失的内存和交换记帐部分。
- 解释 DNS 警告以及如何在运行和使用本地名称服务器的系统上修复它们。
贡献
- 为 mkimage-debootstrap 添加 Tanglu 支持。
- 为 mkimage-debootstrap 添加 SteamOS 支持。
Hack
- 运行集成测试时获取包覆盖率。
- 移除 Vagrantfile。这正在被 boot2docker 替换。
- 修复 aufs 不可用系统上的测试。
- 更新打包说明并移除对 lxc 的依赖。
远程 API
- 将特定于 API 的代码移至 api 包。
- 修复 API 的标头内容类型。使所有端点使用正确的内容类型。
- 修复注册表身份验证并从 CmdPush 和 CmdPull 中移除 ping 调用。
- 向 JSON 流函数添加换行符。
运行时
- 不要从 CLI ping 注册表。所有对注册表的请求都通过守护进程流式传输。
- 在 lxc 驱动程序中检查 nil 信息返回。这修复了旧版本 lxc 的 panics。
- Devicemapper:清理和卸载修复。修复了导致卸载间歇性失败的两个问题。
- Devicemapper:移除设备时移除目录。移除设备时不会留下目录。
- Devicemapper:启用 skip_block_zeroing。通过不将块清零来提高性能。
- Devicemapper:修复关闭警告。修复了有关池设备移除的关闭警告。
- 确保 docker cp 流正确关闭。修复了
docker cp无法复制文件的问题。 - 停止使
tcp://默认设置为127.0.0.1:4243并移除 tcp 的默认端口。 - 修复
docker commit中的--run。这使得docker commit --run再次工作。 - 修复自定义桥接相关选项。这使得自定义桥接再次工作。
- 将 PTY 挂载绑定为容器控制台。这允许 tmux/screen 运行。
- 添加纯 Go libcontainer 库,使得仅使用 Linux 内核功能运行容器成为可能。
- 添加使用 libcontainer 的本机 exec 驱动程序,并使其成为默认 exec 驱动程序。
- 添加对归档中扩展属性的处理支持。
- 将容器 MTU 设置为与主机 MTU 相同。
- 为层添加简单的 sha256 校验和以加快
docker push。
- 改进内核版本解析。
- 允许标志分组(
docker run -it)。
- 移除 chroot exec 驱动程序。
- 修复除以零以修复 panic。
- 重写
docker rmi。 - 修复 lxc 1.0.0 的 docker info。
- 修复 fedora tty 与 apparmor 的问题。
- 不要总是附加环境变量,用配置中的变量替换默认值。
- 修复 goroutine 泄漏。
- 切换到 Go 1.2.1。
- 修复唯一约束错误检查。
- 处理 Docker 数据目录和 TMPDIR 的符号链接。
- 添加标志弃用警告(-flag 已弃用,支持 --flag)
- 为本机执行驱动程序添加 apparmor 配置文件。
- 将系统特定代码从 archive 移至 pkg/system。
- 修复
docker run -i -t的重复信号问题 (issue #3336)。 - 为 lxc 返回正确的进程 pid。
- 添加 -G 选项以指定 unix 套接字所属的组。
- 为
docker rm添加-f标志以强制删除运行中的容器。 - 杀死幽灵容器并在 docker 守护进程重启时重启所有幽灵容器。
- 添加
DOCKER_RAMDISK环境变量以使 Docker 在根目录位于 ramdisk 上时工作。
0.8.1 (2014-02-18)
构建器
- 避免构建期间额外的挂载/卸载。这移除了不必要的挂载/卸载操作,该操作导致 devicemapper 出现问题
- 修复 ADD tar 文件回归。这阻止 Docker 解压缩通过 ADD 从本地文件系统添加的 tar 包
- 为
docker build --rm添加错误。这添加了一个缺失的错误检查,以确保检测并报告删除容器失败的情况
文档
- 更新问题提交说明
- 警告不要对 Docker 的存储文件夹使用符号链接
- 将 Firefox 示例替换为 IceWeasel 示例
- 使用 Dockerfile 重写 PostgreSQL 示例并添加更多细节
- 改进 OS X 文档
远程 API
- 修复低于 1.7 版本的损坏镜像 API
- 为所有返回 JSON 的 API 端点使用正确的编码
- 将远程 api 客户端移至 api/
- 使用通用套接字等待将 API 调用排队
运行时
- 修复桥接和自定义桥接的自定义设置使用
- 重构 devicemapper 代码以避免许多挂载/卸载竞争条件和失败
- 移除可能导致 Docker 在某些情况下崩溃的两个 panic
- 不要从 CLI 客户端 ping 注册表
- 为 devicemapper 启用 skip_block_zeroing。这阻止 devicemapper 总是清零整个块
- 修复
docker commit中的 --run。这使得 docker commit 将 --run 存储在镜像配置中 - 移除 devicemapper 设备时移除目录。这清理了剩余的挂载目录
- 为非特权容器丢弃 NET_ADMIN 能力。非特权容器无法更改其网络配置
- 确保
docker cp流正确关闭 - 避免容器注册期间额外的挂载/卸载。这移除了不必要的挂载/卸载操作,该操作导致 devicemapper 出现问题
- 停止允许 tcp:// 作为默认 tcp bin 地址(绑定到 127.0.0.1:4243)并移除默认端口
- 将 PTY 挂载绑定为容器控制台。这允许 tmux 和 screen 在容器中运行
- 清理归档关闭。这修复并改进了归档处理
- 修复临时目录是符号链接的系统上的引擎测试
- 添加保存和加载的测试方法
- 重启容器时避免临时卸载容器。这修复了 devicemapper 在重启期间的竞争
- 从 GitHub 仓库构建时支持子模块
- 引用卷路径以允许空格
- 修复远程 tar ADD 行为。这修复了导致 Docker 提取 tar 包的回归
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 文件系统进行写时复制
Docker 在 Mac OS X 上得到官方支持
Docker 守护进程支持 systemd 套接字激活
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 头 "application/json"
其他
- 将 DCO 更新到 1.1 版本
- 更新 Makefile 以使用 "docker:GIT_BRANCH" 作为生成的镜像名称
- 更新 Travis 以检查新的 1.1 DCO 版本
0.7.4 (2014-01-07)
构建器
- 修复带有 . 前缀路径的 ADD 缓存问题
- 通过恢复稀疏文件 tar 选项修复 devicemapper 上的 docker build
- 修复文件缓存问题并防止错误的缓存命中
- 在解组 CMD 和 ENTRYPOINT 时使用相同的错误处理
文档
- 简化并精简 Amazon Quickstart
- 安装说明使用无前缀的 Fedora 镜像
- 更新 Docker on GCE 的 mtu 标志说明
- 将 Ubuntu Saucy 添加到安装中
- 修复 master 上而不是 latest 上的错误版本警告
运行时
- 仅在需要计算镜像大小时获取镜像的 rootfs
- 正确处理 UDP 端口的取消映射
- 使 CopyFileWithTar 使用管道而不是缓冲区来节省 docker build 的内存
- 修复登录消息以显示 pull 而不是 push
- 通过移除“SOURCE”提示并提及 STDIN 修复“docker load”帮助
- 使空白 -H 选项默认与未发送 -H 时的行为相同
- 将 cgroup 工具提取到自己的子模块中
其他
- 添加 Travis CI 配置以验证 DCO 和 gofmt 要求
- 添加开发者贡献者证书文本
- 升级 VBox Guest Additions
- ping 注册表服务器时检查独立标头
0.7.3 (2014-01-02)
构建器
- 更新 ADD 以使用镜像缓存,基于添加内容的哈希
- 添加空 Dockerfile 的错误消息
文档
- 修复指向 www.docker.io 上“Introduction”的过时链接
- 更新文档以在屏幕变宽时也变宽
- 添加关于使用原始二进制文件时需要安装 LXC 的信息
- 更新 Fedora 文档以解决 docker 和 docker.io 冲突
- 添加关于在几个 GCE 区域中使用新
-mtu标志的说明
- 添加 FrugalWare 安装说明
- 添加一个更完整的
docker run示例
- 修复用于创建和启动特权容器的 API 文档
- 在 "/containers/create" 上添加缺失的 "name" 参数文档
- 提及
lxc-checkconfig作为检查一些必要内核配置的方法
- 更新 1.8 API 文档,其中包含 1.7 文档中添加的一些内容
Hack
- 将缺失的 libdevmapper 依赖项添加到打包程序文档
- 将最低 Go 要求强制设置为 Go 1.2+
- Vagrantfile 的许多小改进
- 添加自定义 dockerinit 搜索位置的能力(仅由需要非标准位置的平台打包程序非常谨慎地使用)
- 添加覆盖配置文件生成报告
- 为我们的 Go 构建标志添加
-a,无需手动重新编译 stdlib
- 更新 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 文件,避免在处理白条时文件流失
- 修复 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 内部丢弃能力
- 修复镜像中存在符号链接时主机上的卷问题
- 如果任何容器依赖于某个镜像,即使容器未运行,也阻止删除该镜像
- 更新 docker push 以使用新的进度显示
- 使用 os.Lstat 允许在检查卷时挂载 unix 套接字
- 调整不活跃用户登录的处理
- 为旧内核添加 devicemapper 中缺失的定义
- 允许不带容器验证的 untag 操作
- 将 auth config 添加到 docker build
文档
- 添加更多关于 Docker 日志记录的信息
- 添加 RHEL 文档
- 添加一个直接示例,用于更改在容器中运行的 CMD
- 更新 Arch 安装文档
- 添加可信构建部分
- 添加网络文档页面
其他
- 添加新的覆盖包以提供代码覆盖率报告
- 将集成测试分离到包中
- 任命 Tianon 为 hack 维护者
- 更新 mkimage-debootstrap,并进行更多调整以保持镜像小巧
- 使用 https 获取安装脚本
- Go 1.2 发布后移除 vendored dotcloud/tar
0.7.1 (2013-12-05)
文档
- 添加 @SvenDowideit 作为文档维护者
- 添加链接示例
- 添加关于大使模式的文档
- 添加 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
- 使用现在包含修复的 stdlib tar
- 改进 make.sh 测试脚本
- 处理守护进程上的 SIGQUIT
- 测试期间禁用 verbose
- 官方构建升级到 go1.2
- 改进单元测试
- 测试套件现在即使有一个失败也会运行所有测试
- 重构 Go 中的 C(Devmapper)
- 修复 OS X 编译
0.7.0 (2013-11-25)
自 0.6.0 以来的显著功能
- 存储驱动程序:从 aufs、device-mapper 或 vfs 中选择。
- 标准 Linux 支持:docker 现在在未修改的 Linux 内核和所有主要发行版上运行。
- 链接:通过将容器相互连接来组合复杂的软件堆栈。
- 容器命名:通过给容器起有意义的名称来组织您的容器。
- 高级端口重定向:为每个接口指定端口重定向,或保持敏感端口私有。
- 离线传输:将镜像推送到文件系统并从文件系统拉取,而不会丢失信息。
- 质量:大量的 bug 修复和小的可用性改进。测试覆盖率显著提高。
0.6.7 (2013-11-21)
运行时
- 提高稳定性,修复了一些竞争条件
- 删除容器卷时跳过已挂载的卷。
- 修复层大小计算:正确处理硬链接
- 对 docker cp CONTAINER:PATH 使用工作路径
- 修复 tmp 目录从不清理的问题
- 加速 docker ps
- 名称冲突时提供更具信息性的错误消息
- 修复 nameserver 正则表达式
- 始终返回长 ID
- 修复容器重启竞争条件
- 在 docker stop;docker start 后保持已发布端口
- 修复 Fedora 上的容器网络
- 正确地向 iptables 表达“任何地址”
- 重新连接到幽灵容器时修复网络设置
- 如果镜像被运行中的容器使用,则阻止删除
- 在图形读取操作周围加锁
远程 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 中的回归
- 在图形写入操作周围加锁
- 检查端口是否有效
- 修复幽灵容器网络导致的重启运行时错误
- 添加更多颜色和动物以增加生成的名称池
- 修复 docker inspect 中的问题
- 逃逸 apparmor 限制
- 使用文件设置环境变量。
- 阻止 docker insert 擦除某些内容
- 在 CreateBridgeIface 中防止 DNS 服务器冲突
- 在服务器端验证绑定挂载
- 在 docker build 中使用父镜像配置
- 修复 /etc/hosts 中的回归
客户端
- 添加 -P 标志以发布所有暴露的端口
- 为 docker history 添加 -notrunc 和 -q 标志
- 修复 docker commit、tag 和 import 的用法
- 在 docker search 中添加星标、可信构建和库标志
- 修复带有 tty 的 docker logs
远程 API
- 使 /events API 立即发送标头
- 不要分割 docker top 的最后一列
- 为历史记录添加大小
其他
- Contrib: 桌面集成。Firefox 用例。
- Dockerfile: bump to go1.2rc3
0.6.5 (2013-10-29)
运行时
- 容器现在可以命名
- 容器现在可以相互链接以进行服务发现
- 'run -a'、'start -a' 和 'attach' 可以将信号转发到容器,以便更好地与进程监督器集成
- 重启后自动启动崩溃的容器
- 将 IP、端口和协议作为单独的环境变量公开用于容器链接
- 允许将端口发布到特定 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 获取 sudo/su 用于 modprobe
- 更新所有 mkimage 脚本以使用 --numeric-owner 作为 tar 参数
- 更新 hack/release.sh 过程以自动调用 hack/make.sh 并在构建和测试问题上中止
其他
- 文档:修复示例中 nc 的标志
- 测试:移除警告并防止挂载问题
- 测试:更改 tty resize 的逻辑以避免测试中的警告
- 构建器:修复 verbose 输出的 docker build 中的竞争条件
- 注册表:修复 PushImageJSONIndex 方法的内容类型
- Contrib:改进辅助工具以生成 debian 和 Arch linux 服务器镜像
0.6.4 (2013-10-16)
运行时
- Start() 失败时添加容器清理
- 为 utils/stdcopy.go 添加更好的注释
- 为错误日志记录添加 utils.Errorf
- 为 docker run 添加 -rm 以在退出时移除容器
- 移除实际上不是错误的错误消息
- 修复带有卷的
docker rm - 修复 HTTP 正文可能未关闭的一些错误情况
- 修复错误的 dockercfg 文件导致的 panic
- 修复 -i 的 attach 行为
- 记录状态中的终止时间。
- 使用空字符串,以便 TempDir 自动使用操作系统的 temp 目录
- 确保关闭网络分配器
- 默认自动重启容器
- 将 vendor kr/pty 升级到提交 3b1f6487b
(syscall.O_NOCTTY) - lxc:允许容器中的 set_file_cap 能力
- 将 run -rm 仅移至 cli
- 分割 stdout stderr
- 始终为容器创建新会话
测试
- 添加聚合的 docker-ci 电子邮件报告
- 添加清理以移除剩余容器
- 为 docker-ci 添加 nightly release
- 添加更多 auth.ResolveAuthConfig 周围的测试
- 移除测试中的一些错误
- 当 TCP 和 UDP 代理终止时捕获 errClosing 错误
- 仅在 TESTFLAGS='-run TestName' make.sh 时运行某些测试
- 阻止 docker-ci 测试关闭 PR
- 将测试中的 panic 替换为 log.Fatal
- 增加 TestRunDetach 超时
文档
- 添加 Docker 基础设施文档的初步草稿
- 将 devenvironment 链接添加到 CONTRIBUTING.md
- 在 Ubuntu 文档中添加
apt-get install curl - 添加出口限制的解释
- 添加 .dockercfg 文档
- 移除 Gentoo 安装说明中关于 #1422 变通方案的注释
- 修复 -v 选项的帮助文本
- 修复 Ping 端点文档
- 修复 ADD 命令文档中的参数名称
- 修复变更日志中具有讽刺意味的错别字
- 修复 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
贡献
- 添加来自 @honza 的 Dockerfile 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 代理转发
- 对 contrib/mkimage-debian.sh 进行了一些小调整/修复
其他
- 构建器:如果 mergeConfig 返回错误,则中止构建并修复重复的错误消息
- 打包:移除已弃用的打包目录
- 注册表:登录时使用正确的身份验证配置。
- 注册表:修复错误消息,使其与正则表达式相同
0.6.3 (2013-09-23)
打包
- 在安装 ubuntu 包时添加“docker”组
- 更新 tar 供应商依赖项
- 通过 HTTPS 下载 apt 密钥
运行时
- 仅复制和更改非绑定挂载卷的权限
- 允许多个 volumes-from
- 修复 STDIN 的 HTTP 导入
文档
- 更新关于构建后提取 docker 二进制文件的部分
- 更新开发环境文档以适应新的构建过程
- 从文档中移除“base”镜像
其他
- 客户端:修复分离问题
- 注册表:更新正则表达式以匹配索引
0.6.2 (2013-09-17)
运行时
- 添加域名支持
- 使用 path.Match 实现镜像过滤
- 移除不必要的警告
- 移除 os/user 依赖项
- 仅当配置存在时才挂载 hostname 文件
- 在
docker login命令中处理信号
- UID 和 GID 现在也应用于卷
docker start在错误时设置错误代码docker run设置与启动进程相同的错误代码
构建器
- 添加 -rm 选项以移除中间容器
- 允许 RUN 指令多行
注册表
- 实现私有注册表登录
- 修复推送问题
其他
- Hack:供应商所有依赖项
- 远程 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中添加最后稳定版本
- 修复并行拉取中的竞争条件
- 修复 Graph ByParent() 以按父镜像生成子镜像列表。
- 修复错别字:fmt.Sprint -> fmt.Sprintf
- 修复 docker build 中的小 \n 错误
- 修复“在 /.dockerinit 注入 dockerinit”
- 修复 #910。将用户名打印到 docker info 输出
- 为 dockerbuilder 使用 Go 1.1.2
- 对通道使用范围 for 循环
- 在 server.ImageDelete 中使用 utils.ParseRepositoryTag 而不是 strings.Split(name, ":")
- 改进 CMD、ENTRYPOINT 和 attach 文档。
- 改进带有套接字错误的连接消息
- 仅在需要时加载 authConfig 并修复无用的 WARNING
- 当镜像缺失时显示使用的标签
- 在创建卷之前应用 volumes-from
- 使 docker run 处理 SIGINT/SIGTERM
- 阻止 .dockercfg 不可读时的崩溃
- 安装脚本应通过 https 获取,而不是 http。
- API,问题 1471:使用组进行套接字权限
- 正确检测 IPv4 转发
- 将 /dev/shm 挂载为 tmpfs
- 从 http 切换到 https 以获取 get.docker.io
- 让用户空间代理处理容器绑定流量
- 更新 Docker CLI 以指定“Host”标头的值。
- 更改网络范围以避免与 EC2 DNS 冲突
- 缩短 ping 注册表时的连接和读取超时
- 并行拉取
- 处理显示无掩码 IP 地址的 ip 路由
- 允许不带 CMD 的 ENTRYPOINT
- 解析 FQN repos 名称时始终将 localhost 视为域名
- 重构校验和
文档
- 添加 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”镜像已弃用,不应再在文档中引用。
- 移动关于官方支持内核的注释
- 解决了 Safari 中徽标被挤压的问题
构建器
- 将 USER 指令添加到 Dockerfile
- 为 Buildfile 添加 workdir 支持
- 为 docker build 添加无缓存
- 修复 docker build 和 docker events 输出
- 只将已知指令计为构建步骤
- 确保构建中的 ENV 指令每次都执行提交
- 禁止 docker build ADD 中的某些路径
- 构建用法中的仓库名称(和可选的标签)
- 确保 ADD 将在 0755 中创建所有内容
远程 API
- 按最新创建日期排序镜像。
- 重构注册表模块中的不透明请求
- 在 /events 中添加镜像名称
- 使用 mime 包解析 Content-Type
- 650 http 工具和用户代理字段
Hack
- Bash 补全:将命令限制为相关状态的容器
- 将 docker 依赖项覆盖测试添加到 docker-ci
打包
- Docker-brew 0.5.2 支持和内存占用减少
- 将新的 docker 依赖项添加到 docker-ci
- 恢复 "docker.upstart: 避免生成
sh进程"
- Docker-brew 和 Docker 标准库
- 使用 docker 发布 docker
- 修复 get.docker.io 生成的 upstart 脚本
- 启用文档生成手册页。
- 恢复 Vagrant 中将守护进程绑定到 0.0.0.0。
注册
- 改进身份验证推送
- 注册表单元测试 + mock 注册表
测试
- 改进 TestKillDifferentUser 以防止构建机器人超时
- 修复 TestBindMounts 中的错别字(调用 runContainer 时没有镜像)
- 改进 TestGetContainersTop,使其不依赖于睡眠
- 放宽 lo 接口测试,允许 iface 索引 != 1
- 将注册表功能测试添加到 docker-ci
- 在 server 和 utils 中添加一些测试
其他
- Contrib:bash 补全脚本
- 客户端:添加 docker cp 命令和 copy api 端点以将容器文件/文件夹复制到主机
- 仅当附加到 stdin 时不从 stdout 读取
0.5.3 (2013-08-13)
运行时
- 使用 docker 组进行套接字权限
- 在 upstart 脚本中生成 shell
- 处理显示无掩码 IP 地址的 ip 路由
- 将 hostname 添加到环境
构建器
- 确保构建中的 ENV 指令每次都执行提交
0.5.2 (2013-08-08)
- 构建器:禁止 docker build ADD 中的某些路径
- 运行时:更改网络范围以避免与 EC2 DNS 冲突
- API:将守护进程默认设置为侦听 unix 套接字
0.5.1 (2013-07-30)
运行时
- 将
ps参数添加到docker top - 添加容器 ID 文件支持(类似 pidfile)
- 在默认环境中添加 container=lxc
- 支持无网络容器,使用
docker run -n和docker -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
- 使用助手简化单元测试
- 改进 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 打包约定启发的新镜像命名方案允许任意组合注册表
- 修复将镜像上传到私有注册表时的问题
构建器
- ENTRYPOINT 指令设置容器的默认二进制入口点
- VOLUME 指令将容器的一部分标记为持久数据
- 'docker build' 默认显示构建的完整输出
0.4.8 (2013-07-01)
- 构建器:新的构建操作 ENTRYPOINT 为容器添加可执行入口点。- 运行时:修复导致 'docker run -d' 不再打印容器 ID 的错误。
- 测试:修复测试套件中的问题
0.4.7 (2013-06-28)
远程 API
- 下载和上传大文件时进度条更新更快
- 修复可选 unix 套接字传输中的 bug
运行时
- 改进内核版本检测
- 主机目录可以使用 'docker run -b' 挂载为卷
- 修复仅附加到 stdin 时的问题
- 使用 'tar --numeric-owner' 以避免跨多个主机 uid 不匹配
Hack
- 改进测试套件和开发环境
- 移除对 'os/user' 的单元测试依赖
其他
- 注册表:更轻松地推/拉到自定义注册表
- 文档:添加术语部分
0.4.6 (2013-06-22)
- 运行时:修复导致创建空镜像(和卷)崩溃的错误。
0.4.5 (2013-06-21)
- 构建器:'docker build git://URL' 获取并构建远程 git 仓库
- 运行时:'docker ps -s' 可选地打印容器大小
- 测试:改进和简化
- 运行时:修复 0.4.3 中引入的导致日志命令失败的回归。
- 构建器:修复使用 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 套接字和多个 -H 支持
- 防止删除运行中的容器
- 使用 go1.1 cookiejar
- 修复从运行中的 TTY 容器分离的问题
- 禁止单个镜像/仓库的并行推/拉。修复
#311 - 修复 Run 命令在附加时的竞争条件。
客户端
- 拉取时 ProgressBar 大小可读
- 修复 docker version 的 git 提交输出
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
注册表
- 添加对 repo 名称的正则表达式检查
- 将身份验证移至客户端
- 移除 pull 上的登录检查
其他
- Vagrantfile:将 rest api 端口添加到 vagrantfile 的 port_forward
- 升级到 Go 1.1
- Builder:当 Dockerfile 的最后一行没有以 \n 结尾时,不要忽略它
0.4.0 (2013-06-03)
构建器
- 引入 Builder
- '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 builder 中实现自动运行功能
- 向 docker builder 添加缓存
- 添加对 docker builder 的支持,以本机 API 作为顶级命令
- 在 docker builder 中实现 ENV
- 在创建之前检查命令是否存在并为此情况添加单元测试
- 使用任何空白字符而不是制表符
运行时
- 在调试信息中添加 go 版本
- 内核版本 - 如果 flavor 为空,则不显示破折号
注册表
- 添加 docker search 顶级命令以搜索存储库
- 修复带有特定标签的官方镜像的拉取
- 修复使用不同用户登录并尝试推送时出现的问题
- 改进校验和 - 异步计算
镜像
- 将镜像图输出到 dot (graphviz)
- 修复 ByParent 函数
文档
- 新的介绍和高级概述
- 添加 docker builder 的文档
- Docker 文档的 CSS 修复,以使 REST API 文档看起来更好。
- 修复 CouchDB 示例页面标题错误
- 修复 README 格式
- 更新 www.docker.io 网站。
其他
- 网站:新的高级概述
- Makefile:将 "go get" 替换为 "go get -d",尤其是在 go1.1rc 上编译时
- 打包:打包 ubuntu;问题 #510:使用 golang-stable PPA 包构建 docker
0.3.0 (2013-05-06)
运行时
- 修复命令存在性检查
- strings.Split 在没有匹配项时可能返回空字符串
- 修复 cgroup 内存不存在时索引超出范围的崩溃
文档
- 各种改进
- 新示例:在 2 个 CouchDB 数据库之间共享数据
其他
- Vagrant:在 /etc/apt 中只使用一行 deb
- 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' 将层与默认运行时选项(命令、端口等)捆绑在一起。
- 改进 Vagrant 上的安装过程
- 新的 Dockerfile 操作:"maintainer"
- 新的 Dockerfile 操作:"expose"
- 新的 Dockerfile 操作:"cmd"
- 用于构建 Debian 基础层的 Contrib 脚本
- 'docker -d -r':在守护进程启动时重启崩溃的容器
- Runtime:改进测试覆盖率
0.2.0 (2013-04-23)
- Runtime:幽灵容器可以被杀死并等待
- 文档:更新安装说明
- 打包:修复 Vagrantfile
- 开发:自动化发布二进制文件和 ubuntu 包
- 添加更新日志
- 各种错误修复
0.1.8 (2013-04-22)
- 动态检测 cgroup 功能
- 在内核 <3.8 上发出稳定性警告
- 'docker push' 将数据缓冲到磁盘而不是内存
- 修复 'docker diff' 中删除的文件
- 修复 'docker stop' 中幽灵容器
- 修复 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 解析器
- 检测幽灵容器
- 改进对缺少系统功能的诊断
- 允许在编译时禁用内存限制
- 添加 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 优化
- push/pull 上的进度条
- 默认使用 XZ 压缩
- 使 IP 分配器惰性
0.1.1 (2013-03-31)
- 为方便起见显示简短 ID
- 稳定进程管理
- 层可以包含提交消息
- 简化 'docker attach'
- 修复重新附加的支持
- 各种错误修复和稳定性改进
- 运行时自动下载
- 推送时自动登录
- 加强文档
0.1.0 (2013-03-23)
首次公开发布
- 实现注册表以推送/拉取镜像
- TCP 端口分配
- 修复 Linux 上的 termcaps
- 添加文档
- 添加对 Vagrant 的支持,包括 Vagrantfile
- 添加单元测试
- 添加存储库/标签以简化镜像管理
- 改进层实现