满足您容器化需求的 Docker 替代方案

Docker 一直是最流行的容器管理工具。 它已经成为容器的代名词。

但是 Docker 并不是您可以用于 Linux 容器管理的唯一工具。 您可以考虑使用其他几种工具来代替 Docker。

在本文中,我将列出此类容器工具。

?Docker 提供的每个功能都有替代方案。 然而,它们并不是 Docker 的完整或精确替代品。

“Docker 替换”是什么意思?

要理解上述通知,您需要了解 Docker 的作用。 以下是 Docker 所做事情的非详尽列表:

  1. 提供容器运行时
  2. 通过成为容器引擎来管理容器
  3. 管理(拉/推)容器图像
  4. 创建新的/自定义容器镜像
  5. 容器编排

到目前为止,还没有一款软件(Docker 除外)或多个同名工具能够提供上述所有功能。

但是有一些单独的软件可以执行上述一项或多项任务。

我将根据不同的标准列出 Docker 替代方案。 这将更加准确,因为没有确切的 Docker 替代方案。

Docker 替代品:容器运行时

让我给你打个比方,帮助你理解什么是容器运行时。

假设您有一个用 Python 编程语言编写的软件。 要执行上述软件,Python 解释器是绝对必要的。 同样,您需要一个容器运行时来执行容器映像中的内容。

Docker 提供的容器运行时有多种替代方案。 以下是其中的一些:

奔跑

奔跑 是一个 OCI兼容 Red Hat 提供的容器运行时,作为 Docker 容器运行时的替代方案。 它快速且轻便。 它是用 C 编程语言编写的,是 Podman 容器引擎的默认容器运行时。

妖姬

妖姬 是一个 OCI 兼容的容器运行时,旨在替代 crun,但它是用日益流行的 Rust 编程语言编写的。 它可以替代 crun 作为 Podman 容器引擎的容器运行时。 尽管它与无根 Podman 有一些粗糙的边缘。 这是一个进行中的项目。

runc

runc 是一个与 OCI 兼容的容器运行时,由 OCI(开放容器计划)本身提供。

LXC

LXC 是一个容器运行时,它为 Linux 内核的包含功能(如内核命名空间、chroot、内核功能、SELinux/Apparmour 配置文件等)提供接口。这是 LXC 容器引擎使用的默认容器引擎。

集装箱

集装箱:一个容器运行时,具有简单性、健壮性和可移植性等特性。

?请注意,上面列出的容器运行时单独使用时没有用。 需要一个容器引擎来利用上述工具提供的运行时。

Docker 替代品:容器引擎

现在,您已经了解了 Docker 替代方案的容器引擎方面。 大多数人最常使用 Docker 的这一方面。 但什么是容器引擎?

容器引擎是创建容器、附加外围 I/O(如网络)、安装存储卷、处理外部世界(容器外部)与容器之间的通信、处理机密等的工具。 这还包括根据用户需求启动、停止和删除容器等任务。

容器引擎通常也负责获取必要的图像。

现在您知道什么是容器引擎,让我们来看看一些标榜为容器引擎的软件项目。

波德曼

波德曼:Podman 是一个容器引擎,作为 Docker 作为容器引擎的替代产品,得到了 Red Hat 的高度认可。 它运行在 crun 或 Youki 容器运行时之上。 Podman 让您无需 root access,它有一个无守护进程的架构等等。

龙信达

龙信达:它是一个位于 LXC 之上的容器引擎,它的主要目的是管理 完整的 Linux 发行版. 它还用于管理虚拟机。

打开VZ

打开VZ: OpenVZ 允许您运行具有独立用户、内存、进程等的 Linux 容器作为单独的虚拟机。

Docker 替代品:容器镜像管理

如果您没有要使用的图像,则无法创建容器。 Docker 的多合一方法意味着您到目前为止只需要 Docker 来创建自定义映像。

但是有各种各样的项目可以提供更好、更具交互性的构建图像体验。 以下是 Docker 在这方面的一些替代工具:

建达

Buildah 基于规范文件 (Dockerfile) 创建 OCI 兼容镜像,或者您可以交互式地逐步构建镜像。 这有助于您更清楚地了解构建镜像的某个步骤失败的原因。 您甚至可以从以前的构建命令中获取。

斯科皮奥

斯科皮奥:虽然 skopeo 不是——在迂腐的表示中——像 buildah 那样的构建图像的工具,但它有很多检查图像的能力,甚至是远程图像! Skopeo 还用于将图像的更新版本或新图像发布到远程注册表,例如 hub.docker.com 或者 quay.io.

构建工具包

构建工具包:这是自 v18.06 版以来与 Docker 捆绑在一起的替代图像生成器。 它最大的特点是并发构建和缓存非常高效,尽可能多地使用它并减少构建时间。 它可以创建 OCI 兼容图像或 Docker 兼容图像。

蟹子

蟹子 是一个用于从 Kubernets 集群构建容器镜像的工具。 意思是,它不需要 Docker 守护进程存在,所有这些都在用户空间中完成。 这是谷歌工程师的非官方产品。

Docker 替代品:容器编排

到目前为止,您所涵盖的只是 Docker 的基本方面。 当大型企业/数据中心利用 docker swarm 跨多台机器(称为节点)管理容器的工具。 这称为容器编排。

让我们看一下 Docker 提供的容器编排的一些替代方案:

库伯内斯

库伯内斯 是一种非常流行的免费开源软件工具,用于扩展容器化软件并将其部署在多个网络节点上。

开班

开班 更像是一个软件发行版,而不是一个单一的软件。 它建立在 Kubernetes 之上,提供可大规模部署的类操作系统软件。

奖金!

既然您已经如此耐心地阅读到现在,我想让您了解一些有助于您进行容器管理的精华。

共同点

共同点 是一个优秀的容器监视器。 它通常与 Podman 容器引擎一起使用,用于检查和管理单个容器的健康状况以及 Pod 级别的健康监控。

podman-compose

Podman 容器引擎明显缺乏基于 docker-compose.yml 文件。 这 podman-compose 该工具有助于将 Podman 与 Docker 的功能对等。

潜水

潜水 该工具允许您探索 Docker 镜像的每一层,并评估其内容。 这也可用于检查图像中占用过多空间的内容并将其裁剪。

结论

本文介绍了替换 Docker 的所有功能的各种选项,因为 Docker 具有容器化软件的一体化方法。 许多替代方案已经在功能上与 Docker 相当,或者甚至更好——这取决于您的用例。

我鼓励您仔细研究讨论的备选方案并自行做出决定! 🙂