docker daemon 存在问题

  1. 单点故障问题 docker daemon一旦死亡 所有容器都将死亡
  2. docker daemon  拥有运行中的容器的所有子进程
  3. 所有docker操作都需由具有跟root相同权限的用户执行
  4. 构建容器时 可能会导致安全漏洞

podman

通过直接与image registry, image, container 进行互动,而不是通过守护进程来解决以上问题 

而且podman还可以允许用户在没有完全root权限的情况下可以运行容器。而且还可以和docker兼容

docker是标准的容器管理技术

podman 是一种开源的Linux原生工具 根据开放容器

倡议 标准开发管理运行容器和pod。

podman是一个友好的容器调度器 

是redhat 和centos8中默认的容器引擎

集合了命令集的工具 为了处理容器化进程的不同任务 可以作为一个模块化框架工作,

podman 工具集包括:

podman: pod和容器镜像管理器

buildah:容器镜像生成器

skopeo:容器镜像检查管理器

runc:容器运行器和特性构建器 并传递podman和buildah

crun:可选运行时,为rootless容器提供更大的灵活性 安全性 控制性

k8s 和podman在某些方面也是相似的

podman 可以创建pod一起工作的

k8s ,pod在一个共同的空间里作为一个单元来管理容器

主要好处:开发人员可以共享资源 在一个pod中为同一个应用程序使用不同的容器 一个容器用于前端一个容器可以用于后端 还有一个数据库

pod的配置可以导入k8s兼容的YAML文件 ,可以应用到k8s集群中,从而允许容器更快地进入生产。

podman 是没有守护进程的守护进程是在后台运行的程序 他处理服务进程和请求 没有用户界面 ,podman是一种独特的容器引擎 实际上并不依赖守护进程 而是作为子进程启动容器和pod

podman支持与docker兼容的CLI接口

podman  VS  docker                 有许多共同的特性

podman与Linux内核交互 通过runc容器运行进程而不是daemon来管理容器 

buildah实用程序用于替代docker 

build作为容器镜像构建工具 

docker push被skopeo替代用于在注册表和容器引擎之间移动容器镜像

架构:

docker    使用守护进程 一个正在后台运行的程序      来创建镜像和运行容器  

podman   无守护进程的架构这意味着它可以在启动容器的用户下运行容器

root特权:

podman没有守护进程来管理活动 也无需为其分配root权限 docker在其守护进程配置中添加了rootless模式 但 podman首先使用里这种方法 并将其本特性进行了推广 原因:

安全:

podman允许容器使用rootless权限 rootless容器被认为比root特权的容器更安全  在docker中守护进程拥有root权限 这使得它们更易成为攻击者的首选入侵点podman可以同时运行root容器和rootless容器

systemd:

如果没有守护进程 podman需要另一个工具来管理服务并支持 后台运行的容器systemd为现有容器创建控制单元或者用来生成新的容器 systemd还可以与podman集成 允许它在默认情况下运行启用了systemd的容器 从而无需进行任何修改

构建镜像:

docker可以自己构建容器镜像 ,podman则需要另一种名为buildah的工具的辅助 该工具充分体现了他的特殊性 他是为构建镜像而设计的 而不是为构建容器而生

docker swarm               podman不支持docker swarm 

podman增加了对docker compose 的支持  使其对swarm兼容 从而克服了这个限制,docker因为原生性与swarm融合的也很好。

docker是一个独立的强大的工具在整个循环中处理所有的容器化任务,有优点也会有缺点

podman采取模块化依靠专门的工具 来完成特定的任务

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐