什么是 Podman
Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台使用。Podman 提供与 Docker 非常相似的功能。它不需要在系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。
Podman 可管理和运行任何符合 OCI 规范的容器和容器镜像。Podman 提供了一个与 Docker 兼容的命令行前端来管理 Docker 镜像。
主要区别
Docker 在实现 OCI 的时候,需要一个守护进程,其次需要以 root 运行,因此也带来了安全隐患;
Podman 不需要守护程序,不需要 root 用户运行,从逻辑架构上,比 Docker 更加合理;
在 Docker 的运行体系中,需要多个 daemon 才能调用到 OCI 的实现;
在容器管理链路中,Docker Engine 实现就是 dockerd;
dockerd 调用 containerd,containerd 调用 containerd-shim。顾名思义 shim 起的作用也就是避免父进程退出影响容器的运行;
Podman 直接调用 OCI,通过 common 作为容器进程的管理工具,但不需要 dockerd 这种以 root 身份运行的守护进程;
Podman 体系中,有个称为 common 的守护进程,运行路径通常是 /usr/libexec/Podman/conmon,它是各个容器进程的父进程,每个容器各有一个,common 的父进程通常是 1 号进程。Podman 中的 common 其实相当于 Docker 体系的 containerd-shim;
图片Podman 不需要守护进程,而 Docker 需要守护进程。
使用区别
Podman 的定位也是与 Docker 兼容,因此在使用上面尽量靠近 Docker。使用方面,可以分成两个方面来说,一是系统构建者的角度,二是使用者的角度;
在系统构建者方面,Podman 的默认软件,与 Docker 区别不大,只在进程模型、进程关系方面有所区别。如果习惯 Docker 几个关联进程的调试方法,在 Podman 中则需要适应。总体来看,Podman 比 Docker 要简单。由于 Podman 比 Docker 少了一层 daemon,因此重启的机制也就不同了;
在使用者方面,Podman 与 Docker 的命令基本兼容,都包括容器运行时、本地镜像、镜像仓库几个方面。因此 Podman 命令行工具与 Docker 类似,比如构建镜像、启停容器;
Docker/Podman 可进行替换。因此,即便使用了 Podman,仍然可使用 Docker 作为镜像仓库,这也是兼容性最关键的部分。
常用命令
容器相关命令如下:
命令 | 作用 |
---|---|
podman run | 创建启动容器 |
podman start | 启动容器 |
podman ps | 查看容器 |
podman stop | 终止容器 |
podman restart | 重启容器 |
podman exec | 进入容器 |
podman export | 导出容器 |
podman import | 导入容器快照 |
podman rm | 删除容器 |
podman logs | 查看日志 |
镜像相关命令如下:
命令 | 作用 |
---|---|
podman search | 检索镜像 |
podman pull | 获取镜像 |
podman images | 列出镜像 |
podman rmi | 删除镜像 |
podman save | 导出镜像 |
podman load | 导入镜像 |
本文链接:https://my.lmcjl.com/post/16289.html
4 评论