阅读时间: 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安装一起使用它。