7 Docker的替代方案:一体化解决方案和独立容器工具

用户添加图片

码头工人是迄今为止世界上最知名和使用最广泛的集装箱平台。但是在容器领域还有其他技术,每种技术都有自己的方法和用例。所以,如果你集装箱新手,你会想要考虑这些选择在跳入其中并可能做出日后可能会后悔的IT决定之前。请继续阅读,我们将为您提供六个非docker选项的概述。这不仅包括完整的解决方案,但是细粒度的这些工具既可以作为Docker的补充,也可以作为完全不同的容器系统的一部分。

让我们来看看七个完整的软件包,它们是Docker目前最直接的竞争对手。

1.人工Docker注册表

JFrog人工标志

人工Docker注册表是一个管理Docker镜像的安全私有注册表,提供对远程Docker容器注册表的访问集成建立生态系统。

它允许你设置无限的Docker注册表,使用本地、远程和虚拟Docker存储库。工作透明的使用Docker客户端,它管理Docker镜像,这些镜像已经在内部创建并从远程Docker资2022世界杯阿根廷预选赛赛程源,如Docker Hub。

局部存储库提供了一种部署和托管内部Docker映像的方法,然后可以跨组织共享。远程存储库作为在远程URL上管理的注册中心的缓存代理,例如https://registry-1.docker.io(即Docker Hub),其中Docker映像按需缓存。Artifactory-defined,虚拟存储库聚合来自本地和远程存储库的映像,允许访问托管在本地Docker存储库上的映像,以及远程映像代理从一个单一的URL通过远程Docker仓库。

Artifactory支持将Docker镜像从Artifactory中的一个Docker库提升到另一个Docker库。类的相关调用Docker注册API这样它就可以透明地使用Docker客户端通过Artifactory访问镜像。

图表显示了JFrog的Artifactory如何作为Docker注册表与Docker一起工作

2.LXC (Linux)

Linux的标志

LXC是一组低级容器管理工具的一部分LinuxContainers.org开源项目。该技术是Docker的先驱,由规范背后的公司Ubuntu

LXC的目标是提供一个独立的应用程序环境,它非常类似于一个成熟的虚拟机(VM),但没有运行自己的内核的开销。LXC也遵循Unix进程模型,其中没有中心守护进程。简单地说,不是由一个单一的中央程序管理,每个容器的行为就好像是由一个独立的程序管理一样。

LXC在许多其他方面也与Docker不同。例如,您可以运行多于一个进程在LXC容器中,而Docker是为在每个容器中运行单个进程而设计的。尽管如此,Docker在抽象资源方面做得更好,因此,它的容器往往比LXC容器更具可移植性。2022世界杯阿根廷预选赛赛程

3.Hyper-V和Windows容器

Hyper-V容器标识

当微软推出Windows Server 2016它引入了两种新的容器技术,这两种技术都为成熟的Windows虚拟机(vm)提供了轻量级的替代方案。第一,Windows的容器采用了一种类似于Docker的抽象方法。另一个是hyper - v的容器

Hyper-V容器更符合VM虚拟化模型,因为每个都可以携带自己的内核。这意味着他们提供更大的可移植性与传统容器相比,在其中运行的应用程序不需要与主机系统兼容。他们也负担得起更好的安全性由于增加了与主机操作系统和其他容器环境的隔离。然而,这些好处是有代价的,因为Hyper-V容器携带了一些更高的基础设施占用比Windows和其他依赖于基于共享内核的系统的容器要好。

您可以使用任何一种方法来管理Hyper-V容器码头工人或者是Windows PowerShell,但每个客人的环境必须基于Windows,但不一定与主机操作系统的版本相同。

用户添加图片

4.rkt

rkt标志

在其强大的生态系统和强大的采用率之间,rkt(以前称为CoreOS火箭)已经成为Docker最可行的替代品之一。

这种开源技术的核心优势是安全最重要的是,互操作性与其他系统和框架。例如,它可以运行Docker容器,并使用基于pod的架构,可以直接使用Kubernetes

与LXC一样,rkt不使用守护进程,因此提供了更多细粒度控制在单个容器级别的容器之上。

尽管有优势,但自2018年红帽收购CoreOS以来,rkt的未来方向越来越不确定的.此外,在2019年8月,云原生计算基金会(CNCF)决定放弃对该项目的支持。

⌘⌘⌘⌘⌘⌘⌘⌘⌘⌘

以下也是Docker的备选方案,但是它们是完整的端到端解决方案。相反,它们要么与其他技术协调使用,要么代替Docker系统的特定组件。

5.Podman

podman标志

Podman是一个开源容器引擎,它的作用与码头工人引擎.它与众不同是因为它隔离用户权限功能使Podman固有更安全的

同样,其命令行界面(CLI)命令实际上与Docker CLI所支持的命令相同,除了您将使用Podman来代替Docker基础。

虽然Docker和Podman的CLI命令是相似的,但是知道如何区分区别两者之间的交流将有助于你在幕后与他们合作。Docker遵循客户机/服务器模型,使用守护进程管理其控制下的所有容器。然而,像rkt和LXC一样,Podman具有功能没有一个中央守护进程。这可以潜在地提高任何给定容器的弹性,因为它消除了单点故障(SPOF)。换句话说,如果守护进程宕机,您将失去对容器的控制。相比之下,在Podman中,容器是自给自足,完全孤立环境,它们可以相互独立地进行管理。

此外,Docker在默认情况下为容器用户提供root权限,非root访问是Podman的标准。

6.runC

runC标志

runC是一个轻量级的,普遍的操作系统容器运行时。它最初是一个底层的Docker组件,它在底层工作,嵌入在平台架构中。然而,它已经作为一个独立的模块化工具推出。

这个版本背后的想法是改进容器可移植性通过提供可以工作的标准化、可互操作的容器运行时这两个作为Docker的一部分,并且独立于Docker。因此,runC可以帮助您避免与特定技术、硬件或云服务提供商紧密联系在一起。

7.containerd

containerd标志

支持Linux和Windows,containerd基本上是一个守护进程,它的作用是接口在容器引擎和容器运行时之间。

它提供了抽象层,使管理容器生命周期(如映像传输、容器执行、快照功能和某些存储操作)变得更加容易API请求.这避免了进行多个低级系统调用的麻烦。由于这些系统调用可能因平台而异,这也使容器更加可移植的同时允许API基本保持不变。

与runC一样,containerd是Docker系统的另一个核心构建块,它已经作为一个独立的开源项目分离出来。

用户添加图片

Docker的替代方案

LXC

Windows hyper - v

rkt

Podman

runC

containerd

解决方案类型

一体化的

一体化的

一体化的

容器引擎

容器运行时

接口/

守护进程

优点

没有守护进程。更适合传统的应用程序设计。

更高级别的隔离性和可移植性。

更好的安全性。没有守护进程。高度互操作。

更加安全。

没有守护进程。熟悉的CLI命令。

标准化的可互操作的容器运行时。

更容易管理容器生命周期。

缺点

有限的可移植性。

更多的技术实现。

更大的基础设施占用空间。仅Windows。

有限的功能集。

项目未来不确定。

仅限容器引擎。

仅限容器运行时。

仅限容器接口。

开源

是的

不,但与开源兼容

是的

是的

是的

是的

了解更多关于Docker的信息:

发布日期:2020年6月23日

最后更新:2021年5月6日