podman和与docker的比较 及podman使用

Podman 与 Docker 的比较和区别

架构差异
  • Docker :采用客户端 - 服务器(C/S)架构,有一个以 root 权限运行的守护进程 dockerd 来管理容器的生命周期。客户端(docker 命令行工具)与守护进程进行通信,执行各种操作。
  • Podman :无守护进程,直接调用底层的 OCI(开放容器倡议)运行时(如 runc)来创建和管理容器。这使得 Podman 更加轻量级,并且可以以普通用户身份运行,避免了因守护进程以 root 权限运行带来的安全风险。
安全特性
  • Docker:由于守护进程以 root 权限运行,一旦守护进程被攻击,攻击者可能获得 root 权限,从而控制整个系统。虽然可以通过一些安全措施(如用户命名空间)来增强安全性,但配置相对复杂。
  • Podman:可以以普通用户身份运行容器,降低了容器逃逸导致系统被攻击的风险。同时,Podman 遵循安全最佳实践,在默认情况下提供了较高的安全性。
兼容性
  • 命令行兼容性:Podman 的命令行接口与 Docker 高度兼容,大部分 Docker 命令可以直接在 Podman 中使用,这使得从 Docker 迁移到 Podman 变得相对容易。
  • 镜像兼容性:Podman 与 Docker 都遵循 OCI 标准,因此可以使用相同的容器镜像。可以从 Docker Hub 等公共镜像仓库拉取镜像,并在 Podman 中使用。
生态系统
  • Docker:拥有庞大的生态系统,包括 Docker Hub(公共镜像仓库)、Docker Compose(多容器应用管理工具)、Docker Swarm(容器编排工具)等。这些工具和服务为开发者提供了丰富的选择,方便进行容器的管理和应用的部署。
  • Podman:虽然生态系统相对较小,但也在不断发展。Podman 支持使用 Docker Hub 等公共镜像仓库,并且有一些与 Docker Compose 类似的工具(如 Podman Compose)来管理多容器应用。
性能
  • 启动速度:由于 Podman 无守护进程,启动容器时无需与守护进程进行通信,因此在某些情况下启动速度可能更快。
  • 资源占用:Podman 相对轻量级,资源占用通常比 Docker 低,尤其是在运行大量容器时,这种优势更加明显。

Podman 工具使用详情

安装
  • Linux:不同的 Linux 发行版安装方式不同。例如在 Fedora 上可以使用以下命令安装:
bash 复制代码
sudo dnf install podman

在 Ubuntu 上则可以使用以下命令:

bash 复制代码
sudo apt-get install podman
  • macOS:可以通过 Homebrew 进行安装:
bash 复制代码
brew install podman
  • Windows:可以从官方网站下载安装程序进行安装。
基本操作
  • 拉取镜像 :与 Docker 类似,使用 podman pull 命令拉取镜像。例如拉取 Ubuntu 镜像:
bash 复制代码
podman pull ubuntu
  • 运行容器 :使用 podman run 命令来运行容器。例如在交互式模式下运行 Ubuntu 容器:
bash 复制代码
podman run -it ubuntu bash
  • 查看容器 :使用 podman ps 查看正在运行的容器,使用 podman ps -a 查看所有容器(包括已停止的)。
  • 停止和删除容器 :使用 podman stop 停止容器,使用 podman rm 删除容器。例如停止并删除 ID 为 12345 的容器:
bash 复制代码
podman stop 12345
podman rm 12345
  • 构建镜像 :使用 podman build 命令根据 Dockerfile 构建镜像。例如在当前目录下有一个 Dockerfile,构建一个名为 myapp 的镜像:
bash 复制代码
podman build -t myapp .
  • 推送镜像 :使用 podman push 命令将镜像推送到镜像仓库。例如将 myapp 镜像推送到 Docker Hub:
bash 复制代码
podman push myapp docker.io/username/myapp
高级功能
  • 无守护进程:Podman 可以在没有守护进程的情况下运行,这意味着可以以普通用户身份运行容器,提高了安全性。
  • Pod 管理:Podman 支持 Pod 的概念,可以将多个容器组合成一个 Pod 进行管理。例如创建一个包含两个容器的 Pod:
bash 复制代码
podman pod create --name mypod
podman run -d --pod mypod nginx
podman run -d --pod mypod redis
相关推荐
❀͜͡傀儡师2 小时前
docker一键部署HFish蜜罐
运维·docker·容器
DO_Community2 小时前
DigitalOcean容器注册表推出多注册表支持功能
服务器·数据库·docker·kubernetes
dnpao3 小时前
linux onlyoffice服务向docker容器中添加中文字体
linux·运维·docker
回忆是昨天里的海3 小时前
k8s暴露服务-Ingress环境部署
云原生·容器·kubernetes
tzhou644524 小时前
Kubernetes Pod 入门
云原生·容器·kubernetes
java_logo4 小时前
Dify 开源 LLM 应用开发平台企业级 Docker Compose 部署手册
docker·容器·开源·dify部署·dify部署文档·dify部署方案·dify部署教程
jarreyer5 小时前
【docker的gpu加速相关问题解决记录】
运维·docker·容器
韭菜钟5 小时前
制作自定义Docker镜像并部署使用
运维·docker·容器
椰汁菠萝5 小时前
docker部署gitlab
docker·容器·gitlab
知识分享小能手5 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04 中安装 Docker 容器 —— 知识点详解(26)
学习·ubuntu·docker