重要提示:Docker 1.13引入了插件管理api,之前在1.12版本中是实验性质的,在升级到1.13之前需要卸载1.12的插件。卸载的命令为 docker plugin rm。如果不卸载插件就升级到1.13,Docker daemon启动时会出现下面的错误:
Error starting daemon: json: cannot unmarshal string into Go value of type types.PluginEnv

人工卸载的方式是:
1. 删除/var/lib/docker/plugins/plugins.json
2. 重启docker daemon
3. 重新安装插件

编译
• 编译时可以指定一个image作为缓存,提升build的速度
• (实验)支持编译时合并镜像分层
• 修复Dockerfile如果有”#”注释的一个bug
• 编译时采用分数形式表示步骤,如: 1/5
• 增加build是build-context的压缩功能
• 支持在编译时指定网络
• 修复label参数在docker build 和 docker run的不一致问题
• 修复一个overlay层的老bug,该bug不是必现,跟时间有关
• 没有被使用的编译参数会导致编译失败,修改为警告
• 修复windows上的一个编译时缓存问题
• 允许windows中使用USER指令
• 处理windows下命令大小写不敏感问题

发行版
• 支持Ubuntu 16.04 Xenial on PPC64LE
• 支持Ubuntu 16.04 Xenial on s390x
• 支持Ubuntu 16.10 Yakkety Yak on PPC64LE
• 支持VMWare Photon OS
• 增加shell的自动补全
• 增加中国区的镜像站点用于安装
• 支持Ubuntu 16.10 Yakkety Yak
• 增加支持Fedora 25
• 增加支持aarch64

分发
• Notary升级到0.4.2
• 多用户同时push时,避免不必要的blob提交
• 允许在外部存储存放registry credentials

日志
• 统一所有log driver的默认tag
• 通过bufio的reader 优化多行日志输出
• 在windows上支持syslog
• 增加Logentries 驱动
• 在AWS log driver上支持tag
• 增加fluentd对本地unix socket的支持
• 增加windows对fluentd的支持
• 修复docker logs –tail返回行数不足的bug
• 优化Splunk 驱动
• Splunk 日志驱动,允许配置格式,并且允许忽略连接检测

网络
• 支持普通容器加入swarm模式的overlay网络
• 在服务中支持主机端口导出
• 在windows server 2016支持overlay 网络(需要2016的最新更新)
• 改变一个默认路由从FORWAR到DROP
• 允许在windows上预先指定静态IP
• 修复IPv6环境下–publish不工作问题
• 修复network inspect中代掩码网关的显示问题
• 修复一桥接包含多个地址情况下,可能导致–fixedcidr不能获得正确地址问题
• docker network insepct中增加创建的时间戳
• docker network inspect中显示其他节点信息
• 在VIP上允许ping服务

插件
• PluginV2正式启用
• 允许强制删除插件
• 允许动态重复加载授权插件
• docker plugin ls增加描述
• docker plugin inspect 增加格式化选项
• 增加docker plugin create 命令
• 发送TLS的认证到授权插件
• 在swarm-mode中支持全局网络和ipam插件
• 将docker plugin install 拆分为/privileges和/pull两个API

API和客户端
• 支持从compose部署stack
• (实验)实现checkpoint和restore
• docker info增加格式化选项
• docker volume create 删除 –name选项
• 增加docker stack ls
• 增加选项区分swarm-mode和非swarm-mode的容器
• 创建服务时增加–env-file选项
• 为docker stats增加格式化选项
• 为docker node ps 默认查看本机
• 为docker service create增加–group
• 为service/node/stack 的ps选项增加–no-trunc选项
• 支持以前的server版本
• 通知客户端容器正在删除中
• 增加Isolation字段到/info接口
• 增加userns到/info接口
• Services接口中不允许在一个请求要求多个模式
• 在/containers/create接口中优化capability,用于方便和安全的指定 mount点
• 为netwok/volume ls增加格式化选项
• 允许docker inspect查看任意资源
• 为docker run/create增加–cpus属性,并且增加NanoCPUs字段到HostConfig
• 重构CLI让image和container更统一
• 在service ls中删除COMMAND列
• 为docker events增加格式化选项
• 为docker node ps增加多节点支持
• 强制docker images大小显示保留两位小数
• 为docker run增加–dns-options
• 在commit事件中加入Image ID
• 为docker info增加额外的二进制版本信息
• 在docker info中增加Manager Address信息
• 为docker images增加新的过滤器

Runtime
• 增加–experimental用于启用实验特性,避免通过不同build来区分
• 为daemon增加–shutdown-timeout参数,指定容器的停止超时(默认10s),用于daemon退出时容器安全退出
• 增加–stop-timeout参数,指定容器停止的超时(默认10s)
• 增加–userland-proxy-path 允许手动设置docker-proxy
• 为dockerd增加–init参数
• 增加–init-path允许手动指定docker-init的路径
• 支持动态加载非安全的registry
• windows上支持storage-opt设置
• 增加docker run –rm的稳定性,从客户端移到服务器端
• 支持–cpu-rt-period 和 –cpu-rt-runtime 允许使用实时线程(CONFIG_RT_GROUP_SCHED在内核中定义后)
• 允许并行stop, pause, unpause容器
• 在overlay2上实现XFS的quota功能
• 修复server tasks 的过滤器问题
• 允许docker-engine运行在一个user namespace中
• 修复devicemapper中,一个设备延迟删除和恢复时的潜在竞争问题
• 为windows 增加docker stats
• 允许–userns和–pid=host, –net=host一起使用
• (实验)增加Prometheus支持
• 修复当NetworkDisabled=true时的docker stats问题
• 在windows上增加docker top支持
• 纪录exec’d的pid
• 支持通过getent查找user/groups
• 为docker system 增加df和prune子命令
• 修复xfs_max_retries为0时,容器不能停止和kill的问题
• 修复一个docker cp在CentOS上问题
• 改进overlay(2) 驱动
• 增加--seccomp-profile参数
• 修复一个–default-ulimit的bug
• 为老内核编译overlay增加一个workaround
• 增加TERM环境变量到docker exec -t
• 修复一个docker kill的信号处理bug


• 支持为Volume打标签
• 支持通过标签过滤卷
• 允许强制删除卷
• 增强docker volume inspect
• 支持通过hostname访问NFS卷

安全
• 修复selinux在容器中共享卷的标签bug
• 禁止/sys/firmware/**被apparmor访问

废弃功能
• 废弃Docker daemon命令,用dockerd取代
• 废弃不带版本的API
• 不再支持Ubuntu 15.10
• 不再支持Fedora 22
• 不再支持Fedora 23
• 废弃repo:shortid 方式进行docker pull
• 废弃overlay/overlay2的d_type字段
• 在Dockerfile中废弃MAINTAINER命令
• 废弃/images/json的filter字段
• 废弃设置重复的引擎标签
• 废弃”top-level”网络信息

评论
本次版本是半年来的第一个大版本,主要集中在:
 对问题的修复
 对现有功能的增强优化
 优化插件管理
 windows系统的支持增强
 swarm-mode的完善