Podman,它是Docker的替代者吗?

562 阅读3分钟

阅读时间: 3 分钟

Podman是一个开源的、无守护程序的Linux原生工具,旨在让你在Linux系统上使用Open Containers Initiative(OCI)容器和容器图像寻找、运行、构建、共享和部署应用程序。

由于它符合OCI标准,它可以被用来替代更知名的Docker运行时。大多数Docker命令可以直接翻译成Podman命令。

它提供了一个兼容Docker的命令行前端,可以简单地别名Docker CLI,别名docker=podman

什么是运行时?

对很多人来说,"容器 "仍然是一个 "Docker容器"。这并不是对当前容器生态系统的正确表述。Docker生产OCI容器镜像,可以与其他兼容的运行时一起使用。Kubernetes是一个例子,而Podman是另一个例子。

Podman和Docker有重叠的核心功能。两者都产生了图像,另一个可以用来运行容器。然后这两个运行时在基础容器化功能的基础上增加自己的特色。

Podman的方法很简单,就是直接与图像注册表、容器和图像存储进行交互,并通过runC容器运行时进程(不是守护进程)与Linux内核交互。

如何安装Podman?

如果你使用的是RedHat Linux,Podman在extra仓库中,之后你可以使用订阅管理器来添加仓库。然后你就可以用yum来安装Podman。

su -
subscription-manager repos --enable rhel-7-server-extras-beta-rpms
yum -y install podman

大多数其他流行的Linux发行版也将Podman包含在他们的默认软件库中。你可以使用

apt install podman,

dnf install podman

来安装它。

使用容器和图像的命令

Podman的CLI与Docker的是一致的。这意味着如果你熟悉Docker命令,那么在使用Podman容器时不会有任何困难。

podman pull my-image:latest                                # To pull the image

podman run my-image:latest --name my-container             # To run the image 

podman ps                                                  # To list the podman processes

podman rm my-container                                     # To remove the container

podman kill my-pod                                         # Kill all containers

podman restart my-pod                                      # Restart all containers

podman stop my-pod                                         # Stop all containers

Docker vs Podman

如果你想知道Podman与Docker有什么不同,下面的表格可以帮助你了解一些关键的区别。

跑道管理Docker
它是无守护程序的Docker有一个守护程序(containerd)。此外,docker CLI与守护程序交互,以管理容器。
它通过runc直接与Linux内核进行交互。Docker守护进程拥有所有运行中的容器的子进程。
它可以部署带有多个容器的pod。
同样的pod清单可以在Kubernetes中使用。此外,你可以将Kubernetes的pod清单作为Podman pod来部署。Docker中没有pod的概念。
可以运行无根容器,无需任何额外的配置。你可以用root或非特权用户运行容器。Docker无根模式需要额外的配置

总结

你可能正在使用docker并寻找另一个围绕容器管理的工具,而不是仅仅学习podman。

Podman是一个符合OCI标准的容器运行时间,不需要守护程序就可以工作。CLI实现了所有核心的Docker命令。你可以很容易地过渡到Podman或与现有的Docker安装一起使用它。

分享Knol。

相关信息