运行容器的最佳操作系统是什么?

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

对于过去两年一直关注容器社区崛起的人(在 Solomon Hykes 在 PyCon 上著名的五分钟演讲 之后),您肯定已经看到许多公司和项目如雨后春笋般涌现,它们提供了真正创新的应用程序管理方式。

有几个项目围绕着管理、网络、存储、日志记录、监控等(查看这个很棒的 生态系统思维导图 )。但是,我认为最流行的项目是构成已经或将成为新应用程序环境的基础设施的项目:容器操作系统。

在聚会和会议上与人们谈论容器时,我总是被问到一个问题:“运行容器的最佳操作系统是什么?”通常紧随其后的是“它是 CoreOS 吗?红帽呢?我还听说过一个叫做 RancherOS 的东西?”

我喜欢这些讨论;它与“哪个 Hypervisor 是最好的?”非常相似。当然,答案总是“视情况而定”。尽管如此,我仍将尝试解释在撰写本文时可用的最流行的容器操作系统之间的一些主要优点和区别。

核心操作系统

这是容器操作系统的典范。 CoreOS 专注于大规模部署,主要针对企业,它获得了相当多的关注(数百名贡献者,通常在 FreeNode 上的#coreos 中有 500 多个 IRC 用户)。它捆绑了一些由 CoreOS 团队开发的非常有趣的工具,例如 etcd、fleet 和 flannel。这些工具可以帮助您快速开始使用 CoreOS 集群。它们也是了解服务发现、资源调度和容器网络背后的概念的很好的起点。

2014 年 12 月,CoreOS 团队还宣布了另一种名为 rkt 的 容器运行时引擎。这是对团队认为 Docker 偏离其原始容器宣言的回应,他们想看看社区是否有同感。 CoreOS 仍然运行 Docker 和 rkt 容器,所以现在或不久的将来不用担心功能问题。

CoreOS 团队还与 Google 合作(Google Ventures 也是 CoreOS 的投资者)并创建了 Tectonic ,这是一种让 CoreOS 轻松高效地与 Kubernetes 一起运行的非常有趣的方法。 Tectonic 是一个商业 Kubernetes 平台,如果您在生产环境中运行大型容器时寻求的不仅仅是社区支持,那么它可能很重要。

Rancher操作系统

Rancher 正试图将容器操作系统带入下一步,即 RancherOS 中的一切都是 Docker 容器。他们以 PID 1 运行系统 Docker,然后启动一个容器,为所有用户容器运行用户 Docker。

这可能看起来很疯狂,但对于一个什么都不做的操作系统来说,这是有道理的。 Rancher 剥离了所有不需要的东西,这使得操作系统非常轻量级。安装 ISO 只有 22MB。

更有趣的是在操作系统之上添加的所有服务,使用 Rancher 系统 。当您考虑容器生产系统需要什么时,通常需要安全易用的组网、服务发现、负载均衡、监控和调度等功能。 Rancher 在 RancherOS 之上添加了所有这些,再加上一些。这是一个非常全面的系统,我强烈建议您 仔细研究 一下。

活泼的 Ubuntu 核心

这是 Mark Shuttleworth 去年宣布的 一个有趣的项目,同时也称当时可用的一些容器操作系统“臃肿”。

Snappy Ubuntu Core OS 带有一种新型的应用程序管理器(“snappy”),专注于运行应用程序和容器。有些人可能会争辩说这违背了容器操作系统应该做的事情,但它也可能是一个很好的过渡操作系统。它为那些只想测试一下而没有时间学习 etcd、Consul、fleet、Kubernetes 和所有其他工具的复杂性的人提供了一个很好的学习机会。

该系统的基础是“Ubuntu Core”。最重要的是,您的应用程序存在于只读图像(类似于容器)中,并且可以事务性地更新应用程序。这是巨大的——您不必再次下载整个应用程序来部署新版本,只需下载所做的更改即可。

Snappy Ubuntu Core OS 不是纯粹的容器操作系统,但它有一些有趣的方面。任何一直在生产环境中运行 Ubuntu 或对同时运行应用程序和容器感兴趣的人都应该检查一下。

红帽原子计划

该发行版是使用来自 CentOS、Fedora 和 RHEL 的上游 RPM 构建的,并支持 RedHat 所谓的“原子”升级和回滚。亲爱的读者,这取决于您选择您想要作为基础的发行版,这样您就可以轻松地管理您的主机。

该操作系统带有 Docker、flannel(来自 CoreOS 团队)、Kubernetes 的内置功能,一个名为 rpm-ostree 的事务性操作系统更新工具始终保持旧版本的操作系统可用(类似于 CoreOS),当然系统的。

Project Atomic 还使用 SELinux 来尝试保护您的容器并管理对它们的访问。我认为他们为此使用已经建立且值得信赖的技术很棒。我猜我们会从 RedHat 围绕这个项目看到更多,但现在它还很准系统——这也可能是一件好事。

中间层DCOS

不幸的是, Mesosphere DCOS 是一个经常被误认为 Apache Mesos 的项目(命名问题?)。但忽略这一点,它有一种非常强大和创新的方式来看待如何管理容器。

它采用开源项目 Apache Mesos、Marathon、Zookeeper 和一些其他服务,以巧妙的方式将它们捆绑在一起,并在顶部添加企业功能。该 DCOS 产品刚刚正式发布,有两种版本:用于 AWS 工作负载的社区版(免费)和用于其他一切的企业版。

Mesosphere DCOS 最有趣的地方在于它不仅限于容器管理。毕竟,它是在 Mesos 上构建的,它可以做更多的事情。如何部署 Hadoop 集群?也许是一个大规模的 Cassandra 集群? Mesosphere 具有内置功能,我相信这是与其他容器操作系统的关键区别之一,可以使 Mesosphere DCOS 非常成功。

光子

VMware Photon 于 4 月宣布并发布,是一个非常新的容器操作系统,也是 VMware 正在进行的开源工作的第一部分。 VMware 绝对专注于应用程序的大规模部署,从他们的另一个名为 Lightwave 的项目可以看出,它为大规模分布式基础架构、应用程序和容器提供包括身份验证和授权在内的身份服务。更多的人来这里,我敢肯定。

概括

显然,上述所有项目都需要做大量工作,并且每个项目都为该领域带来了自己的一些东西。我希望这种比较能帮助您选择一个您感兴趣的项目,并探索不同容器操作系统及其管理系统的可能性。玩得开心!

本文最初出现在 Jonas Rosland 的 Codeship 博客 上。