Docker 1.11发布:第一个基于containerd,兼容OCI标准的发行版


【编者的话】Docker 1.11是第一个基于containerd,兼容OCI标准的发行版,这是Docker有史以来第一次大规模重构引擎,对于1.11版本来说,第一优先级就是整合后功能正常,不需要改变既有命令行或者API接口。然而,实现这些意味着后台整合需要优化大量的用户体验。另外,它还带来了很多新的可能性,包括允许对容器透明地进行引擎的重启、升级等。

@Container容器技术大会将于6月4日在上海光大会展中心国际大酒店举办,来自Rancher、携程、PPTV、蚂蚁金服、京东、浙江移动、海尔电器、唯品会、eBay、道富银行、麻袋理财、土豆网、阿里百川、腾讯游戏、点融网、华为、轻元科技等公司的技术负责人将带来实践经验分享,5月7日之前购票只需438元,欢迎感兴趣的同学抢购。

我们非常兴奋将Docker引擎版本1.11介绍给大家,这是第一个构建於runCcontainerd之上的发行版,也是自从去年六月份贡献了业界标准容器格式和运行方式,并被纳入Linux基金会以来,第一个遵循OCI标准的发行版。

一年来,Docker通过与OCI通力合作,使得它对用户更加稳定可用。自从2015年12月开始引入containerd(控制runC的守护进程)以来,将Docker分解为轻量级可重用模块一直是我们努力的方向。从这个版本开始,Docker引擎完全构建于containerd之上,也就是说新Docker就是使用OCI。对于所取得的成绩,我们非常骄傲,要知道所有这些容器标准化工作都是由大约40多人的团队完成的。

除了这些在聚会中让朋友印象深刻的技术细节之外,新发行版给我们带来什么不同呢?好吧,简单回答是:还……没有什么不同!至少现在是,让我来解释一下为什么这个版本仍然是非常值得期待的……

这是因为Docker有史以来第一次大规模重构引擎,对于1.11版本来说,第一优先级就是整合后功能正常,不需要改变既有命令行或者API接口。然而,实现这些意味着后台整合需要优化大量的用户体验。
1.png

稳定性和性能

随着containerd整合完成,意味着Docker代码很大一次的清理工作完成,而且修复了一系列历史上遗留下来的bug。事实上,将Docker分解成若干互不依存的模块(原文用了tools)意味着朝着高可维护性转变,最终将会提高软件质量。

从性能角度来看,由于采用了更多进程间通讯,我们更大精力放在确保版本1.11不会比以前慢。现在我们可以很高兴地说在并发创建容器时,比以前版本更快。尽管为了确保正确性做了刻意的选择,但是在未来性能方面一定会有更大的提高。

创建容器运行后台生态系统

runC是第一个满足Open Containers Runtime specification 标准的实现,默认执行器绑定於Docker引擎。感谢开放标准,未来的引擎可以选择不同执行器,因此应用可以选不同后台运行生态系统,而不用改变Docker本身。通过这一拆分,合作伙伴可以根据需求开发自己的执行器,并且因为跟引擎版本无关,也就不需要长时间等待被整合到核心代码中,可以在任何时候贡献给社区。

这对用户意味着什么呢?意味着更多的选择:运行时环境(runtime)现在是可插拔的(plugable)。随着Docker模块化设计理念的深入,Docker引擎将会和runC一同发布,内置根据不同平台、安全和性能的需求,允许从一堆可选容器执行器中做出选择的功能。原来从引擎内运行容器,现在将这一功能拆分后,给用户带来了更多可能性。例如,1.11朝着允许引擎重启、升级而不需要影响容器运行迈出了很大一步,提高了容器的可用性。这个功能是Docker用户最关心的功能,实际上,在新架构上,甚至可以重启containerd而不影响容器运行。

可以从这篇Michael Crosby写的博客中了解更多关于containerd的信息。

更多功能

除了上述架构上巨大改变外,引擎、Compose、Swarm、Machine和Registry中都加入了很多新功能。

Engine 1.11

  • DNS轮询负载均衡:支持容器之间通过容器网络进行负载均衡。如果多个容器共享同一个别名,Docker发现服务会从轮询DNS中返回所有容器的地址。
  • VLAN支持(实现性阶段):VLAN support尚属于试验阶段,可以与现有网络架构更好整合。
  • IPv6 服务发现:引擎基于DNS发现服务,可以返回AAAA记录。
  • Yubikey硬件映像签名:几个月前加入了使用硬件Yubikeys映像签名的功能,当时还是实验性的,本次发行版则是稳定版本,可以从如下博客中了解更多
  • 网络和卷标签:可以强制性附加key/value到网络和卷上,同样也可以对容器和映像贴标签 。
  • 使用device mapper设备更好地处理低容量场景:通过加入dm.min_free_space选项更好地处理超出磁盘可用空间问题。
  • 在docker inspect中加入一致性状态域:尽管是个小功能,但对DockerAPI的用户带来巨大好处。Docker inspect带有一个Status域,定义容器的状态值(running、stopped、restarting等等) ,从下文中了解更多


从release notes中了解更多功能

Compose 1.7

  • docker-compose up命令内置新的--build 选项:这是docker-compose build和docker-compose up的缩写版本;因为build操作有可能比较慢,compose默认每次运行时不运行build;但是如果确认自己平台build比较快,可以使用这个参数确保每次环境都是最新的。
  • docker-compose exec 命令:和 docker exec 命令等效。


从release notes中了解更多功能

Swarm 1.2

  • 稳定版容器调度:之前Swarm版本中,加入了当节点失效是,容器会重新调度的测试功能。此功能在这一版本中已经稳定可以用于生产系统。
  • 容器调度出错时定位更准确:例如,当某个限制失败时,系统可以清晰定位哪个限制出错。


从release notes中了解更多功能

Machine 0.7

这一版Machine中,微软Azure驱动使用新Azure API,认证更加方便。客户从Azure blog中获得更多信息。还有很多其他更新,参见完整release notes

Registry 2.4

  • 垃圾搜集:方便系统管理员将用户删除的数据清理干净的工具。参见文档
  • 更高效稳定S3驱动:S3 存储驱动基于官方Amazon S3 SDK 之上开发, 在性能和稳定性上有很大提升。


从release notes中了解更多功能

下载并尝鲜 Docker 1.11

最简单尝鲜的方法就是下载Docker Toolbox,对其它平台来说,参见安装手册

所有这些资料都有Mac和Windows版本,利用Docker新功能将其部署于开发环境尚属于beta版本,从以下地址注册尝鲜

原文链接:Docker 1.11: The first OCI-compliant runtime, built on containerd(翻译:杨峰 审校:吴佳兴)

0 个评论

要回复文章请先登录注册