基础知识:Docker的7个替代方案:一体化解决方案和独立容器工具
最后更新:2021年5月6日
码头工人是迄今为止世界上最知名和最广泛使用的容器平台。但是容器领域还有其他技术,每种技术都有自己的方法和用例。如果你是容器新手,你会想要考虑这些选择然后再投入其中,做出日后可能会后悔的IT决定。继续往下读,我们将为您概述6个非docker选项。这些不仅包括完整的解决方案,但是细粒度的这些工具既可以作为Docker的补充,也可以作为一个完全不同的容器系统的一部分。
让我们来看看七个完整的软件包,它们是Docker目前最直接的竞争对手。
- Artifactory Docker注册表
- LXC (Linux)
- Hyper-V和Windows容器
- rkt(与Kubernetes合作)
- Podman(开源容器引擎)
- runC(可移植性解决方案)
- Containerd(容器运行时)
1.Artifactory Docker注册表
Artifactory Docker注册表是一个安全的私有注册表,用于管理Docker映像,提供对远程Docker容器注册表的访问集成建立生态系统。
它允许你设置无限的Docker注册表,使用本地、远程和虚拟Docker存储库。工作透明的通过Docker客户端,它管理Docker映像,这些映像是在内部创建并从Docker客户机下载的远程Docker资2022世界杯阿根廷预选赛赛程源,例如码头工人中心.
局部存储库提供了一种部署和托管内部Docker映像的方法,这些映像可以跨组织共享。远程存储库作为在远程URL上管理的注册表的缓存代理,例如https://registry-1.docker.io(也就是Docker Hub), Docker映像在这里按需缓存。Artifactory-defined,虚拟存储库聚合来自本地和远程存储库的映像,允许访问托管在本地Docker存储库中的映像,以及远程映像代理从一个单一的URL远程Docker存储库。
Artifactory支持将Docker映像从Artifactory中的一个Docker存储库提升到另一个Docker存储库。的相关调用也得到Artifactory的支持Docker注册API这样它就可以透明地使用Docker客户端通过Artifactory访问图像。
建立你自己的Docker容器注册表
自由的云免费下载
2.LXC (Linux)
LXC是一套低级容器管理工具的一部分LinuxContainers.org开源项目。该技术是Docker的前身,由规范,背后的公司Ubuntu.
LXC的目标是提供一个隔离的应用程序环境,该环境非常类似于成熟的虚拟机(VM),但没有运行自己内核的开销。LXC还遵循Unix进程模型,其中没有中央守护进程。简单地说,不是由一个单一的中央程序管理,每个容器的行为就像由一个独立的程序管理一样。
LXC在许多其他方面也与Docker不同。例如,你可以跑步多个进程在LXC容器中,而Docker被设计为在每个容器中运行单个进程。尽管如此,Docker在抽象资源方面做得更好,因此,它的容器往往比LXC的容器更易于移植。2022世界杯阿根廷预选赛赛程
3.Hyper-V和Windows容器
当微软发布Windows Server 2016,它引入了两种新的容器技术,都为成熟的Windows虚拟机(vm)提供了轻量级的替代方案。第一,Windows的容器,采用了类似Docker的抽象方法。另一个是hyper - v的容器.
Hyper-V容器与VM虚拟化模型,因为每个都可以携带自己的内核。这意味着他们会提供更大的可移植性与传统容器相比,在其中运行的应用程序不需要与主机系统兼容。他们也负担得起更好的安全性由于增加了与主机操作系统和其他容器环境的隔离。然而,这些好处是有代价的,因为Hyper-V容器携带了一些更高的基础设施占用而不是依赖于基于共享内核系统的Windows和其他容器。
你可以使用任何一种来管理Hyper-V容器码头工人或者是Windows PowerShell,但每客环境必须是基于Windows的,尽管不一定是与主机操作系统相同的版本。
4.rkt
在其强大的生态系统和高普及率之间,rkt(前身为CoreOS火箭)可以说已经成为Docker最可行的替代品之一。
这种开源技术的核心优势是安全最重要的是,互操作性使用其他系统和框架。例如,它可以运行Docker容器,并使用基于豆荚的架构,这是直接开箱即用的Kubernetes.
与LXC一样,rkt不使用守护进程,因此提供了更多细粒度控制在容器的各个容器级别上。
尽管有优势,但自2018年红帽收购CoreOS以来,rkt的未来方向越来越明显不确定的.此外,2019年8月,云原生计算基金会(CNCF)决定放弃对该项目的支持。
⌘⌘⌘⌘⌘⌘⌘⌘⌘⌘
以下也是Docker的替代品,但它们是不完整的端到端解决方案。相反,它们要么与其他技术协调使用,要么替代Docker系统的特定组件。
5.Podman
Podman是一个开源容器引擎,其功能与码头工人引擎.它与众不同是因为它隔离而且用户权限特性造就了Podman更安全的.
同样,其命令行界面(CLI)命令实际上与Docker CLI支持的命令相同,除了使用Podman代替Docker基础。
虽然Docker和Podman的CLI命令是类似的,知道如何告诉区别这两者之间将帮助你在幕后与他们合作。Docker遵循客户机/服务器模型,使用守护进程管理其控制下的所有容器。然而,Podman,像rkt和LXC一样,起作用没有一个中央守护进程。这可以潜在地提高任何给定容器的弹性,通过消除的可能性单点故障(SPOF)。换句话说,如果您的守护进程停止运行,您将失去对容器的控制。相比之下,在Podman中,容器是自给自足,完全隔离环境,这些环境可以彼此独立地管理。
此外,Docker默认给容器用户root权限,非root访问是Podman的标准。
6.runC
runC是一个轻量级的,普遍的OS容器运行时。它最初是一个底层的Docker组件,在底层工作,嵌入到平台架构中。然而,它已经作为一个独立的模块化工具推出了。
这个版本背后的想法是改进容器可移植性通过提供标准化的、可互操作的容器运行时这两个作为Docker的一部分,并独立于Docker。因此,runC可以帮助您避免与特定的技术、硬件或云服务提供商紧密联系在一起。
7.containerd
Linux和Windows均支持,containerd基本上是一个守护进程,它充当接口在容器引擎和容器运行时之间。
它提供了一个抽象层,使其更容易管理容器的生命周期—例如图像传输、容器执行、快照功能和某些存储操作—通过使用simpleAPI请求.这避免了进行多个低级系统调用的麻烦。由于这些系统调用可能因平台而异,这也使得容器更加复杂可移植的同时允许API基本保持不变。
像runC一样,containd是Docker系统的另一个核心构建块,Docker系统已经被分离出来作为一个独立的开源项目。
