速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

2022 年要考虑的 7 种 Docker 替代方案

  • 2022-01-24
  • 本文字数:2145 字

    阅读完需:约 7 分钟

2022 年要考虑的 7 种 Docker 替代方案

许多企业都采用容器来进行开发和管理稳定的应用程序,Docker 是该领域功能最丰富且使用最广泛的工具之一,已有数百万应用程序在使用它。Docker 本身有着强大的独立生态系统,并提供了一个广泛的工具包来管理容器化过程,但 Docker 还有其他替代品,它们提供了独特的用例和功能。本文深入探讨了 Docker 七个替代品,其中包括一系列综合平台,如 Docker 以及可以作为 Docker 生态系统组件替代品的工具等。

Podman



PodmanRedHat 开发的一个无守护程序的开源 Linux 原生容器引擎,用于构建、运行和管理 Linux OCI 容器与容器镜像。尽管 Podman 提供了一个类似于 Docker 的命令行界面,但它的操作方式并不相同。

 

Docker 和 Podman 之间的一个显著区别是,Docker 运行一个持久的、自给自足的运行时来管理其对象或称为 dockerd 的守护进程;而 Podman 并不依赖守护进程来工作,相反,Podman 将容器作为子进程启动,它还直接与注册表和使用运行时进程的 Linux 内核进行交互,也正因如此,Podman 被称为无守护进程的容器技术。

 

没有守护进程提高了 Podman 作为容器引擎的灵活性,消除了对单个进程的依赖。Podman 与 Docker 的另一大不同就是它不需要 root 权限。这一特点提供了一个额外的安全缓冲区,限制了某些可能操纵关键系统设置并使容器和包含的应用程序易受攻击的潜在危险进程。

 

此外,Podman 可以运行 pod--包含一个或多个容器的集合,作为一个单一实体管理,并利用共享的资源池。通过这项能力,Podman 用户可以将他们的工作负载转移到 Kubernetes。

LXD



LXD 一个专为 LXC Linux 容器设计的开源容器引擎。LXC 使用户能够在隔离的容器或类似于虚拟机的虚拟环境中运行应用程序,而无需承担管理单个内核的技术负担。LXD 提供了一个用于连接 LXC 软件库的接口,同时创建了一个守护进程,负责处理网络、数据存储和管理多个 LXC 容器。尽管 LXC 可以作为独立工具运行,但它拥有有限的功能子集。LXD 提供了这些附加功能,因此依赖于 LXC 工作。


LXD 与 Docker 的主要区别如下。与 Docker 建议每个容器只有单个进程的设计模式不同,LXC/LXD 中的容器可以运行多个进程。此外,Docker 容器可移植性更强,为与 LXD 相比,Docker 有效地抽象了资源。最后,Docker 支持在 Windows 和 macOS 环境上运行,但 LXD 只支持 Linux。

containerd

 


containerd 是一个高级容器运行时,它通过在底层运行 runc 以提供操作系统和容器引擎之间的接口。runc 是一个支持 Windows 和 Linux 的守护进程,它抽象了特定于操作系统的功能,使运行和监督容器以及管理图像传输和存储变得更加容易。

 

containerd 提供的这种抽象级别功能消除了进行若干低级系统调用的复杂性,使得容器的可移植性得以实现。然而,与 Docker 不同,containerd 不处理镜像的构建或卷的创建。有趣的是,containerd 是 Docker 的默认运行时,现在它是一个独立的工具,就像 runc 一样。这也使得 containerd 像 Kubernetes 一样成为一个方便的编排工具,containerd 也是最受欢迎的 Docker 替代品之一。

Buildah



Buildah 是红帽基金会为容器化系统开发的一个 OCI 镜像构建工具。它是一个提供类似于在 Docker 中运行 `docker build` 的功能的工具。Buildah 经常与 Podman 一起使用,互作补充,例如,Podman 在后台使用 Buildah 功能的子集来实现其构建过程。

 

它可以从 Dockerfile 或 Containerfile 中构建镜像,并生成与使用 Docker 创建的镜像相同的镜像,因为这些镜像是符合 OCI 的。此外,它还提供了对镜像层的细粒度控制,允许在一个单一层中进行多次修改提交。它还提供了从头开始构建镜像的能力,即不包含任何内容的镜像,这让用户可以自由地只添加运行应用程序所需的软件包。最后,与 Docker 不同的是,在 Buildah 中,用户只能看到他们构建的镜像。

BuildKit

 


BuildKit 是第二代构建镜像的 Moby 项目,在较新的 Docker 版本中作为实验性功能提供。与 Docker 一样,它使用守护程序运行。不过,标准 Docker 构建和 BuildKit 之间的主要区别之一是,前者是逐层构建,后者提供并行构建处理。这个功能提高了性能,使构建速度更快。BuildKit 还允许跳过未使用的阶段,改善增量构建,并允许无根构建。此外,BuildKit 使用一个缓存来减少重建图像每一层的需要。

Kaniko



Kaniko 是一个谷歌镜像构建工具,它可以从 Dockerfile 构建镜像。它和 Buildah 一样是无守护进程的,但更侧重于在 Kubernetes 中构建镜像。Kaniko 对于本地开发实例来说不是很方便,因为它通常作为镜像与 Kubernetes 等容器编排器一起运行。对于 Kubernetes 集群中的持续集成和交付管道,Kaniko 可以成为一个实用的工具。

RunC



RunC 以前是嵌入到 Docker 架构中的一个模块,在 2015 年作为独立工具发布。此后,它成为一个广泛使用的、标准化的、可互操作的容器运行时。DevOps 团队可以将其作为 Docker 或其他定制容器引擎的一部分。RunC 属于容器化生态系统中的容器运行时部分。容器运行时是处理容器运行的容器引擎中使用的较低级别的组件。

 

尽管 Docker 为组织在容器化过程中所需的各个方面提供了一个全面的工具包,但某些 DevOps 功能可能需要探索其他替代方案。但是,在选择任何此类选项时也需牢记此类替代方案所运行的主机操作系统及其使用情况。

 

原文链接:https://www.containiq.com/post/docker-alternatives

2022-01-24 15:1221526

评论 1 条评论

发布
用户头像
好多
2022-02-09 16:03
回复
没有更多了
发现更多内容

IPQ6010/QCA8081/QCN5052/QCN5022 MAXON MX-A6022-ME WiFi6 Industrial Wireless Access Point

MAXON

IPQ6010 QCN5052 QCN5022 QCA8081

好家伙!阿里最新SpringBoot进阶笔记涵盖了SpringBoot所有骚操作

Java你猿哥

Java Spring Boot 面经 SSM框架

GaussDB(DWS)运维:导致SQL执行不下推的改写方案

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

2022 OpenHarmony年度运营报告

OpenHarmony开发者

OpenHarmony

浅谈堡垒机优化的必要性-行云管家

行云管家

云计算 网络安全 堡垒机 自动化运维

从华为投入研发基础开发工具看国产IDE的未来和商业模式

科技怪授

量化现货合约跟单app系统开发源代码(可二开)

开发v-hkkf5566

测试人软件测试技术沙龙——深入探讨一站式效能平台的演进历程

测试人

软件测试 自动化测试 测试开发

阿里云PAI-DeepRec CTR 模型性能优化天池大赛——获奖队伍技术分享

阿里云大数据AI技术

人工智能 深度学习 性能优化 模型 企业号 3 月 PK 榜

镜舟科技荣获IT168年度技术卓越奖!

镜舟科技

数据库

镜舟数据库荣获 CSDN 年度创新产品与解决方案!

镜舟科技

数据库

镜舟:打造行业顶级国产OLAP数据库

镜舟科技

内蒙古网络安全等级保护备案办理指引

行云管家

等保测评 等保备案 内蒙古

浅谈活动场景下的图算法在反作弊应用

百度Geek说

人工智能 算法 图神经网络 图像融合 企业号 3 月 PK 榜

详解目标检测模型的评价指标及代码实现

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

打造炫酷时尚的 Neumorphism 设计!

编程的平行世界

flutter 前端 设计 flutter for web

测试人社区技术沙龙——计算机视觉在App兼容性测试中的实践

测试人

软件测试 测试开发 测试开发自动化测试

Git客户端工具:SourceTree中文激活版

真大的脸盆

git Mac Mac 软件 Git客户端

扩散模型大杀器 ControlNet 解析

Openlab_cosmoplat

人工智能 开源社区 图像

Serverless Streaming:毫秒级流式大文件处理探秘

科技怪授

PaaS

阿里三面最后一问:解释一下Java并发AQS的独占锁模式

Java你猿哥

Java Java并发 AQS 后端 ssm

镜舟数据库与 DataBuilder 完成兼容性认证,助力企业开展“极速统一”数据分析

镜舟科技

数据库

【分享】为什么我设计的PCB很少出错?

华秋PCB

工具 测试 电路 PCB PCB设计

pytest学习和使用3-对比unittest和pytest脚本在pycharm中运行的方式

Python 自动化测试 pytest

使用图解的方式来解决链表的算法问题

做梦都在改BUG

CTO问我:MySQL从节点上的服务崩了,还怎么「主从读写分离」?

Java你猿哥

Java MySQL 后端 ssm Java工程师

吃透阿里2023版Java性能优化小册后,我让公司系统性能提升了200%

Java你猿哥

ssm Java工程师 Java性能优化 java

企业研发治理转型利器华为云发布流水线服务CodeArts Pipeline

科技怪授

华为

MySQL MVCC实现原理

得物技术

MySQL MVCC java

面试官:try-catch放在循环体内还是循环体外,哪种效率更高?

做梦都在改BUG

2022 年要考虑的 7 种 Docker 替代方案_开源_Sudip Sengupta_InfoQ精选文章