Podman:Docker 的替代品?
虽然 docker 无疑彻底改变了我们开发、部署和运行应用程序的方式,但 Podman(Pod 管理器)的独特之处以及为什么你可能想要开始使用它仍然值得探索。
在本文中,我们将深入探讨 podman 的核心功能(假设每个人都已经熟悉 Docker)。
开始吧!
什么是 Podman?
简单来说,Podman 是一个开源容器和 pod 管理器。
与 docker 类似,它允许您创建、启动、停止和删除OCI容器,以及管理容器镜像,但也支持 pod 作为其功能集的一部分,这意味着您可以像使用 Kubernetes 一样创建和管理 pod。
但是等待OCI容器?
OCI(开放容器计划):是一个行业标准组织,旨在创建一套规则(规范和标准),确保容器在不同平台上一致运行。
那么这意味着什么?
这意味着 Podman 的图像/容器与 docker 或任何依赖于 OCI 兼容容器运行时的容器化技术完全兼容。
太好了,现在我们知道 podman 与 docker 完全兼容,但等等,它更有趣。
大多数 Docker 用户可以轻松地将 Docker 别名为 Podman(别名 docker=podman)。
这意味着除了 docker swarm 之外,所有 Docker 命令都保持不变。
您可能想知道 Podman 能带来什么。
让我们深入了解一下!
建筑学
你能发现其中的不同吗?
Podman 的架构是无守护进程的。
哇,那是什么?为什么我们要摆脱旧的 docker 守护进程?
守护进程是在系统后台运行的进程,它们通常在后台连续运行,等待某些事件或请求发生。
回到容器,将 docker 守护进程视为用户和容器本身之间通信的中介。
有问题吗?
使用守护进程来管理容器有几个问题:
单点故障
一旦守护进程崩溃,所有容器都会崩溃。
需要 root 权限
这使得 docker 守护进程成为想要控制您的容器并渗透主机系统的黑客的理想目标。
Podman 通过直接与容器注册表、容器和图像存储交互来解决上述挑战,而无需守护进程,因此称为无守护进程架构。
通过无根(不需要 root 权限),用户可以创建、运行和管理容器,而无需具有管理员权限的进程,从而降低安全风险
buildah实用程序取代了 docker build,成为容器镜像构建工具。同样,skopeo取代了 docker push,并支持在镜像仓库之间移动容器镜像。这些工具可以高效、直接地与必要的组件进行交互,从而无需在构建过程中使用单独的守护进程。
我是否应该重写每个 dockerfile 和 docker-compose 文件以便能够将 podman 与我现有的项目一起使用?
答案:绝对不是
Podman 旨在通过兼容 docker 的 containerfile 语法,提供熟悉的开发者体验。
此外,Podman 还引入了一个名为 pod compose 的类似工具,作为 docker compose 的替代方案。Pod
compose 使用相同的语法,允许您使用相同的方法,甚至使用现有的“docker-compose.yml”文件来定义和管理多容器应用程序。
至于 Docker 桌面,Podman 也附带了增强功能,使其更加强大和精简。它与 Docker 和 Kubernetes 兼容,从而增强了其功能并提供更流畅的体验。
您可以在其官方网站podman.io上找到 Podman 的安装指南和文档
结论
鉴于 Podman 的无守护进程架构、与 Docker 相当的开发人员体验,以及两者都是拥有蓬勃发展的社区的开源项目,坚持使用 Docker 而不是 Podman 并没有明显的优势。
鏂囩珷鏉ユ簮锛�https://dev.to/arafetki/podman-the-docker-alternative-or-fierce-competitor-4n3h