欢迎来到爱学习爱分享,在这里,你会找到许多有趣的技术 : )

[译] Docker 容器的下一步计划

Docker 880℃
点击上方蓝色字关注我们~

The future of Docker containers

May 15, 2019, This article was contributed by Sean Kerner

Michael Crosby是如今Docker container(Docker容器,一种轻量级的虚拟化解决方案,可以做到应用级的隔离)的开发者中最有威望的一位了,他目前在领导containerd的开发,也是Open Container Initiative (OCI)的Technical Oversight Chair。在DockerCon 19会议上,Crosby有一个session的站立会议,其中他介绍了Docker container方案的过去、现在和将来。Docker最早期是完全跟Linux绑定的,今后很大可能也是这样。Crosby回忆Docker是在2013年开始使用LXC来起步,此后的6年它发展了更多的技术,首先Docker领导了libcontainer的开发,最近在Linux Foundation又发起了多方协作的OCI,会成为container runtime的一个标准。这个标准包括runc,是Crosby领导的containerd里面的核心container runtime。Containerd是Cloud Native Computing Foundation (CNCF基金会)维护的项目,也是少有的跟Kubernetes一样可以被称为“毕业了”的项目,现在是CNCF的各个项目里面最稳定、成熟的标杆。

Docker 19.03

Docker有两个版本,一个是开发进度保守的企业版,一个是快速迭代的社区版。在DockerCon 19,基于Docker Community Edition (CE) 18.09的Docker Enterprise 3.0发布了。Docker开发者目前正在继续完善下一个Docker CE的主要版本19.03。

Docker CE的版本号包含了发布时间,也就是说19.03会在3月份发布,不过这次没能如期发布。Docker的release cycle近期有一些delay,所以最近的几个release都跟版本号指示的时间对不上。例如Docker CE 18.09其实是在2018年11月份才公布的,而不是2018年9月份。GitHub上的Docker CE仓库里可以看出,19.03的feature freeze(不再接受新feature的时间点)是在3月22日,目前beta 4 release预计会在5月13日发出,所以最终正式版的发布预计也会是在2019年5月份。

Docker CE 19.03里面的主要新功能是完整支持NVIDIA GPU,这是第一次Docker能无缝集成GPU支持。NVIDIA GPU的支持,意味着container里的workload可以充分利用GPU的计算能力,也就是说Docker可以被用于人工智能以及机器学习的场景了。

Containerd也有大幅度改进,它的版本号升级到了1.2。Containerd 1.2包含很多bug fix以及performance提升,新功能包括继承了一个新版runtime能够支持gRPC接口,更加方便管理container。整体来说,Docker核心的那些模块改动还是很少的。Crosby说:“虽然我们现在用有的功能和机制跟2013年的Docker非常像,不过这些机制其实都经历了很多优化,也更加成熟了。”

The future of Docker

Docker containers起初就决定尽量多利用Linux本身的功能。今后,Docker也需要更好的利用kernel的新功能。“Containers全部都是基于各种kernel功能的,例如cgroups, namespaces, LSMs, 还有seccomp”,Crosby说,“我们仍然需要把这些功能紧密结合起来,实现好container。”

今后的container和Docker会怎样呢?Crosby认为今后主要是处理好近几年萌发出来的一些新需求。例如利用好Linux 5.0(及更高版本)的新功能,也要能支持更多种不同类型的workload,包括stateful workload(带状态机的任务,当前Docker主要支持stateless workload不会保存当前状态)。Edge workloads也需要更好的支持,它们是需要部署在网络的端侧的任务,而不是跟以前一样部署在核心云上。IoT (Internet of Things)以及嵌入式的任务,在小型设备上以及工业用途环境里面也会是2019年Docker的一个重要使用场景。

Linux kernel的eBPF功能,也是Docker需要尽快充分利用的功能,比如可以用它来更新seccomp filter。Crosby认为seccomp和BPF能够在kernel里更自如的截获系统调用,就能让container拥有更强大的控制能力以及安全性。

Control groups (cgroups) v2也是一个Docker可以多加利用的功能。Cgroups v2在Linux 4.5的时候加入kernel,不过Docker当时并没有马上用上这个功能,包括Red Hat的Fedora community Linux发行版也没有缺省打开cgroups v2,估计会在今年11月的Fedora 31 release里面包含。Cgroups v2能让Docker更好的隔离以及管理系统资源。

Docker还计划改进user namespace的支持,尤其是用于支持rootless container。这样能够避免过多授予运行中的container太多permission,从而改善安全性。利用user namespace来运行rootless Docker container并不是一个新想法,不过很快它就会成为现实了。Crosby认为:“最终,多年发展下来,user namespaces达到了比较好的状态,我们可以真正利用它来实现unprevileged container了”。

Kernel这边还有更多的安全功能也对Docker非常有用,SELinux和AppArmor已经不再是仅有的Linux Security Modules (LSMs)了。新出现的LSMs例如Landlock,Docker开发者就正在实现对它的支持。有了eBPF之后,Docker开发者进而拥有了直接写自己定制的LSM的能力,此外还有seccomp BPF,也是非常有价值的功能。


Making containers more stateful

接下来一段时间Crosby最关注的领域,就是改善Docker对stateful capability的支持,他觉得当前所支持的能力还是太弱了。更好的stateful capability包括对单个container的备份、恢复、克隆,还有迁移。他解释说当前Docker的stateful management基本上完全依赖于存储设备,而不是依赖container自己。

“我们理解image都有portable的特性,不过我想更进一步的,把container都当做能从一个server迁移到另一个server的一个对象”,Crosby说,“我们希望这样做了之后,RW(read/write)层能够也跟着container迁移,不需要依赖存储设备跟着迁移。”Crosby也提出他还希望不光container的filesystem数据关联起来,还有container的configuration(包括user-level data和networking information)也要能够关联起来。

Rethinking container image delivery

Container的镜像文件通常都是通过一些container分发网站来发布的,例如Docker Hub,或者一些公司内部的分发服务器。Crosby认为,Docker images是根据名字来区分的,然后就能根据名字在发布网站上找到对应的image了。每个container镜像文件都有一个摘要值,是通过对image的JSON文件和每个层级的内容做hash得来。这样除了依赖集中式的服务器来做分发之外,Crosby和Docker组织现在觉得还可以用一些peer-to-peer(P2P)的传输方式来在各个节点间传递。

Crosby说明了一下他的想法,就是发布网站还是会需要来处理每个docker镜像的名字,不过内容传输的时候就可以从一个server传递到另一个server,不需要跟发布网站来做交互。在P2P的模式下,发布网站可以把container镜像文件发给一个节点,然后其他的用户可以利用像BitTorrent的方式来分享、传输image了。Crosby总结道,自从2013年开始container的开发以来,container已经成长了很多,不过仍然有很多事情要做。对比过去和现在的状况,他认为大多数东西仍然是保持不变的,开发者们会继续专注于改善稳定性和提高性能。

现场有个video可供有兴趣的开发者观看:https://www.docker.com/dockercon/2019-videos?watch=the-road-ahead-for-containers

全文完

极度欢迎将文章分享到朋友圈
热烈欢迎随意转载,只需保留出处~

长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~

转载请注明:爱学习爱分享 » [译] Docker 容器的下一步计划

喜欢 (0)or分享 (0)