Docker 1.10:新的Compose文件、安全性增强、网络功能以及更多
我们怀着兴奋之情向大家介绍Docker 1.10,其中满载着大量各位朋友一直期待的全新功能特性。
现在我们已经能够更轻松地利用Docker Compose定义并运行复杂的分布式应用。Compose所带来的强大容器编排能力如今已经可用于网络及分卷的设置。在大家的开发设备当中,各位可以将多个网络层以及复杂的存储配置添加到应用设置当中,从而保证其与生产环境下的设置完全相符。接下来,大家可以将同样的配置从开发环境中提取出来,并用于持续集成、分段乃至贯穿整个生产流程中的应用运行。
与往常一样,我们在此次新版本中添加了一系列安全更新。大家长久以来强烈要求的诸多功能特性如此也一一成为现实:用于隔离系统用户的用户命名空间机制、用于过滤系统调用的seccomp配置文件以及一套用于限定Engine功能访问的授权插件系统。
另一大安全强化机制在于镜像ID如今能够体现对应镜像之内的内容,其作用方式类似于Git提交中的提交内容表示。这意味着大家可以通过指定镜像的ID确保自己正在运行的内容与预期切实相符。
网络功能更上一层楼
我们曾在上套Docker Engine版本当中添加了一套新的网络系统。其允许大家创建虚拟网络并向其中添加容器,从而创建出最适合应用程序实际需要的网络拓扑结构。除了在Compose中添加网络支持能力外,我们还实现了以下几项朋友们一直盼望的新功能:
- 在网络环境内使用链接: 链接仍然与以往一样能够在默认桥接网络内起效,但大家原先无法在网络中使用自己创建的链接。现在我们添加了对应的支持功能,意味着大家可以定义不同容器间的关系,并能够在特定容器之内将某主机名设定为别名。 (例如--link db:production_postgres)
- 全网容器别名: 链接机制允许大家将某主机名以别名方式分配给特定容器,但大家现在也可以在完整的网络环境内保证单一容器能够通过多个主机名进行访问。
- 内部网络: 将--internal标记传递至network create以限制网络中的出入流量。
- 自定义IP地址: 在容器运行或者被添加到网络当中时,大家现在可以为其分配一个自定义IP地址。
- 域名解析DNS服务器: 主机名查找通过DNS服务器而非/etc/hosts完成,从而进一步提升其可靠性与可扩展能力。
- 在全部受支持Engine内核版本之上构建多主机网络: 多主机叠加驱动程序如今可在较早内核版本(3.10及以上版本)中正常起效。
Engine 1.10
除了新的安全与网络功能,我们还为Engine添加了其它一系列新特性:
- 内容可寻址镜像ID: 现在镜像ID如今能够体现对应镜像之内的内容,其作用方式类似于Git提交中的提交内容表示。这意味着大家可以通过指定镜像的ID确保自己正在运行的内容与预期切实相符。这项改进源自Docker 1.6版本中的镜像摘要机制。
- 事件流得到改进: docker events命令与事件API端点都已经迎来改进及简化。各事件现在始终配合一种资源类型进行结构构建,而其执行指向该对应资源。另外,事件还加入了针对存储分卷与网络的操作选项。
- push/pull性能与可靠性得到改进: 各层如今以并发方式进行推送,意味着其推送速度得到显著提高(约为原先的三倍)。另外,提取的速度与可靠性亦有一定程度提升——这主要利益于经过简化的协议以及更出色的重试与回退机制。
- 实时更新容器资源管理: 在设定容器能够使用的资源类型时(例如内存使用量),大家过去必须重新启动容器以实现相关变更。现在我们已经能够通过新的docker update命令在运行过程中对资源管理进行更新。
- 守护程序配置文件: 现在我们能够利用单一文件内容更改与部分重载的方式配置守护程序选项,而不必再对其进行重启——举例来说,大家可以在无需重启的前提下实现新守护程序标签设定与调试日志记录功能启用。
- 临时文件系统: 现在我们已经能够轻松通过为docker run添加--tmpfs标记以创建临时性文件系统。这项能力非常实用,特别是在容器内的某些软件需要能够写入磁盘上的特定位置、而当前root文件系统却处于只读状态的情况下。
- 磁盘I/O限定: 多种磁盘I/O限定设置选项已经添加完成,具体包括docker run:--device-read-bps, --device-write-bps, --device-read-iops, --device-write-iops以及--blkio-weight-device.
- Splunk日志记录驱动程序: 用于直接将容器日志发送至Splunk日志记录服务。
- 在重启守护程序时以正确顺序启动链入容器: 这不是什么大事,但只要一经尝试,大家就会发现其实现难度其实远超想象。如果我们重启一项包含有链入容器的守护程序,那么其有时候会由于链入容器尚未开始运行而出现启动失败。Engine现在将尝试以正确顺序启动这些容器,从而保证整个流程顺利完成。
此次新版本中还弃用了一些固有功能,包括停止对Fedora 21以及Ubuntu 15.04的支持能力,所以请一定提前检查以确认这些调整是否会对您造成影响。另外,如果大家编写了一套存储分卷插件,也请检查此次经过变更的分卷插件API以了解相关变动。
这里要感谢参与这一新版本开发的技术人员——特别是Qiang Huang、Denis Gladkikh、Dima Stopel以及Liron Levin。
另外,尝试将Docker方案引入开发流程的最简便方式就是安装Docker Toolbox——大家可以点击此处进行获取。
Swarm 1.1
Docker Swarm是Docker的一套原生集群方案。其能够显著降低Engine集群的管理与部署难度。Swarm同时也扮演着Docker通用控制面板(Docker Universal Control Plane,这是一款用于实现Docker应用程序及集群部署与管理的内部工具)集群化与调度基础的角色。
早在去年11月,我们就已经公布了Swarm的首个生产就绪版本,即1.0版本。此次发布的新版本包含一系列增量式改进,特别是添加了多项大家期待已久的功能特性:
- 节点故障情况下的容器重新调度:一旦某一节点发生故障,Swarm现在能够选择性地尝试将负载调度至正常运行节点当中,从而保证其继续运行。这还是一项实验性功能,因此目前其实际效果还不够完美,但能够做出尝试仍然令人颇感欣慰。
- 更出色的节点管理能力: 如果Swarm无法连接至某节点,其现在将进行重试而非直接放弃。另外,其还会在docker info当中显示相关状态与各类错误信息,帮助管理人员轻松完成调试。
同时敬请关注2月29号周一召开的Swarm Week系列活动!
如果大家还只是Swarm新手或者希望了解更多深层知识,那么Swarm Week将成为各位将相关信息一网打尽的绝佳平台。我们将每天设定一个主题并展开深入探讨。
因此请牢牢锁定Docker博客,共同迎接#SwarmWeek于29号周一全面来临!
Machine 0.6
Machine可谓Docker Toolbox当中的核心组成部分,而此次Machine 0.6版本的主要诉求则在于尽可能提高其与VirtualBox之间的兼容能力以及在Windows平台上的运行可靠性。相信这会显著提高Toolbox的使用体验。
此次还专门针对Machine高级用户推出了一系列新功能:
- 不必再输入“default”: 现在即使我们不指定名称,各命令将直接作用于“default(默认)”虚拟机对象。
- 新的配置命令: 当主机发生故障或者配置出现偏差时,这条命令能够有效对相关主机进行重新配置。
Registry 2.3
在Registry 2.3当中,我们在性能表现与安全性层面做出了诸多改进。其目前支持新的manifest格式,同时使得各层能够在不同镜像之间实现共享,另外Registry当中的现有各层亦同时迎来性能提升。
原文链接: Docker 1.10: New Compose file, improved security, networking and much more!