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

什么是Podman?能否替代Docker?Podman快速入门

什么是Podman

Podman(POD Manager)是一个开源的无守护进程(daemonless)容器引擎,用于管理容器、容器镜像、容器卷和网络。

它兼容 OCI 标准,可以运行 Docker 镜像,并且设计上与 Docker CLI 命令高度兼容。

podman logo

Podman 的特点与优势

  • Daemonless进程,更轻

Podman 直接使用 RunC(或其他符合 OCI 的运行时)来创建和运行容器。每个容器都是当前用户的一个子进程。

基于 Daemonless 能够提供更安全(减少攻击面)、更稳定(守护进程崩溃不影响现有容器)、资源消耗更低、更符合 Linux 进程模型。

对比 Docker,依赖于一个长期运行的后台进程 (dockerd) 来管理容器。

  • Rootless容器,更安全

普通用户无需 sudo 或 root 权限即可直接启动和管理容器。

极大提升安全性(容器进程以用户权限运行,即使容器被攻破,影响范围也限于该用户)、满足更严格的安全合规要求、允许多用户在同一系统上安全地管理各自的容器。

对比 Docker,目前也支持 Rootless 容器,但需要进行特殊配置,且默认任然需要 root 权限。

  • 基于标准设计,兼容好

Podman 支持 OCI 标准,且与 Docker 兼容,大部分命令与 Docker 命令相同。

Docker 用户迁移成本小,学习曲线低,现有脚本通常只需替换命令即可工作。

  • Kubernetes Pod 原生支持:

Podman 对 Kubernetes 的 Pod 概念有原生支持。可以轻松创建和管理包含多个共享命名空间(网络、IPC、UTS)容器的 Pod。

可以在创建、启动、检查和管理Pod。直接使用Podman操作Kubernetes YAML,从Pod生成Kubernetes YAML,并部署到现有的Kubernetes环境中。

Podman 安装

  • 在 Window和 MacOS 上安装 Podman

容器是基于 Linux 内核的,因此和 Docker 一样,在 Window 和 MacOS 上运行容器时需要用到虚拟机。

和 Docker Machine 一样,Podman 也有 Podman Machine 虚拟机。

如在 MacOS 上安装 Podman

brew install podman
podman info
podman machine init
podman machine start
podman machine ls
podman run hello-world

在 Windows上,每台 Podman 机器都由一个虚拟化的Windows Subsystem for Linux(WSLv2)发行版提供支持。

安装后,可以直接从 Windows PowerShell(或CMD)提示符运行podman命令,该命令会与在WSL环境中运行的podman服务进行远程通信。

或者,如果您更喜欢Linux提示符和Linux工具,也可以直接从WSL实例访问Podman。

除了直接使用 podman 外,Podman Desktop 也可以作为图形界面工具,

  • 在 Linux 上安装 Podman

在 Linux 上安装 Podman 的最简单方法是使用包管理器。

# Arch Linux & Manjaro Linux
sudo pacman -S podman# Alpine Linux
sudo apk add podman# CentOS Stream/Fedora
sudo dnf -y install podman# Debian/Ubuntu
sudo apt-get -y install podman# Gentoo
sudo emerge app-containers/podman# openSUSE
sudo zypper install podman

Podman 使用

podman 命令和 docker 命令基本一样,设置一个简单的别名 alias docker=podman 就能无缝切换。

  • 查找镜像

Podman会在不同的镜像仓库中搜索。

podman search httpd --filter=is-official
  • 拉取镜像

建议使用完整的镜像名称(如docker.io/library/httpd,而不是httpd),以确保您使用的是正确的镜像。

podman pull docker.io/library/httpd
  • 运行一个容器

示例容器将运行一个基础的httpd服务器

podman run -dt -p 8080:80/tcp docker.io/library/httpd

容器是在分离模式-d下运行的,Podman将在执行命令后打印出容器ID。-t 选项还会添加一个伪终端,以便在交互式shell中运行任意命令。-p 添加一个端口映射,将 httpd 的 80 端口映射到主机的8080端口。

  • 查看容器状态

podman ps命令用于列出已创建和正在运行的容器。

podman ps

如果添加 -a 参数,Podman 将显示所有容器,包括已创建、已退出、正在运行等。

  • 测试httpd服务

通过端口映射,httpd 服务的 80 端口映射到宿主机的 8080 端口。

curl http://localhost:8080
  • 其他命令

其他如 podman logs 、podman inspect、 podman stoppodman rm 、podman images 和 docker 的命令一致,可以查看详细的 podman 或 docker 的命令行文档。

Podman和Docker生态对比

对比项目DockerPodman
Daemonlessdockerd
Rootless需要特殊配置默认rootless
MachineDocker MachinePodman Machine
ComposeDocker ComposePodman Compose
DesktopDocker DesktopPodman Desktop
DockerfileDockerfileContainerfile

Podman 和 Docker 该如何选?

如果对安全是否有更高的要求,推荐 Podman

  • Podman 是开源的,由CNCF社区托管。避免了单一厂商的锁定。
  • Podman 默认是 Rootless。业务逻辑运行在容器内,避免了越权问题。
  • Podman 默认不运行后台进程。减少容器运行时消耗的资源,以及安全攻击面。

如果对产品成熟度和生态完善性有更高的要求,推荐 Docker

  • 当前很多DevOps工具默认集成了 Docker。如 Jenkines、ArgoCD等
  • Podman 还处于 CNCF 的沙盒阶段,距离孵化和毕业还需要很长一段时间。
  • Podman 功能上大部分兼容 Docker,但任然有一些功能还未完全兼容,如不支持 Docker 的 --restart=always(依赖守护进程实现容器自启),Podman 需通过 Systemd 单元文件管理。

http://www.lryc.cn/news/585475.html

相关文章:

  • 雨污管网智慧监测系统网络建设方案:基于SD-WAN混合架构的最佳实践
  • 第三方渗透测试:范围咋定?需供应商同意吗?
  • 正义的算法迷宫—人工智能重构司法体系的技术悖论与文明试炼
  • ICLR 2025 | InterpGN:时间序列分类的透明革命,Shapelet+DNN双引擎驱动!
  • 目标检测:视觉系统中的CNN-Transformer融合网络
  • Day58
  • 5G标准学习笔记14 - CSI--RS概述
  • Set 二分 -> 剑指算法竞赛
  • 基于机器视觉的半导体检测解决方案
  • MySQL内置函数(8)
  • MySQL中使用group_concat遇到的问题及解决
  • 【AI大模型】BERT微调文本分类任务实战
  • spring boot 详解以及原理
  • 力扣-141.环形链表
  • 力扣_二叉搜索树_python版本
  • leetcode 3169. 无需开会的工作日 中等
  • 在 Spring Boot 中优化长轮询(Long Polling)连接频繁建立销毁问题
  • 100G系列光模块产品与应用场景介绍
  • 7.12 卷积 | 最小生成树 prim
  • ICCV2025接收论文速览(1)
  • python之set详谈
  • 基于图神经网络的社交网络影响力预测模型
  • 【操作系统】 Linux 系统调用(一)
  • 线程通信与进程通信的区别笔记
  • c++11——左值、右值、完美转发、移动语义
  • 注意力机制十问
  • JavaAI时代:重塑企业级智能开发新范式
  • slam全局路径规划算法详解(Dijkstra、A*)
  • 【软考高项】信息系统项目管理师-第2章 信息技术发展(2.1 计算机软硬件)
  • Leaflet面试题及答案(21-40)