Docker 一直是最流行的容器管理工具。 它已经成为容器的代名词。
但是 Docker 并不是您可以用于 Linux 容器管理的唯一工具。 您可以考虑使用其他几种工具来代替 Docker。
在本文中,我将列出此类容器工具。
?Docker 提供的每个功能都有替代方案。 然而,它们并不是 Docker 的完整或精确替代品。
“Docker 替换”是什么意思?
要理解上述通知,您需要了解 Docker 的作用。 以下是 Docker 所做事情的非详尽列表:
- 提供容器运行时
- 通过成为容器引擎来管理容器
- 管理(拉/推)容器图像
- 创建新的/自定义容器镜像
- 容器编排
到目前为止,还没有一款软件(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 相当,或者甚至更好——这取决于您的用例。
我鼓励您仔细研究讨论的备选方案并自行做出决定! 🙂