Podman:Docker 的替代品?

2025-06-08

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
PREV
WebGL 的第一步
NEXT
Go 和 MongoDB:从头构建 CRUD API