Docker Engine 早期版本
1.13.1 (2017-02-08)
重要
在默认存储驱动为
devicemapper的 Linux 发行版中,现在默认使用overlay2或overlay(如果内核支持)。要使用 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
要手动删除所有插件并解决此问题,请执行以下步骤:
- 从以下位置移除 plugins.json:
/var/lib/docker/plugins/。 - 重启 Docker。验证 Docker 守护进程是否无错误启动。
- 重新安装您的插件。
贡献者
远程 API (v1.26) & 客户端
- 在 docker stack deploy 中使用 compose 文件支持密钥 #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 中,与 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
要手动删除所有插件并解决此问题,请执行以下步骤:
- 从以下位置移除 plugins.json:
/var/lib/docker/plugins/。 - 重启 Docker。验证 Docker 守护进程是否无错误启动。
- 重新安装您的插件。
构建器
- 修复 escape 后空行的 Dockerfile 解析器问题 #24725
- 在
docker build上添加步骤编号 #24978
- 现在允许使用未使用的构建参数。将显示警告而不是错误,并且构建失败 #27412
- 修复 Windows 上的 builder 缓存问题 #27805
贡献者
- 为 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
- 支持在 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
- 当用作 journald 字段名称时,清理 Docker 标签 #23725
- 修复了一个问题,其中
docker logs --tail返回的行数少于预期 #28203 - Splunk 日志驱动:性能和可靠性改进 #26207
- Splunk 日志驱动:可配置的格式以及跳过连接验证 #25786
网络
- 添加
--attachable网络支持以启用docker run在 swarm-mode 覆盖网络中工作 #25962 - 在服务中为使用
--publish选项的docker service create添加对主机端口 PublishMode 的支持 #27917 和 #28943 - 添加对 Windows 服务器 2016 overlay 网络驱动程序的支持(需要即将发布的 ws2016 更新) #28182
- 将默认的
FORWARD策略更改为DROP#28257
- 为 Windows 上的预定义网络指定静态 IP 地址添加支持 #22208
- 修复在 IPv6 地址上
--publish标志对docker run无效的问题 #27860 - 修复 inspect network 显示带掩码的网关 #25564
- 修复桥接中多个地址可能导致
--fixed-cidr地址不正确的地址问题 #26659
- 向
docker network inspect添加创建时间戳 #26130
插件
- 添加对动态重新加载授权插件的支持 #22770
- 在
docker plugin ls中添加描述 #25556 - 将
-f/--format添加到docker plugin inspect#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
- 向
--format添加docker info标志 #23808
- 从
docker volume create中移除--name#23830
- 添加
docker stack ls#23886 - 添加新的
is-taskps 过滤器 #24411 - 向
--env-file添加docker service create标志 #24844 - 在
docker stats上添加--format#24987 - 在swarm节点中将
docker node ps默认设置为self#25214 - 在
docker service create中添加--group#25317 - 在服务/节点/堆栈的ps输出中添加
--no-trunc#25337 - 将日志添加到
ContainerAttachOptions,以便 go 客户端可以在 attach 过程中请求检索容器日志 #26718 - 允许客户端与旧服务器通信 #27745
- 在客户端通知用户容器移除正在进行中 #26074
- 在服务端点一次不允许请求多个模式 #26643
- 为 /containers/create API 添加能力,以更细粒度和更安全的方式指定挂载点 #22373
- 向
--format标志添加到network ls和volume ls#23475
- 允许顶级
docker inspect命令检查任何类型的资源 #23614
- 添加 --cpus 标志以控制
docker run和docker create的 CPU 资源,并将NanoCPUs添加到HostConfig#27958
- 允许在
docker run或docker create中取消设置--entrypoint#23718
- 按添加
docker image和docker container命令的方式重新组织 CLI 命令,以提高一致性 #26025
- 从
service ls输出中移除COMMAND列 #28029
- 将
--format加到docker events#26268
- 将
--dns-option加到docker run#28186 - 向容器提交事件添加镜像ID #28128
- 在 docker info 中添加外部Binaries版本 #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-initBinaries的路径 #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 图形驱动程序时,设备延迟移除和恢复设备之间的竞争条件 #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'd 进程的 pid #27470
- 添加支持通过
getent查找用户/组 #27599 - 添加新的
docker system命令,包含df和prune子命令用于系统资源管理,以及docker {container,image,volume,network} prune子命令 #26108 #27525 / #27525
- 修复一个在使用 devicemapper 时,由于设置 xfs max_retries 为 0 而在出现 ENOSPC 时容器无法停止或被杀死的问题 #26212
- 修复在使用 devicemapper 的 CentOS 上将
docker cp复制到容器的卷目录时的故障 #28047
- 推广 overlay(2) 图形驱动程序 #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
- 将
--dns, --dns-opt, 和--dns-search添加到服务创建中。 #27567 - 将
--force加到docker service update#27596 - 向
--health-*和--no-healthcheck添加标志到docker service create和docker service update#27369 - 将
-q加到docker service ps#27654
- 显示全局服务的数量
docker service ls#27710
- 从
docker service update中移除--name标志。此标志仅在docker service create上有效,因此从update命令中移除 #26988 - 修复因瞬时网络问题导致工作节点无法恢复 #26646
- 为负载均衡和DNS记录添加健康感知支持 #27279
- 将
--hostname加到docker service create#27857 - 将
--host加到docker service create,并加上--host-add、--host-rm到docker service update#28031 - 向
--tty添加标志docker service create/update#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命令标记为已弃用。守护程序已移至单独的Binaries(dockerd),应改用该文件。 #26834 - 弃用未版本化的 API 端点 #28208
- 移除 Ubuntu 15.10(Wily Werewolf)作为支持的平台。Ubuntu 15.10 已终止支持,不再接收更新 #27042
- 移除 Fedora 22 作为支持的平台。Fedora 22 已停止支持,不再接收更新 #27432
- 移除 Fedora 23 作为支持的平台。Fedora 23 已停止支持,不再接收更新 #29455
- 弃用
repo:shortid在docker pull上的语法 #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 unit 文件。从旧版本的 Docker 升级时,升级过程可能不会自动安装 unit 文件的更新版本,或者无法启动
docker service;
- systemd 单元文件(
/usr/lib/systemd/system/docker.service)包含本地更改,或- 存在一个systemd drop-in文件,并且在
ExecStart指令中包含-H fd://
启动 docker service 将会产生错误:
Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
or
no sockets found via socket activation: make sure the service was started by systemd.
要解决此问题:
- 备份当前版本的单元文件,并使用随 docker 1.12 附带的版本替换该文件version that ships with docker 1.12
- 从
/usr/lib/systemd/system/docker.service文件中移除(如果存在)Requires=docker.socket指令 - 从
ExecStart指令中移除-H fd://(在主单元文件和任何现有的drop-in文件中都进行此操作)。
在进行这些更改后,运行 sudo systemctl daemon-reload,和 sudo systemctl restart docker 以重新加载更改并(重新)启动 docker 守护程序。
注意
Docker 1.12.5 将正确验证在您指定
--ipv6选项时,是否提供了 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 及更早版本相同的行为),或为 --fixed-cidr-v6 标志提供 IPv6 子网作为值。
类似地,如果你在使用默认的 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 及更早版本相同的行为),或将 --subnet 标志的值设置为 IPv6 子网。
如果您使用支持自动分配IPv6子网的外部IPAM驱动程序,网络创建将成功。
运行时
- 修复 runC 权限提升漏洞(CVE-2016-9962)
1.12.5 (2016-12-15)
重要
Docker 1.12 为基于 rpm 的安装(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)提供了更新的 systemd unit 文件。从旧版本的 Docker 升级时,升级过程可能不会自动安装 unit 文件的更新版本,或者无法启动
docker service;
- systemd 单元文件(
/usr/lib/systemd/system/docker.service)包含本地更改,或- 存在一个systemd drop-in文件,并且在
ExecStart指令中包含-H fd://
启动 docker service 将会产生错误:
Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
or
no sockets found via socket activation: make sure the service was started by systemd.
要解决此问题:
- 备份当前版本的单元文件,并使用随 docker 1.12 附带的版本替换该文件version that ships with docker 1.12
- 从
/usr/lib/systemd/system/docker.service文件中移除(如果存在)Requires=docker.socket指令 - 从
ExecStart指令中移除-H fd://(在主单元文件和任何现有的drop-in文件中都进行此操作)。
在进行这些更改后,运行 sudo systemctl daemon-reload,和 sudo systemctl restart docker 以重新加载更改并(重新)启动 docker 守护程序。
注意
Docker 1.12.5 将正确验证在您指定
--ipv6选项时,是否提供了 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 及更早版本相同的行为),或为 --fixed-cidr-v6 标志提供 IPv6 子网作为值。
类似地,如果你在使用默认的 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 及更早版本相同的行为),或将 --subnet 标志的值设置为 IPv6 子网。
如果您使用支持自动分配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 unit 文件。从旧版本的 Docker 升级时,升级过程可能不会自动安装 unit 文件的更新版本,或者无法启动
docker service;
- systemd 单元文件(
/usr/lib/systemd/system/docker.service)包含本地更改,或- 存在一个systemd drop-in文件,并且在
ExecStart指令中包含-H fd://
启动 docker service 将会产生错误:
Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
or
no sockets found via socket activation: make sure the service was started by systemd.
要解决此问题:
- 备份当前版本的单元文件,并使用随 docker 1.12 附带的版本替换该文件version that ships with docker 1.12
- 从
/usr/lib/systemd/system/docker.service文件中移除(如果存在)Requires=docker.socket指令 - 从
ExecStart指令中移除-H fd://(在主单元文件和任何现有的drop-in文件中都进行此操作)。
在进行这些更改后,运行 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 时的 unmarhalling 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 drop-in文件,并且在
ExecStart指令中包含-H fd://
启动 docker service 将会产生错误:
Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
or
no sockets found via socket activation: make sure the service was started by systemd.
要解决此问题:
- 备份当前版本的单元文件,并使用随 docker 1.12 附带的版本替换该文件version that ships with docker 1.12
- 从
/usr/lib/systemd/system/docker.service文件中移除(如果存在)Requires=docker.socket指令 - 从
ExecStart指令中移除-H fd://(在主单元文件和任何现有的drop-in文件中都进行此操作)。
在进行这些更改后,运行 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
- 修复在将 sandbox 序列化为字符串时的竞态条件 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 unit 文件。从旧版本的 Docker 升级时,升级过程可能不会自动安装 unit 文件的更新版本,或者无法启动
docker service;
- systemd 单元文件(
/usr/lib/systemd/system/docker.service)包含本地更改,或- 存在一个systemd drop-in文件,并且在
ExecStart指令中包含-H fd://
启动 docker service 将会产生错误:
Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
or
no sockets found via socket activation: make sure the service was started by systemd.
要解决此问题:
- 备份当前版本的单元文件,并使用随 docker 1.12 附带的版本替换该文件version that ships with docker 1.12
- 从
/usr/lib/systemd/system/docker.service文件中移除(如果存在)Requires=docker.socket指令 - 从
ExecStart指令中移除-H fd://(在主单元文件和任何现有的drop-in文件中都进行此操作)。
在进行这些更改后,运行 sudo systemctl daemon-reload,和 sudo systemctl restart docker 以重新加载更改并(重新)启动 docker 守护程序。
运行时
- 修复因过滤
docker ps时出现的竞争条件导致的 panic #26049
- 在使用 aufs 存储驱动时,实现重试逻辑以防止出现“无法移除文件系统”的错误 #26536
- 防止在启用
dm.use_deferred_removal时,devicemapper删除设备符号链接 #24740
- 修复一个命令行界面在使用无效选项运行命令时未返回正确退出代码的问题 #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
- 将八卦集群所知的节点名称进行区分,以避免节点名称冲突 docker/libnetwork#1451
- 尊重用户为gossip提供的监听地址 docker/libnetwork#1460
- 允许通过同一主机上各服务的发布端口进行可达性访问 docker/libnetwork#1398
- 将入口沙箱名称从随机ID更改为
ingress_sboxdocker/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
- 不允许在入口网络上创建服务 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 unit 文件。从旧版本的 Docker 升级时,升级过程可能不会自动安装 unit 文件的更新版本,或者无法启动
docker service;
- systemd 单元文件(
/usr/lib/systemd/system/docker.service)包含本地更改,或- 存在一个systemd drop-in文件,并且在
ExecStart指令中包含-H fd://
启动 docker service 将会产生错误:
Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
or
no sockets found via socket activation: make sure the service was started by systemd.
要解决此问题:
- 备份当前版本的单元文件,并使用随 docker 1.12 附带的版本替换该文件version that ships with docker 1.12
- 从
/usr/lib/systemd/system/docker.service文件中移除(如果存在)Requires=docker.socket指令 - 从
ExecStart指令中移除-H fd://(在主单元文件和任何现有的drop-in文件中都进行此操作)。
在进行这些更改后,运行 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记录放宽验证 #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 drop-in文件,并且在
ExecStart指令中包含-H fd://
启动 docker service 将会产生错误:
Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
or
no sockets found via socket activation: make sure the service was started by systemd.
要解决此问题:
- 备份当前版本的单元文件,并使用随 docker 1.12 附带的版本替换该文件version that ships with docker 1.12
- 从
/usr/lib/systemd/system/docker.service文件中移除(如果存在)Requires=docker.socket指令 - 从
ExecStart指令中移除-H fd://(在主单元文件和任何现有的drop-in文件中都进行此操作)。
在进行这些更改后,运行 sudo systemctl daemon-reload,和 sudo systemctl restart docker 以重新加载更改并(重新)启动 docker 守护程序。
重要
在 Docker 1.12 中,Linux
docker安装现在包含两个额外的Binaries;dockerd和docker-proxy。如果你有安装docker的脚本,请相应地更新它们。
构建器
- 新
HEALTHCHECKDockerfile 指令以支持用户定义的健康检查 #23218 - 新
SHELLDockerfile 指令,用于在 Dockerfile 中使用 shell 形式指定命令的默认 shell #22489 - 在 Dockerfile 中添加
#escape=指令以支持按平台解析文件路径 #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 套接字 #21613
- 向
docker logs添加--details选项以同时显示日志标签 #21889 - 启用syslog日志记录器以访问环境变量和标签 #21724
- 在 syslog 时间戳中允许微秒分辨率的附加 syslog 格式选项
rfc5424micro#21844
网络
- 内置基于虚拟IP的内部和入口负载均衡,使用IPVS #23361
- 使用 ingress overlay 网络的路由网格 #23361
- 使用加密控制平面和数据平面的多主机覆盖网络的安全性 #23361
- MacVlan 驱动已退出实验阶段 #23524
- 向
network ls添加driver过滤器 #22319 - 向
docker ps --filter添加network过滤器 #23300 - 为
--link-local-ip标志添加到create、run和network connect以指定容器的链路本地地址 #23415 - 添加网络标签过滤支持 #21495
- 修复在重命名使用生成名称的容器时的DNS问题 #22716
- 允许使用
network inspect -f {{.Id}}和network inspect -f {{.ID}}来解决与 inspect 输出不一致的问题 #23226
插件(实验性)
- 用于管理插件的新
plugin命令,包含install,enable,disable,rm,inspect,set子命令 #23446
远程 API (v1.24) & 客户端
- 将Binaries拆分为两个:
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
运行时
- 将用户空间代理拆分为单独的Binaries(
docker-proxy) #23312 - 添加
--live-restore守护程序标志以在守护程序关闭时保持容器运行,并在启动时重新获得控制权 #23213 - 能力:添加OCI兼容运行时(通过
--add-runtime守护程序标志)并在create和run上使用--runtime进行选择 #22983 - 适用于 Linux 4.0+ 的新
overlay2graphdriver,支持多个下层目录 #22126 - 新加载/保存镜像事件 #22137
- 通过systemd添加对重新加载守护程序配置的支持 #22446
- 为 btrfs 添加磁盘配额支持 #19651
- 为 zfs 添加磁盘配额支持 #21946
- 添加对
docker run --pid=container:<id>#22481 - 与选定的capabilities对齐默认的seccomp配置文件 #22554
- 当守护进程重新加载其配置时添加一个
daemon reload事件 #22590 - 在 pprof 分析器中添加
trace功能以二进制形式显示执行跟踪 #22715 - 添加一个
detach事件 #22898 - 添加对使用
--sysctl设置sysctls的支持 #19265 - 向
--storage-opt标志添加到create和run,允许在 devicemapper 上设置size#19367 - 添加
--oom-score-adjust守护程序标志,并将其默认值设置为-500,使守护程序在容器之前被杀死的可能性降低 #24516
- 在
run,build,create,update上取消弃用-c的简短别名--cpu-shares#22621 - 在 eCryptfs 挂载点上防止使用 aufs 和 overlay 图形驱动程序 #23121
- 修复 tmpfs 挂载顺序问题 #22329
- 创建的容器不再列在
docker ps -a -f exited=0#21947 - 修复容器卡在“移除进行中”状态的问题 #22423
- 修复在运行/创建时未指定命令时返回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的新
swarm命令,包含init,join,join-token,leave,update子命令 #23361 #24823 - 用于使用
create、inspect、update、rm、ps子命令管理集群级服务的新service命令 #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 标签中已弃用的
-f/--force标志 #23090 - 移除已弃用的
/containers/<id|name>/copy端点 #22149 - 移除已弃用的
docker ps标志--since和--before#22138 - 弃用
docker import的旧 3-参数形式 #23273
1.11.2 (2016-05-31)
网络
运行时
- 修复在运行
docker build时可能出现的 panic( #23032) - 修复对
--user参数的解释( #22998) - 修复阻止容器统计信息正确报告的错误( #22955)
- 修复守护进程重启后容器无法重启的问题( #22947)
- 修复在 Ubuntu 16.04 上运行 32 位Binaries时的问题 ( #22922)
- 修复在镜像删除和容器附加时可能出现的死锁( #22918)
- 修复一个在守护程序重启后,如果容器依赖于容器化的集群存储,则容器无法启动的问题( #22561)
- 修复在使用 devicemapper 时导致
docker ps在 CentOS 上挂起的问题 ( #22168, #23067) - 修复一个阻止将
docker exec写入使用 devicemapper 的容器的错误( #22168, #23067)
1.11.1 (2016-04-26)
分发版
- 将schema2清单媒体类型修复为类型
application/vnd.docker.container.image.v1+json( #21949)
文档
- 为1.11.0引入的更改添加缺失的API文档( #22048)
构建器
- 将传递给
docker build的标签作为参数追加为在处理后的Dockerfile末尾的隐式LABEL命令 ( #22184)
网络
运行时
- 修复一个阻止通过配置文件重新加载标签配置的错误( #22299)
- 修复一个回归问题,其中容器挂载
/var/run会阻止其他容器被移除 ( #22256) - 修复一个无法同时更新
memory-swap和memory值的问题 ( #22255) - 修复1.11.0版本中的一个回归问题,当未提供
serveraddress时,/auth端点不会初始化serveraddress( #22254) - 取消计划重启时添加容器临时文件的缺失清理( #22237)
- 当未指定重启策略时,移除吓人的错误消息( #21993)
- 修复在通过json规范激活插件时发生的崩溃问题( #22191)
- 修复重启退避逻辑,以便在容器至少运行10秒后正确重置延迟( #22125)
- 当容器重启被取消时,移除错误信息( #22123)
- 修复一个问题,其中
docker无法正确清理docker exec的残留( #22121) - 修复在服务并发
docker stats命令时可能发生的 panic ( #22120)` - 撤销不存在的主机目录自动创建的弃用 ( #22065)
- 在守护进程关闭时隐藏误导性的 rpc 错误( #22058)
1.11.0 (2016-04-13)
重要
在 Docker 1.11 中,Linux Docker 安装现在由 4 个Binaries组成(
docker,docker-containerd,docker-containerd-shim和docker-runc)。如果你的脚本依赖于docker是一个单一的静态Binaries,请确保更新它们。与守护程序的交互方式保持不变,其他Binaries的使用应当是透明的。Windows Docker 安装仍然是一个单一的Binaries,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 现在会在 save/export 命令失败后清理自身( #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)
- 在 Windows 平台上的 Docker 现在包含一个名为
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 命令行界面(#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 inspectreturns whether a network is internal or not ( #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)
- 内置空 IPAM 驱动程序已添加 ( #21019)
- 修复了 iptables.Exists() 逻辑中的错误 #21019
- 修复在使用 overlay 网络时 Veth 接口泄漏的问题 ( #21019)
- 修复了一个在关机期间删除网络后阻止 docker 重新加载的错误( #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))
插件
运行时
- 修复在使用无效参数启动容器后进行清理时可能发生的 panic( #21716)
- 修复事件计时器过早停止的竞态问题 ( #21692)
- 修复图层存储中的竞态条件,可能损坏映射并导致进程崩溃( #21677)
- 取消弃用为挂载自动创建主机目录的功能。此功能在 ( #21666) Docker 1.9 中被标记为弃用,但被认为是一个向后不兼容的更改过大,因此决定保留该功能。
- 现在,当启用
userns时,容器可以共享 NET 和 IPC 命名空间( #21383) docker inspect <image-id>将现在公开 rootfs 层 ( #21370)- Docker Windows 获得了
top的最小实现( #21354)
- Docker 学会了在容器因状态问题无法启动时报告有故障的 exe( #21345)
- 使用 device mapper 的 Docker 现在如果
udev sync不可用将拒绝运行 ( #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 现在依赖于
containerd和runc来启动容器。 ( #20662)
- 修复 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字段,其中包含容器状态的可读表示(即created、restarting、running、paused、exited或dead之一)( #18966)
- Docker 学会通过
pids-limit标志限制容器内的活动进程数(即进程数)。注意:这需要内核配置中包含CGROUP_PIDS=y。( #18697)
docker load现在有一个--quiet选项来抑制加载输出 ( #20078)- 修复 IPv6 对等体的邻居发现中的一个错误 ( #20842)
- 在清理期间修复因使用无效选项启动容器而引发的 panic( #21802)
- 修复终端关闭后容器无法停止的情况( #21840)
安全
- Object with the
pcp_pmcd_tselinux 类型被授予对/var/lib/docker(/.*)?的管理访问权限 ( #21370) restart_syscall,copy_file_range,mlock2加入了默认 seccomp 配置文件中的允许调用列表( #21117, #21262)send,recv和x32被添加到默认 seccomp 配置文件中允许的系统调用和架构列表中 ( #19432)- Docker 内容信任现在要求服务器执行快照签名 ( #21046)
- 对使用 YubiKeys 进行内容信任签名的支持已从实验性功能中移除( #21591)
卷
- 修复一个无法将单字母目录名称用作卷源的问题( #21106)
docker run -v现在支持一个新的标志nocopy。这会告诉运行时不要将容器路径内容复制到卷中(这是默认行为)(#21223)
1.10.3 (2016-03-10)
运行时
- 修复 Docker 客户端因“Unrecognized input header”错误而退出的问题 #20706
- 修复 Docker 在 Exec 使用
AttachStdin和Detach同时启动时退出的问题 #20647
分发版
插件系统
- 修复在启用 SELinux 时阻止卷插件启动的问题 #20834
- 防止 Docker 在卷插件对 Get 请求返回空响应时退出 #20682
- 修复插件系统在插件出现错误时泄露文件描述符的问题 #20680
安全
- 修复 linux32 模拟,使其在 docker 构建期间失败
#20672
这是由于默认的 seccomp 配置文件阻止了
personality系统调用。 - 修复 Oracle XE 10g 在容器中无法启动的问题
#20981
这是由于默认的 seccomp 配置文件阻止了
ipc系统调用。 - 修复 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 - 修复偶尔出现的 panic 与
docker logs -f#20522
分发版
- 如果删除失败,保留层引用以避免状态严重不一致 #20513
- 优雅地处理在取消迁移时的边缘情况 #20372
- 修复在压缩数据上的 docker 导入问题 #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 事件与授权插件正常工作的问题 #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 时会执行迁移,所需时间取决于现有镜像的数量。更多信息请参阅维基页面:
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 上不兼容。
- 向
--blkio-weight-device添加docker run标志 #13959 - 向
--device-read-bps和--device-write-bps添加标志到docker run#14466 - 向
--device-read-iops和--device-write-iops添加标志到docker run#15879 - 向
--oom-score-adj添加docker run标志 #16277 - 为
--detach-keys命令添加attach、run、start和exec标志以覆盖从容器分离的默认键序列 #15666 - 为
run、create和build添加--shm-size标志以设置/dev/shm的大小 #16168 - 显示正在运行、已停止和暂停的容器数量为
docker info#19249 - 显示
OSType和Architecture在docker info#17478 - 在
daemon上添加--cgroup-parent标志以设置所有容器的 cgroup 父级 #19062 - 为 docker cp 添加
-L标志以跟随符号链接 #16613 - 新
status=dead过滤器用于docker ps#17908
- 将
docker run退出代码更改为区分运行时错误和应用程序错误 #14012 - 增强
docker events --since和--until以支持纳秒和时区 #17495 - 向
--all/-a标志添加到stats以包含正在运行和已停止的容器 #16742 - 将默认的 cgroup-driver 更改为
cgroupfs#17704 - 在使用
build -t标记镜像时触发“tag”事件 #17115 - 启动守护进程时,链接容器的启动顺序将尽力而为 #18208
- 添加在
build上添加多个标签的能力 #15780 - 允许对任何URL的
OPTIONS请求,从而解决CORS问题 #19569
- 修复
--quiet标志在docker build上以真正静默 #17428 - 修复
docker images --filter dangling=false以现在显示所有非悬空镜像 #19326 - 修复在重启时导致自动重启关闭的竞态条件 #17629
- 识别 GPFS 文件系统 #19216
- 修复一个晦涩的bug,该bug阻止了容器的启动 #19751
- 重启容器时禁止使用
exec#19722 - devicemapper: 在守护进程重启时,增加
--storage-opt dm.basesize现在会增加基础设备的大小 #19123
安全
- 向
daemon添加--userns-remap标志以支持用户命名空间(此前处于实验阶段) #19187 - 在
--security-opt中添加对自定义seccomp配置文件的支持 #17989 - 添加默认 seccomp 配置文件 #18780
- 向
--authorization-plugin添加daemon标志以自定义 ACLs #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 - 添加对新 清单格式("schema2") #18785 的支持
- 推送和拉取功能得到大量改进:性能提升,下载失败重试,客户端断开时取消操作 #18353, #18418, #19109, #18353
- 限制 v1 协议回退 #18590
- 修复 docker 无限期等待不存在的进程拉取镜像的问题 #19743
网络
- 使用基于 DNS 的发现,而不是
/etc/hosts#19198 - 支持在
run和network connect上使用--net-alias的网络作用域别名以及--alias#19242 - 在
run和network connect上添加--ip和--ip6以支持网络中容器的自定义 IP 地址 #19001 - 将
--ipam-opt加到network create以传递自定义 IPAM 选项 #17316 - 向
--internal添加network create标志以限制网络的外部进出访问 #19276 - 向
kv.path添加--cluster-store-opt选项 #19167 - 向
--cluster-store-opt添加discovery.heartbeat和discovery.ttl选项以配置发现 TTL 和心跳计时器 #18204 - 向
--format添加network inspect标志 #17481 - 将
--link加到network connect以提供容器本地别名 #19229 - 与远程 IPAM 插件进行能力交换的支持 #18775
- 将
--force加到network disconnect以强制容器断开与网络的连接 #19317
- 支持使用内置 overlay 驱动的多主机网络,适用于所有受支持的内核:3.10+ #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 服务文件中设置 TasksMax,同时设置 LimitNPROC #19391
弃用
- 移除 LXC 支持。LXC 驱动在 Docker 1.8 中已被弃用,现已移除 #17700
- 移除
--exec-driver守护进程标志,因为它已不再使用 #17700 - 移除旧的已弃用的单破折号长CLI标志(例如
-rm; 请使用--rm代替) #17724 - 弃用在 API 容器启动时的 HostConfig #17799
- 弃用针对新到生命周期终点的 Linux 发行版的 docker 软件包:Fedora 21 和 Ubuntu 15.04 (Vivid) #18794, #18809
- 弃用
-f标志用于 docker 标签 #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 白化问题 (#17819)
- devicemapper: 由于性能原因,尝试将默认文件系统从 ext4 改为 xfs (#17903, #17918)
- devicemapper: 修复 docker info 中显示的文件系统 (#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 推送的父链 (#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) - 发送并记录正确的HTTP状态码为
/exec/<name>/start(#16250) - 在共享 IPC 命名空间的容器之间共享 shm 和 mqueue (#15862)
- 事件流现在在设置
--oom-kill-disable时显示 OOM 状态 (#16235) - 确保在使用
ro选项 bind-mount 时,特殊网络文件(/etc/hosts 等)为只读 (#14965) - 提升
rmi性能 (#16890) - 不要为默认桥接网络更新 /etc/hosts,除非使用链接 (#17325)
- 修复与重复容器名称的冲突 (#17389)
- 修复
docker inspect中模板执行错误的问题 (#17284) - 弃用 docker run 中
-c短标志变体,使用--cpu-shares(#16271)
客户端
- 允许
docker import从本地文件导入 (#11907)
构建器
- 添加一个
STOPSIGNALDockerfile 指令,允许为容器进程设置不同的 stop-signal(#15307) - 在 Dockerfile 中添加
ARG指令和在docker build中添加--build-arg标志,以允许添加构建时环境变量 (#15182)
- 改善缓存未命中性能 (#16890)
存储
- devicemapper: 实现延迟删除功能 (#16381)
网络
docker network退出实验阶段并成为标准发布的一部分 (#16645)- 新的网络顶级概念,以及相关的子命令和 API (#16645) 警告:此 API 与实验性 API 不同
- 支持多个隔离/微分段网络 (#16645)
- 使用基于VXLAN的覆盖驱动程序的内置多主机网络 (#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,IPv6Gateway和MacAddress。 这些字段现在仅适用于bridge网络。使用NetworkSettings.Networks来检查容器在每个网络上的网络设置。
卷
- 新的顶级
volume子命令和 API (#14242)
- 将 API 卷驱动程序设置移动到特定主机配置 (#15798)
- 如果卷名称不唯一,则打印错误消息 (#16009)
- 确保从Dockerfile创建的卷始终使用本地卷驱动程序 (#15507)
- 弃用为绑定挂载自动创建缺失的主机路径 (#16349)
日志记录
- 添加
awslogs日志驱动程序以用于 Amazon CloudWatch (#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)
安全
- 向 rpm 包添加 SELinux 配置文件 (#15832)
- 修复 deb 包中提供的 AppArmor 配置文件的各种问题 (#14609)
- 添加 AppArmor 策略以防止写入 /proc (#15571)
1.8.3 (2015-10-12)
分发版
- 修复层ID导致本地图形中毒(CVE-2014-8178)
- 修复清单验证和解析逻辑错误,允许通过摘要拉取验证绕过(CVE-2014-8179)
- 将
--disable-legacy-registry添加以防止守护程序使用 v1 注册表
1.8.2 (2015-09-10)
分发版
- 修复处理GNU LongLink和LongName条目的罕见边界情况。
- 修复在 docker pull 中使用 ^C 的问题。
- 修复客户端断开连接时的 docker pull 问题。
- 修复因日志记录器配置不正确而导致守护程序崩溃的问题。
- 修复从registry V2拉取镜像时的goroutine泄漏问题。
运行时
- 修复在 Docker 容器内运行的 Docker 守护程序挂载 cgroups 的错误。
- 正确初始化日志配置。
客户端:
- 在存在默认格式时,正确处理
-q标志在docker ps中。
网络
- 修复netlink的几个边缘情况。
贡献者
- 修复与 bash 补全相关的多个问题。
1.8.1 (2015-08-12)
分发版
- 修复一个推送多个标签会导致镜像无效的错误
1.8.0 (2015-08-11)
分发版
- 受信任的拉取、推送和构建,默认情况下已禁用
- 在不同注册表之间使 tar 层具有确定性
- 不允许删除正在运行的容器的镜像
- 检查要加载的标签名称是否为有效的摘要
- 允许使用单字符的仓库名称
- 为无效的标签名称添加更准确的错误描述
- 使构建缓存忽略mtime
CLI
- 添加对 DOCKER_CONFIG/--config 的支持以指定配置文件目录
- 为 docker inspect 命令添加 --type 标志
- 使用
--format为docker ps添加格式选项 - 将
docker -d替换为新子命令docker daemon
- Zsh 补全更新与改进
- 为 bash 补全添加一些缺失的事件
- 支持在
docker -H中带基本路径的守护程序 URL - 验证 status= 过滤器到 docker ps
- 在 docker ps 中显示容器处于 --net=host 状态时的情况
- 扩展 docker inspect 以导出与图形驱动程序相关的镜像元数据
- Restore --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 - 设备映射器:外部设备激活
- 设备映射器:在启动时比较基础设备的uuid
- 从注册表密码套件列表中移除 RC4
- 添加 syslog-facility 选项
- LXC 执行驱动程序与最新 LXC 版本的兼容性
- 将 LXC execriver 标记为已弃用(将在迁移到 runc 时移除)
插件
- 独立的插件套接字和规范位置
- 允许与插件建立TLS连接
错误修复
- 在/containers/json API输出中添加缺失的'Names'字段
- 在拉取镜像时使悬挂镜像
docker rmi变为安全 - 设备映射器:将默认基本大小更改为100G
- Go 调度器与 sync.Mutex 和 gcc 的问题
- 修复因AuthConfig为空而导致搜索API端点崩溃的问题
- 正确设置镜像规范名称
- 仅在使用 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 包在无效 hostport 上的 panic
- 修复 Fedora 22 中的容器链接
- 修复因使用分配范围之外的默认网关而引起的错误
- 在inspect命令中使用模板以RFC3339Nano格式化时间
- 让注册表客户端接受2xx和3xx http状态响应为成功
- 修复竞态问题,该问题在特定顺序下导致某些图层下载失败时使守护程序崩溃。
- 修复 docker ps 格式无效时的错误。
- 移除多余的IP转发检查。
- 修复尝试将镜像推送到仓库镜像时出现的问题。
- 修复在初始化问题时清理网络入口点的错误。
1.7.1 (2015-07-14)
运行时
- 修复默认用户使用
docker exec生成 exec 进程的问题 - 将
--bridge=none设为不配置网络桥接 - 正确发布网络统计信息
- 修复静态Binaries中隐式的 devicemapper 选择
- 修复间歇性挂起的套接字连接
- 修复 CentOS/RHEL 6.6 上的桥接接口创建
- 修复添加到resolv.conf的本地DNS查找
- 修复复制命令挂载卷
- 修复使用 --volumes-from 挂载的卷的读/写权限
远程 API
- 修复Command和Entrypoint的反序列化问题
- 设置支持的最小客户端版本的限制
- 验证端口规范
- 当attach/reattach失败时返回正确的错误信息
分发版
- 修复拉取私有镜像的问题
- 修复在注册表V2和V1之间的回退
1.7.0 (2015-06-16)
运行时
- 实验性功能:支持进程外卷插件
- 用户空间代理可以使用守护进程的
--userland-proxy=false标志禁用,以支持发夹NAT exec命令支持使用-u|--user标志来指定新进程的所有者
- 容器的默认网关可以使用
--default-gateway和--default-gateway-v6标志在守护进程中全局指定 - CPU CFS(完全公平调度程序)配额可以使用
--cpu-quota将docker run设置为 - 容器块 IO 可以在
docker run使用--blkio-weight进行控制 - ZFS 支持
docker logs命令支持--since参数- UTS 命名空间可以使用
docker run --uts=host与主机共享
质量
- 网络堆栈完全重写,作为libnetwork项目的一部分
- 引擎内部重构
- 卷的代码完全重写以支持插件工作
- 向守护进程发送 SIGUSR1 将会转储所有 goroutines 栈而不退出
构建
- 支持环境变量的 ${variable:-value} 和 ${variable:+value} 语法
- 支持资源管理标志
--cgroup-parent,--cpu-period,--cpu-quota,--cpuset-cpus,--cpuset-mems - git 上下文随分支和目录变化
- .dockerignore 文件支持排除规则
分发版
- 官方仓库 v2 镜像的客户端支持
错误修复
- 现已支持 Firewalld,并在可用时自动使用
- 递归挂载设备
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)
构建器
- 用于给定
docker build的Dockerfile可以使用-f标志指定
- Dockerfile 和 .dockerignore 文件本身可以作为 .dockerignore 文件的一部分被排除,从而防止对这些文件的修改使 ADD 或 COPY 指令的缓存失效
- ADD 和 COPY 指令接受相对路径
- Dockerfile
FROM scratch指令现在被解释为无基础镜像指定符 - 暴露大量端口时提高性能
黑客
- 仅允许客户端集成测试用于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标志将容器的根文件系统挂载为只读,这可以与卷结合使用,以强制容器的进程仅写入将被持久化的目录位置。- 可以使用
--memory-swap标志将容器的总内存使用限制为docker run
- 设备映射器存储驱动程序的重大稳定性改进
- 与主机系统更好的集成:容器重启时将反映主机
/etc/resolv.conf文件的更改 - 与主机系统更好的集成:每个容器的 iptable 规则已移至 DOCKER 链
- 修复容器在内存不足时退出并返回无效退出码的问题
其他
- HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 环境变量在客户端连接到 Docker 守护程序时会被正确考虑
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引用一个启动失败的容器时
注册表
--insecure-registry现在支持 CIDR 表示法,例如 10.1.0.0/16
- IP 落在 127.0.0.0/8 范围内的私有仓库不需要
--insecure-registry标志
- 启用镜像时跳过实验性 registry v2 API
1.3.1 (2014-10-28)
安全
- 防止客户端、守护程序和注册表回退到 TLS 1.0 以下的 SSL 协议
- 与注册表建立安全的HTTPS连接,并进行证书验证,除非指定
--insecure-registry,否则不使用HTTP回退
运行时
- 修复卷无法共享的问题
客户端
- 修复
--iptables=false不会自动设置--ip-masq=false的问题 - 修复 docker run 非 TTY stdout 的输出
构建器
- 修复环境变量中
$的转义问题 - 修复 Dockerfile 指令中
onbuild小写的问题 - 将环境变量扩展限制为
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 的通配符支持
- 将生产环境的网址从 get.docker.io 迁移到 get.docker.com
- 在有效的CIDR内为桥接器分配IP地址
- 使用 drone.io 进行 PR 和 CI 测试
- 设置官方镜像仓库镜像的能力
- Ability to save multiple images with 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 代理的小型错误修复
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 - 将
--tail加到docker logs
构建器
- 允许将 tar 文件用作
docker build的上下文
- 修复
Dockerfiles中的空白和多行问题
运行时
- 整体性能改进
- 允许将
/作为docker run -v的源 - 修复端口分配
- 修复
docker save中的错误 - 将链接信息添加到
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 - 用于使用cgroup freezer暂停和解除暂停容器的新
pause和unpause命令 images命令有一个-f/--filter选项用于过滤镜像列表- 在构建失败后添加
--force-rm以清理 - 在远程API中将JSON键标准化为驼峰式大小写
- 从 docker run 拉取现在假设未指定时使用
latest标签 - 增强 Linux 功能和设备节点的安全性
0.11.1 (2014-05-07)
注册表
- 修复推送和拉取私有仓库的问题
0.11.0 (2014-05-07)
自 0.10.0 版本以来的主要特性
- SELinux 对挂载和进程标签的支持
- 链接的容器可以通过主机名访问
- 使用 net
--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中禁用网络标志。
- 记录
--lxc-conf仅适用于 lxc。 - 添加 chef 使用文档。
- 为带有多个
docker load的镜像添加示例。 - 解释文档中
docker run -a的作用。
贡献者
- 为sysvinit添加DOCKER_LOGFILE变量,并在打开日志文件时使用追加而非覆盖。
- 修复 init 脚本的 cgroup 挂载变通方案,使其更接近 cgroupfs-mount,从而正常工作。
- 从 upstart 主机集成示例中移除 inotifywait 修补程序,因为它已不再需要。
- 在 contrib 目录中添加 check-config 脚本。
- 修复 fish shell 的自动补全功能。
黑客
- 清理“make test”中“go test”的输出,使其更易读/可扫描。
- 从 hack/make/test 中排除更多“肯定未经单元测试的 Go 源代码”目录。
- 在构建时生成 md5 和 sha256 哈希值,并通过 hack/release.sh 上传它们。
- 在 Ubuntu PPA 中包含贡献的补全。
- 添加命令行工具集成测试。
- 向 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 支持。
- 将身份验证包合并到注册表中。
- 为在
docker pull上使用 -t 添加弃用警告。 - 在发生错误时移除 goroutine 泄漏。
- 更新 parseLxcInfo 以符合新的 lxc1.0 格式。
- 修复在 Darwin 上的 attach 退出问题。
- 改善弃用消息。
- 最多重试5次以检索层元数据
docker pull。 - 仅在执行时分离挂载命名空间。
- 在提交时合并现有配置。
- 禁用守护进程启动超时。
- 修复问题 #4681:在网络功能禁用时添加回环接口。
- 为问题 #4681 添加失败的测试用例。
- 向子进程发送SIGTERM,而不是SIGKILL。
- 在
docker info中显示驱动程序和内核版本,即使不在调试模式下。 - 始终为 libcontainer 符号链接 /dev/ptmx。这修复了与控制台相关的问题。
- 修复由于缺少 /etc/apparmor.d 而导致的问题。
- 创建容器失败时不要留下空的cidFile。
- 如果尚未挂载,请自动挂载 cgroups。
- 使用 mock 进行搜索测试。
- 在各处使用双破折号进行更新。
- 将 .dockerenv 解析移动到 lxc 驱动程序。
- 将容器中的所有绑定挂载移动到命名空间内。
- 不要为容器使用单独的绑定挂载。
- 始终为 libcontainer 符号链接 /dev/ptmx。
- 不要通过pid杀死其他驱动程序。
- 为libcontainer添加初始日志记录。
- 按端口排序
docker ps。
- 将网络驱动程序移至运行时顶层包。
- 添加 --no-prune 到
docker rmi。 - 在
docker ps中添加退出时间。
- graphdriver: 添加构建标签。
- 防止分配先前已分配的端口,并改进端口分配。
- 在
docker ps中添加对--since/--before的支持。
- 清理并停止容器。
- 添加对可配置 DNS 搜索域的支持。
- 添加对相对 WORKDIR 指令的支持。
- 为 docker save 添加 --output 标志。
- 在配置合并中移除DNS条目的重复。
- 将 cpuset.cpus 添加到 cgroups 和本机驱动程序选项中。
- 移除 docker-ci。
- 推广 btrfs。btrfs 不再被视为实验性功能。
- 向
docker load添加 --input 标志。 - 当现有桥接网络与IP地址不匹配时返回错误。
- 在解析行续行之前删除注释,以避免将指令解释为注释。
- 修复 TestOnlyLoopbackExistsWhenUsingDisableNetworkOption 以忽略“DOWN”接口。
- 添加systemd的cgroups实现,并使容器显示为systemd单元。
- 在未指定仓库时修复提交和导入。
- 将 /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变量,并在打开日志文件时使用追加而非覆盖。
黑客
- 在构建时生成 md5 和 sha256 哈希值,并通过 hack/release.sh 上传它们。
远程 API
- 修复
docker cp中的 content-type 检测。
运行时
- 在 Darwin 上使用 BSD 原始模式。修复 nano、tmux 等。
- 仅在执行时分离挂载命名空间。
- 最多重试5次以检索层元数据
docker pull。 - 在提交时合并现有配置。
- 修复监控中的崩溃。
- 禁用守护进程启动超时。
- 修复问题 #4681:在网络功能禁用时添加回环接口。
- 为问题 #4681 添加失败的测试用例。
- 向子进程发送SIGTERM,而不是SIGKILL。
- 在
docker info中显示驱动程序和内核版本,即使不在调试模式下。 - 始终为 libcontainer 符号链接 /dev/ptmx。这修复了与控制台相关的问题。
- 修复由于缺少 /etc/apparmor.d 而导致的问题。
- 创建容器失败时不要留下空的cidFile。
- 改善弃用消息。
- 修复在 Darwin 上的 attach 退出问题。
- 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 客户端Binaries。
- 更新安装说明和描述的标题。
- 添加升级boot2docker的说明。
- 在 OS X 安装文档中添加端口转发示例。
- 尝试将仓库与注册表分离。
- 更新文档以解释更多关于
docker ps的内容。 - 更新 sshd 示例以使用 Dockerfile。
- 重新设计一些示例,包括 Python 示例。
- 更新文档以包含容器生命周期的说明。
- 更新文档以讨论文档分支。
- 不要跳过示例的证书检查并使用HTTPS。
- 恢复在移除内核页面时丢失的内存和交换会计部分。
- 解释DNS警告以及如何修复在运行并使用本地名称服务器的系统上的问题。
贡献者
- 为 mkimage-debootstrap 添加 Tanglu 支持。
- 为 mkimage-debootstrap 添加 SteamOS 支持。
黑客
- 在运行集成测试时获取包覆盖率。
- 删除 Vagrantfile。这将被 boot2docker 替换。
- 在aufs不可用的系统上修复测试。
- 更新打包说明并移除对 lxc 的依赖。
远程 API
- 将与 API 相关的代码移动到 api 包中。
- 修复 API 的标头内容类型。使所有端点使用正确的内容类型。
- 修复注册表身份验证并从CmdPush和CmdPull中移除ping调用。
- 在 JSON 流函数中添加换行符。
运行时
- 不要从CLI ping注册表。所有对注册表的请求都通过守护进程进行。
- 检查lxc驱动程序中nil信息的返回。这修复了使用旧版lxc时出现的panic问题。
- Devicemapper:清理和修复卸载问题。修复了导致卸载间歇性失败的两个问题。
- Devicemapper: 删除设备时移除目录。删除设备时,目录不会被留下。
- Devicemapper: 启用 skip_block_zeroing。通过不零化块来提高性能。
- Devicemapper: 修复关闭警告。修复与池设备移除相关的关闭警告。
- 确保 docker cp 流被正确关闭。修复
docker cp无法复制文件的问题。 - 停止将
tcp://默认为127.0.0.1:4243,并移除 tcp 的默认端口。 - 修复
--run在docker commit中。这使docker commit --run再次工作。 - 修复与自定义桥接相关的选项。这使得自定义桥接再次正常工作。
- 将伪终端(PTY)挂载绑定为容器控制台。这允许 tmux/screen 运行。
- 添加纯 Go 的 libcontainer 库,以便仅使用 Linux 内核的功能来运行容器。
- 添加使用 libcontainer 的原生 exec 驱动程序,并将其设为默认的 exec 驱动程序。
- 添加对归档中扩展属性处理的支持。
- 将容器的MTU设置为主机MTU相同。
- 为图层添加简单的 sha256 校验和以加快
docker push的速度。
- 改进内核版本解析。
- 允许标志分组(
docker run -it)。
- 移除 chroot 执行驱动程序。
- 修复除零错误以解决崩溃问题。
- 重写
docker rmi。 - 修复docker info与lxc 1.0.0的兼容性问题。
- 修复带有apparmor的fedora终端。
- 不要总是追加环境变量,而是用配置中的变量替换默认值。
- 修复一个 goroutine 泄漏。
- 切换到 Go 1.2.1。
- 修复唯一约束错误检查。
- 处理 Docker 数据目录和 TMPDIR 的符号链接。
- 为标志添加弃用警告(-flag 已弃用,建议使用 --flag)
- 为原生执行驱动程序添加 apparmor 配置文件。
- 将与系统相关的代码从归档移动到 pkg/system。
- 修复
docker run -i -t的重复信号(问题 #3336)。 - 为lxc返回正确的进程pid。
- 添加 -G 选项以指定 Unix 套接字所属的组。
- 向
docker rm添加-f标志以强制删除正在运行的容器。 - 重启docker守护进程时,杀死幽灵容器并重启所有幽灵容器。
- 添加
DOCKER_RAMDISK环境变量以使Docker在根目录位于ramdisk上时正常工作。
0.8.1 (2014-02-18)
构建器
- 避免在构建过程中进行额外的挂载/卸载。这将移除一个不必要的挂载/卸载操作,该操作曾导致devicemapper出现问题。
- 修复对tar文件使用ADD的回归问题。这将阻止Docker解压缩通过ADD从本地文件系统添加的tarball文件。
- 向
docker build --rm添加错误。这将添加一个缺失的错误检查,以确保删除容器失败能够被检测和报告。
文档
- 更新问题提交说明
- 警告不要将符号链接用于 Docker 的存储文件夹
- 用 IceWeasel 示例替换 Firefox 示例
- 使用 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 绑定地址(绑定到 127.0.0.1:4243)并移除默认端口
- 将伪终端(PTY)挂载绑定为容器控制台。这允许在容器中运行 tmux 和 screen。
- 清理归档关闭。这修复并改进了归档处理
- 在临时目录为符号链接的系统上修复引擎测试
- 为 save 和 load 添加测试方法
- 避免在重启容器时临时卸载容器。这修复了在重启期间 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 文件系统进行写时复制
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构建
- 修复文件缓存问题并防止错误的缓存命中
- 在反序列化CMD和ENTRYPOINT时使用相同的错误处理
文档
- 简化并优化 Amazon Quickstart
- 安装说明使用未加前缀的 Fedora 镜像
- GCE 上 Docker 的 mtu 标志更新说明
- 添加 Ubuntu Saucy 到安装
- 修复在master上而非latest出现的错误版本警告
运行时
- 仅在需要计算镜像大小时获取镜像的rootfs
- 正确处理未映射的UDP端口
- 让CopyFileWithTar使用管道而不是缓冲区以在docker构建时节省内存
- 修复登录消息,改为拉取而不是推送
- 通过移除“SOURCE”提示并提及STDIN来修复“docker load”的帮助信息
- 将空白 -H 选项的默认值设置为与未发送 -H 时相同
- 将cgroups工具提取到自己的子模块中
其他
- 添加 Travis CI 配置以验证 DCO 和 gofmt 要求
- 添加开发者证书原文本
- 升级 VBox Guest Additions
- 检查在向注册表服务器ping时的独立标题
0.7.3 (2014-01-02)
构建器
- 将ADD更新为使用基于添加内容的哈希值的镜像缓存
- 为Dockerfile为空添加错误信息
文档
- 修复到“介绍”页面的过时链接 www.docker.io
- 更新文档,使屏幕更宽时内容自动扩展
- 在使用原始Binaries时,添加有关需要安装LXC的信息
- 更新 Fedora 文档以解决 docker 和 docker.io 的冲突
- 在多个 GCE 区域中使用新的
-mtu标志的注意事项
- 添加 FrugalWare 安装说明
- 添加一个更完整的
docker run示例
- 修复创建和启动特权容器的API文档
- 在“/containers/create”上添加缺少的“name”参数文档
- 添加对
lxc-checkconfig的提及,作为检查某些必要内核配置的方法
- 更新1.8 API文档,添加在1.7文档中新增的内容
黑客
- 在打包者文档中添加缺失的 libdevmapper 依赖项
- 将最低 Go 要求更新为 Go 1.2+ 的硬性要求
- 对 Vagrantfile 进行了许多小幅改进
- 添加在编译时自定义dockerinit搜索位置的能力(仅供需要非标准位置的平台打包者极其谨慎地使用)
- 添加 coverprofile 生成报告
- 将
-a添加到我们的 Go 构建标志中,从而无需手动重新编译标准库
- 更新 Dockerfile 以更符合规范,并在构建过程中减少不必要的警告
- 修复一些杂项
docker pull进度条显示问题
- 将更多杂项包迁移到“pkg”文件夹下
- 将 TextMate 高亮自动应用于名为 "Dockerfile" 的文件
- 将语法高亮文件重组到一个共同的“contrib/syntax”目录下
- 更新 install.sh 脚本(https://get.docker.io/),使在 Ubuntu/Debian 安装结束时 busybox 下载或运行失败时不会导致安装失败。
- 在 bash 补全中添加对容器名称的支持
打包
- 为 Darwin(Mac OS X)添加官方 Docker 客户端Binaries
- 移除空的“Vendor”字符串,并在deb包中添加“License”
- 在deb包中添加“/etc/default/docker”的存根版本
运行时
- 将层应用程序更新为就地解压 tars,以避免在处理 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 端点移动到作业 API
- 添加 -bip 标志以允许通过 CIDR 指定动态桥接 IP
- 在某些系统上禁用 ipv6 时允许创建桥接
- 从 dockerinit 内部设置主机名和 IP 地址
- 在dockerinit中删除能力
- 修复主机上存在符号链接的镜像的卷
- 即使容器未运行,如果任何容器依赖于该镜像,也防止删除该镜像
- 更新 docker push 以使用新的进度显示
- 使用 os.Lstat 来允许在检查卷时挂载 unix 套接字
- 调整不活跃用户登录的处理方式
- 在 devicemapper 中为旧内核添加缺失的定义
- 允许在没有容器验证的情况下进行未标记操作
- 将身份验证配置添加到 docker 构建
文档
- 添加有关 Docker 日志记录的更多信息
- 添加 RHEL 文档
- 为更改容器中运行的 CMD 添加一个直接示例
- 更新 Arch 安装文档
- 添加可信构建部分
- 添加网络文档页面
其他
- 为提供代码覆盖率报告添加新的封面包
- 将集成测试分别打包
- 让Tianon成为黑客维护者
- 更新 mkimage-debootstrap 以保留更多调整,使镜像更小
- 使用 https 获取安装脚本
- 移除已发布的 Go 1.2 中的 vendored dotcloud/tar
0.7.1 (2013-12-05)
文档
- 添加 @SvenDowideit 为文档维护者
- 添加链接示例
- 添加有关大使模式的文档
- 添加 Google Cloud Platform 文档
- 添加 Dockerfile 最佳实践
- 更新 RHEL 的文档
- 更新注册表文档
- 更新 Postgres 示例
- 更新 Ubuntu 安装文档
- 改善远程 API 文档
运行时
- 在 docker inspect 中添加 hostconfig
- 实现
docker log -f以流式传输日志 - 添加环境变量以禁用内核版本警告
- 添加 -format 到
docker inspect - 支持文件的绑定挂载
- 修复 RHEL 上的桥接创建
- 修复镜像大小计算
- 确保即使桥接器已经存在,iptables也会被调用
- 修复仅 stderr 附加的问题
- 销毁容器时移除 init 层
- 修复在不同接口上绑定相同端口的问题
docker build现在返回正确的退出代码- 修复
docker port以显示正确的端口 docker build现在检查客户端是否存在 Dockerfiledocker attach现在返回正确的退出代码- 当容器不存在时,删除名称条目
注册表
- 改善进度条,为下载添加ETA
- 同时拉取现在会等待第一个完成,而不是失败
- 仅在推送到注册表时标记顶层镜像
- 修复离线镜像传输问题
- 修复阻止在注册表密码中使用 ':' 的问题
其他
- 为调试添加pprof处理器
- 创建一个Makefile
- 使用现在包含修复程序的 stdlib 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:路径
- 修复临时目录永不清理的问题
- 加速 docker ps
- 在名称冲突时提供更详细的错误信息
- 修复 nameserver 正则表达式
- 始终返回长ID
- 修复容器重启竞争条件
- 在docker stop后保持发布的端口;docker start
- 修复 Fedora 上的容器网络
- 正确地向iptables表达“任意地址”
- 重新连接到幽灵容器时修复网络设置
- 如果镜像被正在运行的容器使用,则防止删除
- 在图的读操作周围加锁
远程 API
- 在docker rmi上返回完整ID
客户端
- 为 images 命令添加 -tree 选项
- 离线镜像传输
- 在使用错误时以状态2退出,并在标准错误上显示使用信息
- 不要将 SIGCHLD 转发到容器
- 使用字符串时间戳作为 docker 事件 -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 日志
远程 API
- 让 /events API 立即发送标头
- 不要拆分最后一列 docker top
- 在历史中添加大小
其他
- 贡献:桌面集成。Firefox 使用案例。
- Dockerfile: 升级到 go1.2rc3
0.6.5 (2013-10-29)
运行时
- 容器现在可以命名了
- 容器现在可以相互连接以实现服务发现
- 'run -a'、'start -a' 和 'attach' 可以为容器转发信号,以更好地与进程管理器集成
- 重启后自动启动崩溃的容器
- 将容器链接的IP、端口和协议分别作为独立的环境变量暴露
- 允许端口发布到特定的IP地址
- 默认禁止容器间通信
- 在Container.Attach中忽略ErrClosedPipe for stdin
- 移除未使用的字段 kernelVersion
- 修复在容器中挂载 /mnt 的子目录时出现的问题
- 移除镜像时修复未标记问题
- 检查在 dockerinit 内更改工作目录时 syscall.Chdir 的返回值
客户端
- 仅在需要时将 stdin 传递给 hijack,以避免管道关闭错误
- 在命令行方法调用中使用更少的反射
- 在容器启动后监控tty大小,而不是启动前
- 移除 log.Fatal 之后无用的 os.Exit() 调用
黑客
- 添加初始init脚本库和一个更安全的Ubuntu打包脚本,适用于Debian
- 添加 -p 选项以使用 http_proxy 调用 debootstrap
- 使用 $sh_c 更新 install.sh 以获取 sudo/su 权限用于 modprobe
- 更新所有 mkimage 脚本,使用 --numeric-owner 作为 tar 参数
- 更新 hack/release.sh 流程以自动调用 hack/make.sh,并在构建和测试出现问题时终止
其他
- 文档:修复示例中 nc 的标志
- 测试:移除警告并防止挂载问题
- 测试:更改 tty 调整大小的逻辑以避免测试中的警告
- 构建器:修复 docker build 在详细输出时的竞态条件
- Registry: 修复 PushImageJSONIndex 方法的 content-type
- 贡献:改进辅助工具以生成 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 自动使用操作系统的临时目录
- 请确保关闭网络分配器
- 默认自动重启容器
- 将 vendor kr/pty 更新到提交 3b1f6487b
(syscall.O_NOCTTY) - lxc: 允许在容器中设置 set_file_cap 能力
- 将 run -rm 移至仅限 CLI
- 拆分标准输出和标准错误
- 始终为容器创建新会话
测试
- 添加聚合的 docker-ci 邮件报告
- 添加清理以移除遗留的容器
- 将夜间版本添加到 docker-ci
- 在auth.ResolveAuthConfig周围添加更多测试
- 移除测试中的几个错误
- 在TCP和UDP代理终止时捕获errClosing错误
- 仅使用 TESTFLAGS='-run TestName' make.sh 运行特定测试
- 防止 docker-ci 测试关闭的 PRs
- 在测试中用 log.Fatal 替换 panic
- 增加 TestRunDetach 超时时间
文档
- 添加 Docker 基础设施文档的初始草稿
- 在CONTRIBUTING.md中添加开发环境链接
- 将
apt-get install curl添加到 Ubuntu 文档中 - 添加关于出口限制的说明
- 添加 .dockercfg 文档
- 移除 Gentoo 安装说明中的 #1422 临时解决方案
- 修复 -v 选项的帮助文本
- 修复 Ping 端点文档
- 修复ADD命令文档中的参数名称
- 修复changelog中的ironic拼写错误
- 在 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 进行了轻微的拼写更正
贡献者
- 为Dockerfiles添加vim语法高亮,来自@honza
- 添加 mkimage-arch.sh
- 重新组织贡献的完成脚本来添加 zsh 完成
黑客
- 将vagrant用户添加到docker组
- 为“docker push”添加适当的bash自动补全
- 添加 xz utils 作为运行时依赖
- 为hack和Dockerfile更新添加清理/重构部分的#2010
- 将 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 虚拟机中启用 SSH 代理转发
- 对 contrib/mkimage-debian.sh 进行了若干小的调整/修复
其他
- 构建器:如果 mergeConfig 返回错误则中止构建,并修复重复的错误消息
- 打包:移除已弃用的打包目录
- Registry: 登录时使用正确的身份验证配置。
- Registry: 修复错误消息,使其与正则表达式一致
0.6.3 (2013-09-23)
打包
- 安装ubuntu包时添加'docker'组
- 更新 tar 供应商依赖项
- 通过HTTPS下载apt密钥
运行时
- 仅在非绑定挂载卷上复制并更改权限
- 允许多个 volumes-from
- 从 STDIN 修复 HTTP 导入
文档
- 更新在构建后提取 docker Binaries的部分
- 更新开发环境文档以适配新的构建流程
- 从文档中移除'base'镜像
其他
- 客户端:修复分离问题
- 注册表:更新正则表达式以匹配索引
0.6.2 (2013-09-17)
运行时
- 添加域名支持
- 使用 path.Match 实现镜像过滤
- 移除不必要的警告
- 移除 os/user 依赖
- 仅在配置存在时挂载主机名文件
- 在
docker login命令中处理信号
- UID 和 GID 现在也应用于卷
docker start在出错时设置错误代码docker run设置与启动的进程相同的错误代码
构建器
- 添加 -rm 选项以删除中间容器
- 允许 RUN 指令使用多行
注册表
- 使用私有仓库实现登录
- 修复推送问题
其他
- 技巧:将所有依赖项作为供应商
- 远程 API:升级到 v1.5
- 打包:将 hack/make.sh 拆分为小型脚本,每个“捆绑包”一个:测试、Binaries、ubuntu 等。
- 文档:通用改进
0.6.1 (2013-08-23)
注册表
- 在对注册表的API调用中传递“meta”标头
打包
- 使用新的构建工具时使用正确的 upstart 脚本
- 使用 libffi-dev,不要从源代码构建
- 移除重复的 mercurial 安装命令
0.6.0 (2013-08-22)
运行时
- 添加 lxc-conf 标志以允许自定义 lxc 选项
- 添加一个选项来设置工作目录
- 在LogEvent测试中添加镜像名称
- 添加 -privileged 标志及相关测试、文档和示例
- 为 /container/
/attach/ws 添加 websocket 支持 - 当 net.ipv4.ip_forwarding = 0 时添加警告
- 在环境变量中添加主机名
- 在
docker version中添加最后一个稳定版本
- 修复并行拉取中的竞态条件
- 修复 Graph ByParent() 以按父镜像生成每个父镜像的子镜像列表。
- 修复拼写错误:fmt.Sprint -> fmt.Sprintf
- 修复 docker build 中的小 错误
- 修复“在 /.dockerinit 注入 dockerinit”
- 修复 #910。在 docker info 输出中打印用户名
- 使用 Go 1.1.2 作为 dockerbuilder
- 在通道上使用范围for循环
- 在 server.ImageDelete 中使用 utils.ParseRepositoryTag 而不是 strings.Split(name, ":")
- 改善 CMD、ENTRYPOINT 和附加文档。
- 改善与套接字错误的连接消息
- 仅在需要时加载 authConfig 并修复无用的 WARNING
- 显示在镜像缺失时使用的标签
- 在创建卷之前应用 volumes-from
- 让 docker run 处理 SIGINT/SIGTERM
- 防止在 .dockercfg 不可读时崩溃
- 安装脚本应通过 https 而不是 http 获取。
- API,问题1471:为套接字权限使用组
- 正确检测IPv4转发
- 将 /dev/shm 挂载为 tmpfs
- 将 get.docker.io 从 http 切换到 https
- 让用户空间代理处理容器绑定的流量
- 更新 Docker CLI 以指定“Host”标头的值。
- 更改网络范围以避免与 EC2 DNS 冲突
- 在ping注册表时减少连接和读取超时时间
- 并行拉取
- 处理 ip route 显示无掩码的 IP 地址
- 允许使用 ENTRYPOINT 而不使用 CMD
- 解析FQN仓库名称时,始终将localhost视为域名
- 重构校验和
文档
- 添加 MongoDB 镜像示例
- 添加创建和使用docker组的说明
- 在文档中为示例和安装添加sudo
- 添加 ufw 文档
- 添加对 ps -a 的引用
- 添加有关Docker在LXC之上的高级工具的信息。
- 修复 docker run -dns 文档中的拼写错误
- 修复 ubuntu 安装指南中的拼写错误
- 修复关于添加docker组的文档
- 更新默认 -H 文档
- 更新readme以包含构建依赖项
- 更新 amazon.rst 以说明在 ec2 上运行 Docker 无需使用 Vagrant
- 文档中的 PostgreSQL 服务示例
- 建议默认安装linux-headers。
- 更改推特账号
- 澄清 Amazon EC2 安装
- 'Base' 镜像是过时的,不应再在文档中引用。
- 移动关于官方支持内核的说明
- 修复了 Safari 中徽标被压缩的问题
构建器
- 在Dockerfile中添加USER指令
- 为 Buildfile 添加 workdir 支持
- 为docker构建添加no cache
- 修复 docker build 和 docker events 的输出
- 仅将已知指令计为构建步骤
- 确保构建中的ENV指令每次执行都进行一次提交
- 在docker build ADD中禁止某些路径
- 构建用法中的仓库名称(可选标签)
- 确保ADD会创建所有内容为0755权限
远程 API
- 按最新创建日期对镜像进行排序。
- 重新设计注册表模块中的不透明请求
- 在 /events 中添加镜像名称
- 使用 mime 包解析 Content-Type
- 650 http 实用程序和用户代理字段
黑客
- Bash 补全:将命令限制为相关状态的容器
- 将docker依赖项覆盖率测试添加到docker-ci中
打包
- Docker-brew 0.5.2 支持和内存占用减少
- 在docker-ci中添加新的docker依赖项
- 撤销 "docker.upstart: 避免生成一个
sh进程"
- Docker-brew 和 Docker 标准库
- 使用docker发布docker
- 修复由 get.docker.io 生成的 upstart 脚本
- 启用文档以生成手册页。
- 在 Vagrant 中将 Bind 守护程序恢复为 0.0.0.0。
注册
- 改善身份验证推送
- 注册表单元测试 + 模拟注册表
测试
- 改进 TestKillDifferentUser 以防止在 buildbot 上超时
- 修复 TestBindMounts 中的拼写错误(在没有指定镜像的情况下调用了 runContainer)
- 改进 TestGetContainersTop 以使其不依赖于 sleep
- 放宽 lo 接口测试,允许 iface 索引 != 1
- 向 docker-ci 添加注册表功能测试
- 在服务器和工具中添加一些测试
其他
- 贡献:bash 补全脚本
- 客户端:添加 docker cp 命令并将复制 API 端点复制容器文件/文件夹到主机
- 当仅连接到stdin时,不要从stdout读取
0.5.3 (2013-08-13)
运行时
- 使用 docker 组进行套接字权限设置
- 在 upstart 脚本中启动 shell
- 处理 ip route 显示无掩码的 IP 地址
- 在环境变量中添加主机名
构建器
- 确保构建中的ENV指令每次执行都进行一次提交
0.5.2 (2013-08-08)
- 构建器:在 docker build ADD 中禁止某些路径
- 运行时:更改网络范围以避免与 EC2 DNS 冲突
- API:默认将守护进程更改为侦听unix套接字
0.5.1 (2013-07-30)
运行时
- 向
docker top添加ps个参数 - 为容器ID文件添加支持(类似于pidfile)
- 在默认环境中添加 container=lxc
- 支持无网络容器使用
docker run -n和docker -d -b=none
- Stdout/stderr 日志现在以 JSON 格式存储在同一文件中
- 默认分配一个 /16 的 IP 范围,若不可用则回退到 /24。尝试 12 个范围而不是 3 个。
- 将 .dockercfg 格式更改为 json 并支持多个远程身份验证
- 不要覆盖来自配置的卷
- 修复 EXPOSE 覆盖问题
API
- Docker 客户端现在设置用户代理 (RFC 2616)
- 添加 /events 端点
构建器
- ADD 命令现在支持 URL
- CmdAdd 和 CmdEnv 现在遵循 Dockerfile 设置的 ENV 变量
- 在ADD指令中使用755而不是700创建目录
黑客
- 使用辅助程序简化单元测试
- 改善 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 套接字传输中的错误
运行时
- 提高内核版本检测能力
- 主机目录可以使用 'docker run -b' 挂载为卷
- 修复仅连接到 stdin 时的问题
- 使用 'tar --numeric-owner' 以避免在多台主机上出现 uid 不匹配
黑客
- 改善测试套件和开发环境
- 移除对 'os/user' 的单元测试依赖
其他
- Registry: 更轻松地推送/拉取到自定义注册表
- 文档:添加术语章节
0.4.6 (2013-06-22)
- 运行时:修复一个导致创建空镜像(和卷)时崩溃的错误。
0.4.5 (2013-06-21)
- Builder: '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)
构建器
- 添加本地文件会检测 tar 归档并解压缩它们
- 添加改进:使用 tar 进行复制 + 自动解包本地存档
- ADD 使用 tar/untar 进行复制,而不是调用 'cp -ar'
- 修复ADD的行为以实现(主要)反向兼容、可预测且文档齐全。
- 修复一个导致构建失败的错误,如果 ADD 是第一条命令
- 为 'docker build' 提供更友好的输出
运行时
- 移除 bsdtar 依赖
- 添加 unix 套接字和多个 -H 支持
- 防止删除正在运行的容器
- 使用 go1.1 cookiejar
- 修复从正在运行的TTY容器分离的问题
- 禁止对单个镜像/仓库进行并行推送/拉取。修复
#311 - 修复在附加时Run命令中的竞态条件。
客户端
- 拉取时以人类可读方式显示进度条大小
- 修复 docker 版本的 git 提交输出
API
- 在History API调用中发送所有标签
- 在历史命令中添加标签查找。修复 #882
文档
- 修复 irc bouncer 示例中缺失的命令
0.4.2 (2013-06-17)
- 打包:将版本号提高以规避 Ubuntu 的一个错误
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
- 构建器:不要以 结尾
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构建器添加缓存
- 添加对使用原生 API 作为顶级命令的 docker 构建器的支持
- 在docker builder中实现ENV
- 在创建前检查命令是否存在并添加单元测试用例
- 使用空格代替制表符
运行时
- 在调试信息中添加 go 版本
- 内核版本 - 如果flavor为空,则不要显示破折号
注册表
- 在顶层添加 docker search 命令以搜索仓库
- 修复官方镜像特定标签的拉取问题
- 修复使用不同用户登录并尝试推送时出现的问题
- 改善校验和 - 异步计算
镜像
- 输出镜像到dot(graphviz)的图表
- 修复 ByParent 函数
文档
- 新介绍和高级概述
- 添加 docker 构建器的文档
- CSS 修复以改善 Docker 文档中 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内存不可用,修复索引越界崩溃
文档
- 各种改进
- 新示例:在两个 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:在守护进程启动时重启已崩溃的容器
- 运行时:提高测试覆盖率
0.2.0 (2013-04-23)
- 运行时:幽灵容器可以被终止并等待
- 文档:更新安装说明
- 打包:修复 Vagrantfile
- 开发:自动化发布Binaries和Ubuntu软件包
- 添加变更日志
- 各种错误修复
0.1.8 (2013-04-22)
- 动态检测cgroup功能
- 在内核<3.8上发出稳定性警告
- 'docker push' 在磁盘上缓冲而不是在内存中
- 修复 'docker diff' 对于已删除文件的问题
- 修复幽灵容器的'docker stop'
- 修复 pidfile 的处理
- 各种错误修复和稳定性改进
0.1.7 (2013-04-18)
- 容器端口在本地主机上可用
- 'docker ps' 显示已分配的 TCP 端口
- 贡献者可以运行 'make hack' 来启动一个持续集成虚拟机
- 简化 ubuntu 打包与上传流程
- 各种错误修复和稳定性改进
0.1.6 (2013-04-17)
- 使用 'docker commit -author' 为镜像记录作者信息
0.1.5 (2013-04-17)
- 禁用独立模式
- 使用自定义DNS解析器与'docker -d -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]]]'
- 各种错误修复和稳定性改进
- 用户界面润色
- 推送/拉取时的进度条
- 默认使用 XZ 压缩
- 使IP分配器变得懒惰
0.1.1 (2013-03-31)
- 显示简短ID以方便使用
- 稳定进程管理
- Layers 可以包含提交信息
- 简化 'docker attach'
- 修复重新附加的支持
- 各种错误修复和稳定性改进
- 运行时自动下载
- 推送时自动登录
- 增强的文档
0.1.0 (2013-03-23)
初始公开发布
- 实现注册表以推送/拉取镜像
- TCP端口分配
- 修复 Linux 上的 termcaps
- 添加文档
- 使用 Vagrantfile 添加 Vagrant 支持
- 添加单元测试
- 添加仓库/标签以简化镜像管理
- 改进分层实现