podman 是什么?和 docker 有什么区别?

什么是 podman ?

Podman 是一种无守护进程的容器引擎,可以创建、管理和运行 OCI 容器,容器可以以非 root 身份运行(也可以使用 root 身份运行)。Podman 是由 Red Hat 开发,从 Red Hat Enterprise Linux 7 开始,Podman 成为了默认的容器引擎。

Podman 遵守了 OCI(开放容器倡议)规范,可以轻松查找、运行、构建、共享和部署应用程序。Podman 提供了一个与 Docker 兼容的 CLI 工具(命令行界面),会使用 docker 基本就会使用 podman。Podman 与其它常见的容器引擎(Docker、CRI-O、containerd)类似,依赖于符合 OCI 的容器运行时(runc、crun、runv 等)与操作系统交互来创建容器,所以 Podman 创建的容器与其它常见容器引擎创建的容器几乎没有区别。

Podman 和 Docker 的异同点

相同点:

  • 都是基于 OCI 规范,可以管理和运行 OCI 容器和镜像。
  • 都支持使用类似于 Dockerfile 的构建文件来构建镜像,并且能够使用类似于 Docker Hub 的集中式仓库来存储和管理镜像。

不同点:

  • Docker 需要一个守护进程来管理容器,而Podman可以在没有守护进程的情况下直接管理容器。
  • Podman 支持 rootless 容器,容器默认情况下不具有 Root 访问权限。相比之下,Docker 的守护进程需要拥有 Root 权限。
  • Docker 在 MacOS 和 Windows 上也能够运行,而 Podman 主要面向 Linux 系统。但是 podman 也对 Windows 和 MacOS 做了支持(需要借助虚拟机来实现,称为 podman machine,在MacOS上借助 QEMU 虚拟机,在Windows上借助Linux子系统 WSL2)。
  • Docker 是一个功能很全的工具,而 Podman 采用的是模块化方式,依靠特定的工具来完成特定的任务。例如镜像构建,Docker 本身就可以构建镜像,而 Podman 需要使用 Buildah 工具来构建镜像。

小结

podman 相比 docker 在安全性和容器的管理方面更有优势,接下来的文章会详细介绍下 podman 的安装和使用方法。

你可能感兴趣的:(容器系列知识讲解,docker,linux,运维,podman)