Skip to content

Latest commit

 

History

History
126 lines (108 loc) · 10.9 KB

docker-1.10.0-changelog.md

File metadata and controls

126 lines (108 loc) · 10.9 KB

Docker 1.10.0 Changelog

英文链接地址:docker-1.10.0 CHANGELOG.md

Docker粉们,是否还记得上一个Docker大版本的发布是什么时候?如果已经模糊的话,小编告诉你,是4个月前的10月14号。如今,就在中国的春节即将到来之际,Docker官方发布了跨时代的Docker 1.10.0版本,着实为猴年的到来献上了最大的一份礼。

如果说Docker 1.9.0的overlay网络意味着Docker集群能力方面质的飞跃,那么这次发布的Docker 1.10.0更是多个方面实现重大突破。总体而言,小编认为,意义非凡的变化与演进,以及看点,主要有以下这几方面:

  • Docker Engine支持配置热更新,容器与Docker Daemon的耦合性大大降低
  • Docker API的完善程度稳步上升,容器隔离维度更细致,更全面
  • Docker安全划时代的支持了User Namespace与seccomp,安全程度直逼虚拟机
  • 镜像格式首推“内容寻址方式”,可以做到Docker镜像的全球唯一性,镜像的安全与存储都有大的改观
  • 网络能力,无论单机,还是跨主机,功能逐渐完善,成熟度稳步提升,发展之迅速不得不令人佩服
  • 稍显惋惜的是,传统的容器管理工具LXC即将退出Docker的舞台,伴随Docker接近三年的时间,终于被更完善的容器管理方案取代,同时Docker的飞速发展以及追求卓越也一览无余

看来Docker 1.10.0的主要变化,我们来看一下这一大版本更为细节的变化,相信Docker Engine、安全、Distribution、网络、日志、存储卷Volume等多方面,总有一款适合您。详情请见下文:

1.Docker Engine(Runtime)

  • 开发了新命令docker update,允许用户更新运行中容器的资源限制(对于资源的重分配意义很大,后期可以考虑集成)
  • docker run命令添加flag参数--tmpfs,用于为容器挂载一个内存文件系统,便于文件的快速读写
  • docker images命令添加flag参数--format
  • 允许用户在文件中配置Docker Daemon的运行参数,并通过SIGHUP信号对其进行热加载,换言之,Docker开始支持动态加载配置参数
  • 更新docker events命令的内容输出,使其包含更多的元数据以及事件类型;但是,需要注意的是,此改动完全兼容Docker的API,但是在Docker CLI中仍未支持
  • docker run命令添加flag参数--blkio-weight-device, 为docker run命令添加flag参数--blkio-weight-device
  • docker run命令添加flag参数--device-read-bps--device-write-bps,用于磁盘I/O的读写BPS
  • docker run命令添加flag参数--device-read-iops--device-write-iops,用于磁盘I/O的iops
  • docker run命令添加flag参数--oom-score-adj,用于容器进程发生oom现象时,如何选择kill进程的评分依据
  • 为命令run,attach,start以及exec添加flag参数--detach-keys,以此来覆盖从容器退出的的默认键盘键,比如使用Docker客户端自定义的ctrl+a来作为这些命令的ESC键
  • docker run,docker create以及docker build命令添加--shm-size,用于动态内存文件系统的大小(/dev/shm等同于tmpfs)
  • 丰富docker info命令的输出内容,为其添加运行容器的数目,停止容器的数目以及挂起容器的数目
  • 丰富docker info命令的输出内容,为其添加操作系统类型以及机器结构
  • docker daemon命令添加flag参数--cgroup-parent,从而为所有容器设置父cgroup,即挂载于制定的cgroup路径下
  • docker cp命令添加flag参数-L,使得cp命令不是仅仅拷贝符号链接,而是拷贝符号链接真实指向的内容
  • 新增过滤规则status=dead,使命令docker ps的输出更符合用户需求
  • 更改docker run命令的返回码(exit code),从而区分在命令返回的原因究竟是Docker Engine的错误,还是容器内部应用自身的错误
  • 扩展docker events命令中添加--since--util参数后的内容输出,使其支持时区以及纳秒
  • docker stats命令添加flag参数-a/--all,用于显示运行中容器以及停止容器的资源使用
  • 将默认的cgroup-driver设置为cgroupfs
  • 当使用docker build -t命令为某一镜像设置标签时,Docker Daemon触发一个tag事件;换言之,Docker Daemon新支持一种tag事件
  • 重新启动Docker Daemon时,尽最大的努力来合理安排link容器的启动顺序
  • 允许docker build命令为镜像设置多个标签(tag)
  • 对任意url请求添加OPTIONS请求,而不是修改跨域存在的问题
  • 修复docker build命令的flag参数--quiet,使其真正意义上实现quiet,即不输出构建过程的内容
  • 修复命令docker images --filter dangling=false,现在真正意义上显示的是所有的non-dangling镜像
  • 修复命令docker volumes ls --filter dangling=false,现在真正意义上显示的是所有的non-dangling的存储卷
  • 修复重启容器时因为容器内部进程长时间处理SIGTERM信号未果儿存在的资源竞争BUG
  • Docker Daemon中加入了IBM公司的的共享文件系统GPFS
  • 修复Bug,使得volume driver不允许被容器化
  • 删除容器过程中,不删除有命名的挂载点
  • 修复阻止容器启动的某些不知名Bug
  • 禁止在重启过程中对容器执行docker exec操作
  • devicemapper方面,当Docker Daemon重启过程中--storage-opt dm.basesize参数的增长会导致基础设备存储空间的增长

##2.安全

  • Docker Daemon命令添加flag参数--userns-remap,用以支持Linux Namespace中的用户命名空间(User Namespace),之前Docker对于用户命名空间的支持仅仅存在于Docker试验版。
  • docker run命令的flag参数--security-opt中,添加对自定义seccomp文档的支持,主要用户对容器应用在系统调用方面实现沙箱化
  • 为Docker添加默认的seccomp文档,在容器的系统调用方案实现更为细粒度的隔离
  • docker daemon命令添加flag参数--authorization-plugin,用以支持自定义的访问控制列表(ACL)
  • 当用户使用BTRFS时,允许用户在容器中运行SELinux

##Distribution

  • 为AuthConfig数据结构添加一个名为registryToken的属性。该Token属性允许API客户端从一个镜像仓库中获取用户的认证token,然后将token直接发给远程API
  • 对镜像和镜像层实现内容寻址的存储方式。内容寻址指的是:通过镜像层的内容来唯一的决定一个镜像的ID,从而保证镜像的全局唯一性。需要注意的是:当Docker第一次运行的时候,会有一个对原有镜像进行格式转换的过程。此过程很可能会占用很长时间,主要取决于当前Docker Daemon所管理镜像以及容器的数目大小。从此,镜像中不再有parent image的概念,而是指向一系列的镜像层引用。同时docker load/docker save的压缩包现在会包含内容寻址镜像的配置文件。
  • 支持新的menifest格式("schema2")
  • 对镜像下载和镜像上传做了众多改善,比如:性能的提高,下载失败时的重试机制,客户端失联的取消操作等
  • 对镜像仓库v1协议的回调限制
  • 新版的Notary支持,其中包含了客户端的pkcs11。ps:notary是Docker一款官方推出的在客户端和服务端通过受信集合来交互的工具
  • 修复Bug,此Bug在先前的版本中出现时会导致Docker Daemon因为等待一个并不存在的进程去下拉镜像而僵死

##3.网络

  • 对于容器而言,使用基于DNS的发现机制,取代原先的/etc/hosts方式
  • docker network connect命令中添加网络方面的别名,如--net-alias,以及docker run命令时的--alias
  • docker run以及docker network connect命令添加参数--ip--ip6,用以在一个网络中为容器自定义IP
  • docker network create命令添加参数--ipam-opt,用于传入自动的IP地址管理(IPAM)的选项
  • --cluster-store-opt参数中添加kv.path
  • --cluster-store-opt参数中添加discovery.heartbeatdiscovery.ttl参数,用于配置服务发现的TTL以及心跳周期
  • docker network inspect命令添加--format参数
  • docker network connect命令添加--link参数,用以提供容器级别的别名
  • 通过远程IP地址管理器(IPAM)插件的形式,支持???????
  • docker network disconnect命令添加--force参数,用以强制容器从某个network中断开连接
  • 在Linux内核版本3.10+上,使用内嵌的overlay驱动来完成跨主机的网络互联
  • 在用户定义的network中,支持在docker run命令中使用--link参数
  • 扩展docker network rm命令,使其有能力一次删除多个network
  • docker inspect命令的输出内容中添加所有容器的名称
  • docker network inspect命令中,加入为用户自定义网络自动生成的子网地址
  • docker network ls命令添加flag参数--filter,用以隐藏预先定义的networks
  • 支持已停止容器的 network 连接/断开功能
  • docker inspect命令的返回结果中添加network id
  • 修复MTU的bug,之前版本Docker在有两条或者两条以上路由记录时启动就会失效
  • 为容器修复重复IP地址的bug
  • 修复了有时Docker Daemon在创建默认网络时存在的bug
  • 在使用--net=host参数时,不为容器替换127.0.0.1的域名服务器地址

##4.日志

  • 新增日志驱动Splunk
  • 在TCP+TLS的基础上,完善对Syslog的支持
  • 扩展docker logs --since--until命令,用以支持纳秒
  • 扩展日志驱动awslogs,使其当Docker Daemon在AWS EC2上运行时,可以自动监测正确的Amazon CloudWatch的日志时区

##5.存储卷Volumes

  • 为Docker的存储卷添加设置mount propagation mode的支持
  • 为存储卷插件的API添加lsinspect接口
  • 修复了不能从命名存储卷中拷贝数据的bug
  • 允许外部存储卷驱动管理异步存储卷

#6.镜像构建器(builder)

  • .dockerignore文件中添加对**的支持,实现通配多级目录
  • 修复Dockerfile中对UTF-8编码字符的处理
  • 修复从标准输入读取内容时的权限问题

#7.客户端

  • 通过使用DOCKER_API_VERSION环境变量来支持API版本覆盖的支持

#8.MISC

  • systemd:在systemd服务的配置文件中,为LimitNPROC添加TaskMax参数。

#9.遗弃

  • 从Docker Daemon移除对LXC的支持,在docker 1.8版本时,Docker用来管理容器的驱动之一——LXC驱动就已经被标记为deprecated,现在此驱动已经被移除
  • docker daemon命令中移除flag参数--exec-driver,因为此驱动已经不再会被使用
  • 移除部分Docker CLI方面的参数,比如(-rm,选择用--rm来替代)
  • 在容器启动的API中遗弃数据结构HostConfig
  • 由于某些特定Linux版本发行版项目的终止,从而遗弃这些项目下docker软件包的支持;比如 Fedora 21和Ubuntu 15.04(vivid)
  • 遗弃docker tag命令的-f参数