Podman:Docker 的替代品?

发布时间 2023-06-25 10:23:00作者: 晓风晓浪

虽然 docker 无疑彻底改变了我们开发、部署和运行应用程序的方式,但值得探索一下 Podman(Pod Manager)的与众不同之处以及为什么您可能想开始使用它。
在本文中,假设每个人都已经熟悉 Docker,我们将深入探讨 podman 的核心功能。

开始吧!

(更|多优质内|容:java567 点 c0m)

 

## 波德曼是什么?

 

简单来说,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 通过直接与容器注册表、容器和图像存储交互来解决上述挑战,无需守护进程,因此采用了无守护进程架构。

通过无根(不需要根权限),用户可以创建、运行和管理容器,而无需具有管理员权限的进程,从而降低了安全风险

buildah实用程序取代 docker build 作为容器映像构建工具。同样,skopeo取代了 docker Push,并允许容器镜像在注册表之间移动。这些工具提供与必要组件的高效且直接的交互,从而无需在此过程中使用单独的守护进程。

我应该重写每个 dockerfile 和 docker-compose 文件以便能够在我现有的项目中使用 podman 吗?

答案:绝对不是

Podman 旨在通过提供与 docker 容器文件语法的兼容性来提供熟悉的开发人员体验。
此外,Podman 还引入了一个名为 pod compose 的类似工具作为 docker compose 的替代品。
Pod compose 使用相同的语法,允许您使用相同的方法甚至使用现有的“docker-compose.yml”文件来定义和管理多容器应用程序。

至于 Docker 桌面,Podman 还附带 Podman 桌面,提供增强的功能,使其更加强大和简化。它提供与 Docker 和 Kubernetes 的兼容性,增强其功能并提供更流畅的体验。

 

您可以在其官方网站podman找到 Podman 的安装指南和文档

## 结论

鉴于 Podman 的无守护进程架构、与 Docker 相当的开发人员体验,以及两者都是具有蓬勃发展社区的开源项目这一事实,与 Podman 相比,坚持使用 Docker 并没有显着的优势。

(更|多优质内|容:java567 点 c0m)