Py学习  »  docker

运行Docker和容器的最佳Linux发行版

云技术实践 • 6 年前 • 738 次点击  

Alpine Linux、CoreOS、RancherOS、Red Hat 原子项目、 VMware光子操作系统比较。

先看下比较结果:

  • Alpine Linux 3星

  • CoreOS 3星半

  • RacncherOS 4星

  • 红帽原子项目 3星半

  • VMware 光子操作系统 4星

(译者注,排名为原文作者排名,应该为一家之言,仅供参考)


在过去的六个月里,我回顾了五个最简单的Linux发行版,它们都是针对运行容器进行优化的:Alpine Linux、CoreOS、RancherOS、Red Hat原子项目和VMware photon OS(光子操作系统)。通常被称为“容器操作系统”,这些被单独构建的Linux发行版,并不是在生产中运行容器的唯一方法,但是它们提供了一个基础,除了容器支持之外,它不会浪费任何资源。


使用容器部署系统的行业状态非常类似于早期的Linux发行版。您有一个关键元素,在本例中是Docker容器,它周围有许多相互竞争的生态系统组件。就像传统的Linux发行版捆绑不同的包管理器、桌面环境、系统实用程序、服务和应用程序一样,大多数容器发行组合并匹配各种组件以创建他们认为最优解决方案。以分布式配置和服务发现为例。这里有一些解决方案,比如 Etcd, Consul, 和ZooKeeper。


每个发行版都采用不同的方法来包含堆栈。在一种极端情况下,有些发行版只支持更高级别的堆栈,比如CoreOS和Red Hat原子项目。很多功能已经被放到了专有的管理层,别希望使用操作系统做其他的事情。其他的发行版,如RancherOS和VMware光子操作系统,提供更大的灵活性,支持多个生态系统组件和编排系统。这给管理员一个很好的验证方法,并可能避免厂商锁定。


Alpine Linux(阿尔卑斯 Linux)


Alpine Linux是许多官方Docker映像的基础操作系统,是一个很好的选择。只有5兆字节大小,Alpine Linux正处于与几年前的全功能Linux发行版相反的一端,后者正在与Solaris竞争,并打算在大型硬件系统上运行。这种新的Linux品种被设计成在嵌入式硬件上运行,并消耗最少的资源,使它成为容器的完美选择。


在我的回顾中,Alpine Linux作为嵌入式系统的遗产是显而易见的。许多配置选项默认嵌入系统,许多领域的文档很少,或者根本不存在。很明显,一个为黑客们设计的系统,Alpine Linux将要求公司清除一些障碍来构建他们的应用程序。


Alpine Linux的生产部署将会有一些优势,包括快速启动,极简主义,其他发行版没有的默认的安全设置。从系统二进制文件到C库的所有内容都是为小型、快速和安全部署而设计的,没有任何多余的东西。


Alpine Linux的管理与传统的Linux系统不同,需要一些时间来学习。即使在容器操作系统中,安装和包管理也是独特的,这个我们很清楚。如果您的开发商店拥有高于平均水平的开发人员,他们愿意进行投资,那么Alpine Linux将为应用程序提供一个坚实、稳定、安全的基础。


CoreOS Linux容器


CoreOS容器栈使用:Etcd用于分布式存储和服务发现,Flanne网络,以及容器编配的Kubernetes,并支持它自己的容器格式rkt(Rocke),除了Docker。rkt是一种竞争的容器格式,以解决2015年左右的Docker格式的缺陷,但由于这些缺陷的解决,没有看到rkt太多的升级。


CoreOS,就像红帽原子项目一样,并不害怕从传统的Linux中完全独立出来。与Red Hat的容器操作系统一样,CoreOS容器Linux创建了一个几乎不可变的文件系统,但它使用的是一个由谷歌的Chromium OS设计的磁盘分区系统。它所做的是将旧文件系统保存在一个分区上,这意味着回滚总是安全且快速的。


尽管文档相当不错,也很全面,但我发现安装有点麻烦,涉及到一个两步过程来生成配置文件。然而,一旦安装完毕,CoreOS就会提供连续的“不停机”升级,这是由其独特的磁盘分区布局所实现的特性。CoreOS在这里做了很多工作,公司提供各种各样的维护选项,这些选项将适合任何组织,包括选择退出的能力。


CoreOS有点像红帽原子项目,是一个孤注一掷的决定。由于所有的架构设计决策都是在平台上进行的,所以分开并使用底层操作系统构建自己的容器基础设施并不是一个真正的选择。如果你愿意接受这些,并支付CoreOS的商业Kubernetes发行版构建,无疑你可以做一些非常繁重的工作。


Rancher实验室的RancherOS


Rancher实验室的RancherOS是一个完全由容器组成的Linux操作系统。即使是init进程(PID 1)也是Docker容器。这意味着不需要一个包管理系统。操作系统升级(和降级)由Docker管理,就像其他容器一样。


尽管这种方法与其他发行版(如Project Atomic和CoreOS)的架构决策一样激进,但其结果却是令人惊讶的简单。尽管一开始学习任何全新的系统管理都令人生畏,但您必须了解Docker如何管理容器,所以为什么不同时使用相同的系统呢?


RancherOS似乎正在迅速成熟。在我的评测中,我发现文档有点缺乏,但是任何熟悉Docker容器的开发人员或管理员都已经了解了大部分系统。RancherOS很小(20MB),并有效利用资源。虽然容器管理系统和RancherOS之间的界线有些模糊,但容器管理系统是开源的,所以没有理由尝试自己动手。需要访问源代码的组织不应该再看下去了。


Rancher平台支持了包括Docker Swarm、Kubernetes和Mesos在内的整个容器管理工具的生态系统,并且进展迅速。尽管与传统的UNIX相比,RancherOS与传统的UNIX相比有很大的不同,但它似乎更接近于基本的UNIX哲学,而不是其他的容器OS发行版:简单的工具以一种优雅的方式操作。


Red Hat原子项目


红帽的原子项目是在Kubernetes服务编配的阵营中。这种类型的部署通常是针对大规模的、高度可用的场景。缺点是,本质上,你必须“按照你的要求去做”,并按照惯例来架构应用程序。


在这个盒子里,你会找到用于Flannel网络,分布式键值存储的Etcd,以及主机管理的OSTree。OSTree是一种相对较新的方式,以可靠和分布式的方式在规模上部署操作系统。Atomic将OSTree与新的RPM包管理器结合起来,创建了RPM-OSTree,它提供了一个几乎不可变的文件系统。


我发现原子项目是一个挑战。它雄心勃勃,行动迅速,有许多活动部件。RHEL,CentOS,Fedora,SELinux,Systemd,一个定制的“Docker”命令集控制底层主机…他们都是混合的,文档是混乱和困惑。此外,在我的小集群中,缺少Chef, Salt, or Puppet,我必须手动配置每个节点。


底线是,原子项目仍然需要一些时间来孕育。如果这一愿景实现了,那么它就可能成为未来的标准,尽管数据中心不是几百个节点,而是成千上万个节点。在这方面,与典型的容器部署系统相比,它更接近于Mesos。如果你的公司使用着红帽生态系统,并计划留在那里,那么原子项目很可能值得一开始。


VMware光子操作系统


VMware的光子操作系统是一个最小的Linux容器主机,它的设计初衷是为VMware管理器提供一个小型的内存空间。因此,光子操作系统只在虚拟环境中运行;不可能在物理硬件上部署。光子操作系统是定制的,使容器管理更容易,但不像原子或CoreOS那样激进。光子操作系统更像是一个进化的步骤。


基于我的测试,光子操作系统在VMware虚拟环境中实现了它的承诺。(光子操作系统也可以在其他管理程序上运行,也可以在谷歌和亚马逊云上运行。)因为光子操作系统可以对硬件(虚拟)做出假设,生态系统看起来很像标准的Linux,使学习曲线不那么陡峭。联网和存储是Systemd兼容的,并且有一系列文件记录用于容器联网。光子操作系统的文档可能是所测试产品中最好的。


VMware在传统环境的产品容器中处于领先地位,这在你考虑它的时候是有意义的。你经常被要求描述容器和VM的区别吗?对于光子操作系统,很快就不会有任何区别:容器将只是一个轻量级的VM,部署和管理相同的工具。光子操作系统几乎支持容器生态系统的每一个主要部分:Docker和Rocket容器、Docker Swarn、Kubernetes、Mesos、谷歌云引擎、Amazon EC2等等。


在我回顾的所有发行版中,VMware光子操作系统似乎都是最有远见的,也是目前最完整、最好用的。如果您是一个探索容器化的VMware商店,我不会考虑其他任何事情。如果你不是一个VMware商店,光子操作系统仍然值得一看。


容器操作系统比较


Alpine Linux支撑着大多数的Docker镜像。对于嵌入式应用程序来说,不应该把Alpine Linux看作是一种运行容器的方法。相反,在某种程度上,Alpine Linux是一个容器。熟悉在Alpine Linux上构建应用程序的开发人员将编写更好的容器应用程序。


CoreOS是早期的容器操作系统之一,采用了谷歌技术堆栈。它提供了一个可靠的、尽管有观点的管理容器基础设施的方法。虽然CoreOS提供了许多可用的开源组件,但学习如此大的堆栈的复杂性意味着用户需要购买专有的技术编配系统用于生产部署。如果钱不是问题,你需要部署谷歌大小的应用程序,CoreOS是一个合乎逻辑的选择。


RancherOS是容器。如果要滚动升级容器基础设施,或者想要一个最小的容器管理堆栈,RancherOS是好的开始。有了开源的编排和调度工具,如Docker Swarm、Kubernetes和Mesos都可以免费使用,Rancher stack将吸引开源的、自己动手的公司。


Red Hat的Project Atomic是一个雨伞(保护性)项目,它重新架构了公司部署基础设施的方式。这个雄心勃勃的项目可能会改变公司考虑应用程序部署的方式,但这条路很长。原子项目最适合于早期采用者,对红帽技术有大量的现有投资。


VMware的光子操作系统将供应商的虚拟机管理技术和经验带到容器中。光子操作系统被部署为虚拟机,并使用传统的VM工具进行管理。VMware也许看到了传统虚拟机技术已经发展到头,已经完全接受了容器技术,并迅速推进到了艺术的状态。如果你现在是一个VMware用户,你将很难找到一个比光子操作系统更好的容器平台。


原文链接:

https://www.infoworld.com/article/3235229/linux/review-the-best-linux-distros-for-docker-and-containers.html


欢迎加入OpenStack vs Kubernetes 群,一起交流技术,申请表填写

扫描二维码


相关阅读:

高端私有云项目交流群,欢迎加入!

容器是什么,和Kubernetes是什么关系,为什么对OpenStack很重要?

多元化的未来,OpenStack的铮铮前行

向云上迁移数据时如何避免停机和中断

如何从传统IT技能转型进入云计算

谷歌和IBM启动开源项目以更好地控制容器

CNCF基金会公布了30名新成员,共达到138名成员

Kubernetes 1.8专注安全,在容器编排平台中稳居领导地位

云管理平台实践指南

Prometheus(普罗米修斯)用户档案:动态化特性加速weaveworks云原生程序的发展

附PDF下载:《迁移到原生云应用架构》第二部分


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/vsgdaP1h8i
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/4055
 
738 次点击