波德曼(Podman)是新容器领域的新明星,其参与者突然有更多的明星。了解Podman是什么,以及与Kubernetes中Docker的比较。
Podman是用于开发,管理和运行时容器和容器镜的容器A Engine的工具。该容器是一个标准化的独立软件包,其中包含所有必要的元素。它可以在没有自定义的任何地方运行,包括应用程序代码和支持库。在过去十年中,容器的应用已完全改变了软件开发,从而使分布式和基于云的系统易于部署和维护。
Podman是Red Hat Company的一个项目。它是开源的,可以免费下载。它是容器化领域中相对较新的成员。1.0版本于2019年发布。当时,Podman取得了长足的进步,其崛起补充了Docker的逐渐下降。Docker项目创建了我们今天在许多方面所知道的集装箱世界。
如果您对基于容器的开发有点熟悉,您将知道Kubernetes的名称。随着容器的应用程序越来越复杂,开发人员需要一些工具来协调不同虚拟机之间的交互,甚至在不同的物理机器上运行的容器。这样的工具称为容器布置平台,而Kubernetes是迄今为止最突出的示例。Kubernetes可以与任何符合开放容器启动(OCI)图像规范的容器一起使用,而Podman容器则符合此规范。
Kubernetes的一个重要特征是POD的概念。这是一个或多个一个或多个容器。它是Kubernetes可以管理的最小计算单元。Podman还以Pod的概念为中心,正如其名称所暗示的。一个Podman Pod还包括一个或多个容器,这些容器在名称空间,网络和安全环境中分组。这种相似性使Podman和Kubernetes成为自然的组合。从一开始,红帽的目标之一就是使Podman用户与Kubernetes协调容器。
容器界的另一个名称,您几乎是作为Docker的听到的。Docker不是第一个容器引擎,但在许多方面,它已经定义了容器化。大多数Docker的工作方法基于容器开发,开发的事实标准,因此,许多人将“ Docker”用作容器的缩写。
尽管Docker和Podman在容器生态系统中占据了相似的空间,但它们的工作方法中的想法和方法并不相同。以某些目的为例,其他项目依靠Buildah来构建容器镜。
架构上也有差异。例如,Docker没有本地Pods概念。另一个重要区别在于,Docker依靠连续运行的背景守护程序来创建镜像和运行时容器,而Podman开始容器和POD作为独立的PODsub -process.docker的设计对安全性有重要影响,我们将很快讨论。
由于设计和需求,Podman和Docker从整体上兼容。此兼容性部分部分归因于符合开放标准。由于这两个引擎使用符合OCI标准的容器,您可以使用Docker创建容器并修改它并修改它在Podman或依次将任何容器部署到Kubernetes。
当Podman于2019年推出时,Docker是如此占主导地位,其命令行界面已成为许多开发人员的编程程序和肌肉记忆的一部分。为了使Podman的潜在运动更加无缝,Podman的创始人确保他们的命令确保他们的命令确保语法尽可能地反映了Docker的命令和语法。他们甚至可以设置一个别名,以将Docker命令重新推向Podman。
由于Podman和Docker在许多方面都非常相似,所以您为什么选择其中一个而不是另一个?好吧,安全是安全的一个重要原因。记住,码头工人如何依靠守护程序来完成其大部分工作?Root,这使其成为攻击者的潜在进入。这不是安全计算的不可替代的障碍,但这确实意味着您必须花一些想法来处理Docker的安全问题。
在某些情况下,您想在主机上使用根权限运行容器,而Podman可以让您执行此操作。但是,如果您想在用户空间中安全地限制容器,也可以通过运行SO -CALLED来执行此操作。root容器。不含容器没有比启动它更多的权限。在容器中,用户具有根本权限。您还可以使用命令行徽标以良好的方式向您的容器添加权限。
在性能方面,Docker比Podman好,至少有些人认为。尽管很少有有关此问题的具体信息,但在Hacker News,Stack Overflow和Reddit上找到令人沮丧的开发人员并不难抱怨Podman的表现,尤其是当根部不跑步时。瑞典大学的某些大学生在几个不同的容器平台上运行基准测试套件,发现Podman的性能不足,尽管这是Podman的1.0版本。尽管没有太多有关此主题的技术信息,但从anecdotes中看,Podman的表现已被扣除。
从当前的讨论来看,听起来可能没有巨大的气氛变化,用Podman取代了Docker。但是,即将发生重大变化,它将取代Docker的长期Niche.kubernetes本身。
Kubernetes和Docker多年来一直是集装箱界的双重巨人,但是它们的共存总是有点不安。Kubernetes的崛起是在Docker在其利基市场事实中自由地宽松的,您可以说Kubernetes是流行的,部分原因是Docker不能有能力管理在大型分布式应用程序中需要协调的所有容器来管理大型分布式应用程序。
Docker(公司)于2015年开发了自己的集装箱协调平台,被称为Swarm,旨在利用Docker的优势。Swarm在Big Fanfare的情况下推出了Swarm,但从未与Kubernetes陷入困境。尽管Kubernetes拥有支持者,但Kubernetes拥有支持者,但成为容器协调的事实标准,就像Docker已成为容器生态系统其他方面的事实标准一样。
此外,Docker从未就其容器来处理Kubernetes。Kubernetes是容器发动机的基础组件。除其他任务外,它还可以与基础操作系统(OS)核心一起使用并安装单个容器图像。Docker和Kubernetes符合OCI图像规格。Kubernetes使用此规范来协调容器的图像。但是,Kubernetes还依赖于与标准化插头API兼容的操作时间。插头-in称为容器运行时间接口(CRI),尚未实现Docker。
很长一段时间以来,Docker的受欢迎程度迫使Kubernetes使用Dockershim,这是与CRI一致的层,CRI是Kubernetes和Docker Guardian之间的中介。今年早些时候,Kubernetes放弃了对Dockershim的支持。(相反,Podman使用云计算基础来运行CRI-O)。
这是关于Docker试图成为一家公司并失败的更大故事的一部分。简而言之,Docker从未完全摆脱Kubernetes的约束。同时,Kubernetes不再需要像以前那样需要Docker。
目前尚不清楚Podman是否会取代Docker,但肯定会成为竞争对手之一。这帮助Podman不是寻求货币化的旗舰产品,而是一家较大公司的单个开源技术产品。我们可以期望Podman和Kubernetes to将来交织在一起。
我希望这次讨论能让您知道在这两个容器引擎中可以选择的因素。Podman是一个更安全的体系结构,而Docker具有更深的历史。Podman是Kubernetes的原产地,Docker也可以与Docker Swarm.Docker合作。Docker.docker。许多相关的任务所需的所有功能。podman都是模块化的,您可以尝试用于不同目的的不同工具。
总而言之,“ Podman vs. Docker”的问题在某种程度上是错误的选择。平台都可以创建符合OCI规格的镜子,并且由许多相同的命令驱动,因此您可以在两者之间无缝移动。例如,您可能需要使用Docker进行本地开发,然后使用Podman部署您在Kubernetes内置的容器。