在这里插入图片描述

📃个人主页:island1314

⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞

  • 生活总是不会一帆风顺,前进的道路也不会永远一马平川,如何面对挫折影响人生走向 – 《人民日报》


Podman 是一个开源的容器管理工具,旨在提供与 Docker 类似的体验,但具有更高的安全性和灵活性。本指南将介绍 Podman 是什么、如何安装、配置以及运行容器的基本操作,适合初学者快速上手。

一、Podman 是什么?

Podman(Pod Manager)是一个由 Red Hat 主导开发的开源容器管理工具,无需守护进程(daemonless)无需 root 权限(rootless),完全兼容 Docker CLI 和 OCI(Open Container Initiative)标准。

它的设计目标之一就是 作为 Docker 的直接替代品,尤其在企业级 Linux 环境(如 RHEL、CentOS、Fedora)中被广泛采用。

二、Podman 与 Docker 的对比

它与 Docker 的主要区别在于:

  • 无守护进程:Podman 不依赖后台守护进程,直接以用户权限运行容器,减少安全风险。
  • 兼容 Docker:Podman 支持 Docker 命令行接口(CLI),可以无缝迁移现有 Docker 工作流。
  • 支持 Pods:Podman 引入了 Kubernetes 风格的 Pod 概念,允许在同一 Pod 中运行多个容器。
  • 根权限可选:Podman 支持无根(rootless)模式,普通用户无需 root 权限即可运行容器。
特性 Docker Podman
守护进程 需要 dockerd 后台进程 无守护进程,直接 fork 容器进程
Root 权限 默认需要 root 或 docker 组 支持 rootless 模式(普通用户即可运行)
镜像构建 使用 docker build 命令,依赖 BuildKit 使用 podman build 命令,依赖 Buildah
容器生命周期管理 通过守护进程管理容器生命周期 基于 systemd 管理容器生命周期
安全性 较高,但 daemon 是攻击面 更安全(无 daemon,权限隔离更好)
CLI 兼容性 原生 高度兼容alias docker=podman 基本可用
Compose 支持 原生支持 docker-compose 通过 podman-compose 或新版本内置 podman compose
Swarm 支持 支持 不支持,但可以通过 Nomad 等工具替代
Kubernetes 集成 需额外工具(如 Kind) 原生支持生成 Kubernetes YAML(podman generate kube
Pod 概念 不原生支持(需用 Swarm/K8s) 原生支持 Pod(类似 K8s 的 Pod 模型)
性能 一般性能良好,但在大规模部署或启动时间敏感的环境中可能稍逊于 Podman 由于无守护进程架构,容器启动时间更快
使用场景 开发环境、CI/CD 流水线、生产环境 安全性要求高的环境、生产环境、与 Kubernetes 集成
许可证 Docker Engine 为 Apache License 2.0,Docker Desktop 需要订阅(大企业) 完全开源,Apache License 2.0

三、安装配置 Podman

官网教程:Podman 安装 | Podman 容器工具

1. 在 Ubuntu 上安装

更新系统包索引

sudo apt update

安装 Podman

sudo apt install -y podman

验证安装

podman --version

输出类似 podman version 4.x.x,表示安装成功。

image-20260116205156856

2. 在 Windows 安装

Podman 官方推荐使用 Podman Desktop,一个图形化工具,支持跨平台

3. 配置 Podman

配置容器注册表:Podman 默认从 Docker Hub 拉取镜像,但可以添加其他注册表(如 quay.io)。

编辑 /etc/containers/registries.conf(需要 root 权限)或用户级配置文件 ~/.config/containers/registries.conf:

[registries.search]
registries = ['docker.io', 'quay.io', 'registry.fedoraproject.org']

② 无 root模式配置

Podman 支持无root运行,但需要确保系统支持用户命名空间。检查是否支持:

sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USER

③ 配置存储

Podman 的存储配置文件位于 /etc/containers/storage.conf~/.config/containers/storage.conf。默认使用 overlay 文件系统,可根据需要调整存储驱动或路径。

四、运行容器

1. 拉取镜像

从 Docker Hub 拉取一个 Nginx 镜像:

podman pull docker.io/library/nginx

2. 运行容器

启动一个 Nginx 容器,映射主机端口 8080 到容器端口 80:

podman run -d -p 8080:80 nginx
  • -d:后台运行容器。
  • -p:端口映射,格式为 主机端口:容器端口

访问 http://localhost:8080,即可看到 Nginx 欢迎页面。

3. 查看运行中的容器

列出所有运行中的容器:

podman ps

列出所有容器(包括已停止的):

podman ps -a

4. 管理容器

① 停止容器:

podman stop <container_id>

② 删除容器:

podman rm <container_id>

③ 查看容器日志:

podman logs <container_id>

5. 创建和运行 Pod

① Podman 支持 Kubernetes 风格的 Pod,允许多个容器共享网络和存储。创建一个 Pod:

podman pod create --name mypod

② 在 Pod 中运行两个容器:

podman run -d --pod mypod nginx
podman run -d --pod mypod redis

③ 查看 Pod 状态:

podman pod ls

6. 构建自定义镜像

Podman 支持使用 ContainerfileDockerfile 构建镜像。创建一个简单的 Containerfile

FROM nginx:latest
COPY index.html /usr/share/nginx/html

构建镜像:

podman build -t my-nginx .

运行自定义镜像:

podman run -d -p 8080:80 my-nginx

五、常见问题

Podman vs Docker

  • Podman:无守护进程、支持无根运行、原生支持 Pod。
  • Docker:依赖守护进程、需要 root 权限(除非配置 Docker rootless)。
  • 参考上方对比表格

迁移 Docker 工作流

Podman 提供 Docker 兼容的 CLI,可以直接使用 [Docker 命令](https://so.csdn.net/so/search?q=Docker 命令&spm=1001.2101.3001.7020)。例如,docker run 可替换为 podman run。若需要 Docker CLI 兼容性,可创建别名:

alias docker=podman

性能优化

  • 使用 --storage-driver=overlay 提高性能。
  • 定期清理未使用的镜像和容器:
podman system prune

★,°:.☆( ̄▽ ̄)/$:.°★ 】那么本篇到此就结束啦,如果有不懂 和 发现问题的小伙伴可以在评论区说出来哦,同时我还会继续更新关于【Docker】的内容,请持续关注我 !!

在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐