当前位置: 首页 > news >正文

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 上可以使用以下命令安装:
sudo dnf install podman

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

sudo apt-get install podman
  • macOS:可以通过 Homebrew 进行安装:
brew install podman
  • Windows:可以从官方网站下载安装程序进行安装。
基本操作
  • 拉取镜像:与 Docker 类似,使用 podman pull 命令拉取镜像。例如拉取 Ubuntu 镜像:
podman pull ubuntu
  • 运行容器:使用 podman run 命令来运行容器。例如在交互式模式下运行 Ubuntu 容器:
podman run -it ubuntu bash
  • 查看容器:使用 podman ps 查看正在运行的容器,使用 podman ps -a 查看所有容器(包括已停止的)。
  • 停止和删除容器:使用 podman stop 停止容器,使用 podman rm 删除容器。例如停止并删除 ID 为 12345 的容器:
podman stop 12345
podman rm 12345
  • 构建镜像:使用 podman build 命令根据 Dockerfile 构建镜像。例如在当前目录下有一个 Dockerfile,构建一个名为 myapp 的镜像:
podman build -t myapp .
  • 推送镜像:使用 podman push 命令将镜像推送到镜像仓库。例如将 myapp 镜像推送到 Docker Hub:
podman push myapp docker.io/username/myapp
高级功能
  • 无守护进程:Podman 可以在没有守护进程的情况下运行,这意味着可以以普通用户身份运行容器,提高了安全性。
  • Pod 管理:Podman 支持 Pod 的概念,可以将多个容器组合成一个 Pod 进行管理。例如创建一个包含两个容器的 Pod:
podman pod create --name mypod
podman run -d --pod mypod nginx
podman run -d --pod mypod redis
http://www.dtcms.com/a/109380.html

相关文章:

  • Linux红帽:RHCSA认证知识讲解(九)标准输入输出、重定向、过滤器与管道
  • PyTorch的dataloader制作自定义数据集
  • Golang改进后的任务调度系统分析
  • MySQL的进阶语法12(MySQL管理)
  • [250403] HuggingFace 新增检查模型与电脑兼容性的功能 | Firefox 发布137.0 支持标签组
  • 数据库系统-数据库模式
  • UART双向通信实现(序列机)
  • (三十)导入系统内置库 math库
  • 基于大模型预测升主动脉瘤的多维度诊疗研究报告
  • 抖音短视频安卓版流畅度测评 - 真实
  • 关于pycharm远程连接服务器如何debug
  • ngx_log_init
  • RTOS基础 -- NXP M4小核的RPMsg-lite与端点机制回顾
  • Qt基础:主界面窗口类QMainWindow
  • 前端切片上传、上传进度、断点续传、秒传
  • maven项目添加第三方JAR包
  • 《Java编程思想》读书笔记:第九章 接口
  • TI-BQ34Z100 STM32CubeIDE STM32L151 调试过程,含详细步骤文档、代码工程、测试记录、BQ34Z100手册等相关资料
  • 数据框的添加
  • P2758 编辑距离
  • 08_paho.mqtt.cpp库使用示例
  • Python学习笔记(8)关于列表内置函数和多维列表
  • Java 常用数据结构详解
  • Java8 到 Java21 系列之 Stream API:数据处理的新方式(Java 8)
  • Node.js 安装与配置全攻略:从入门到高效开发
  • 做题记录:和为K的子数组
  • 二极管正负极区分
  • Mermaid 语法教程
  • kali中vmtools失效用不了解决方法
  • Leetcode 857 -- 贪心 | 数学