Podman和Docker有什么不同?

5
我知道Docker和Kubernetes解决了同样的问题。大多数用户可以将Docker别名为Podman(alias docker=podman),而不会有任何问题。
那么它们之间有什么区别呢?

3
Docker和Kubernetes解决的问题根本不一样,对吗?Docker和Podman之间的主要区别在于,Podman没有像Docker那样以root权限作为守护进程运行,并且使用了"pods"。有关详细信息,请查看任何有关“为什么选择Podman而非Docker”的博客文章。 - Richard Huxton
1
Podman和Docker之间的一些差异列在https://github.com/containers/podman/blob/main/transfer.md中。 - Erik Sjölund
2个回答

6
Podman比Docker更加安全和轻量。Docker依赖于在您系统后台运行的守护进程。每当您访问Docker CLI或API来运行和管理容器时,实际上是在与该守护进程通信。Podman没有守护进程!如果您使用Podman CLI执行命令,则会直接在系统上执行这些命令并运行容器。因此,Podman不依赖于单个故障点,并且同样重要的是,您可以以非root用户身份运行容器。Docker守护程序以root权限在后台运行。实际上:
  1. 默认情况下,Podman容器作为非root用户运行

  2. 用户可以运行自己的容器,在这样做时,容器在用户命名空间内运行,严格隔离且不可访问其他用户

  3. 容器没有守护进程,并在轻量级CRI-o容器运行时上运行

请注意,无根容器没有IP地址,只能绑定到非特权端口,并且必须是用于存储的目录的所有者。


2
这里是Docker和Podman之间的一些核心区别:
Docker Podman
Docker是一个独立、强大的单体工具 Podman采用模块化方法,依赖于专门的工具来执行特定的任务
Docker使用守护进程 Podman不使用守护进程
Docker守护进程需要root权限 Podman容器可以以非特权用户身份运行
由于需要root访问,因此比Podman不够安全 由于无需root访问,因此比docker更安全,因为无根容器被认为比其他容器更安全
您可以在互联网上找到很多关于Docker vs Podman的文章。

1
这意味着podman将更多的工作推入systemd,使得Linux上最臃肿的守护进程变得更加臃肿。它读起来像是来自podman的营销材料,缺少所有不在podman下运行的东西。 - BMitch
2
@BMitch,它读起来像是针对同一问题的前10-15个谷歌搜索结果,这些结果也缺乏细节,但对我来说并不像营销。您能否为我们其他人解释一下,不适用于podman的所有内容以及它对systemd产生的负担? - Brian Cline
systemd的整个目的就是负责运行您系统上的所有服务。鉴于此,使用systemd听起来就像是Podman的一个特性。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接