在线安装
1 | sudo yum install -y epel-release |
离线安装
准备离线安装包
在联网的 CentOS 7 机器上下载 RPM 包,需先安装 yum-utils 工具,用于下载依赖包
1 | # 安装工具 |
下载完成后,/tmp/podman-offline 目录会包含所有需要的 RPM 文件。
将 RPM 包传输到离线机器通过 U 盘、移动硬盘等方式,将 podman-offline 目录复制到离线的 CentOS 7 机器上(例如 /root/podman-offline)
离线安装 Podman
1 | # 进入 RPM 包目录 |
配置修改(root)
镜像容器存储配置
在 Podman 中,容器镜像、卷和其他相关数据的默认存储路径通常为 /var/lib/containers。若需修改资源存放路径,可通过配置文件永久修改
Podman 使用 /etc/containers/storage.conf 配置存储路径,修改此文件可永久生效:
配置文件非空,存在大量配置,建议备份。
1 | sudo cp /etc/containers/storage.conf /etc/containers/storage.conf.bak |
1 | sudo vi /etc/containers/storage.conf |
找到 graphroot 配置项(默认值为 /var/lib/containers/storage),将其改为新路径(例如 /data/podman/storage)
仓库配置
Podman 默认使用的镜像仓库配置在 /etc/containers/registries.conf 文件中,该文件定义了镜像仓库的地址及搜索顺序。
1 | sudo vi /etc/containers/registries.conf |
提高系统级文件句柄限制
编辑 /etc/sysctl.conf,添加:
1 | fs.file-max = 1048576 |
执行 sysctl -p
使配置生效。
创建或编辑:/etc/systemd/system/podman.service.d/limits.conf
1 | [Service] |
然后:
1 | systemctl daemon-reload |
提高用户会话限制
编辑 /etc/security/limits.conf
,添加:
1 | root soft nofile 65535 |
需要重新登录才能生效。
非root用户配置和root配置区别
在 Podman 中,root 用户和非 root 用户(普通用户) 的配置及存储路径存在显著区别,不同用户操作时会使用独立的存储路径,彼此隔离。具体差异如下:
一、核心区别:配置文件与存储路径的隔离性
Podman 为了安全性和隔离性,对 root 用户和普通用户采用完全独立的配置体系和存储路径,不同用户的操作不会相互干扰。
二、详细差异对比
维度 | root 用户 | 非 root 用户(普通用户) |
---|---|---|
配置文件路径 | 系统级配置:/etc/containers/storage.conf全局生效,影响所有用户的默认配置) | 用户级配置:~/.config/containers/storage.conf ( (仅对当前用户生效,优先级高于系统级配置) |
GraphRoot(持久化存储) | 默认路径:/var/lib/containers/storage 存储内容:所有用户共享的镜像、容器、卷等 | 默认路径:~/.local/share/containers/storage 存储内容:仅当前用户可见的镜像、容器、卷等 |
RunRoot(临时运行时存储) | 默认路径:/run/containers/storage | 默认路径:/run/user/ |
权限控制 | 拥有最高权限,可操作所有容器和系统资源 | 受限于用户自身权限,无法访问其他用户的容器或资源 |
功能限制 | 支持所有 Podman 功能(如特权容器、端口映射等) | 部分功能受限(如无法使用 1024 以下的特权端口) |
podman开机启动
Podman 本身是一个命令行工具(无后台服务进程),不像 Docker 有 dockerd 这样的守护进程需要常驻运行,因此不需要像服务一样 “启动 Podman”。
当你执行 podman 相关命令(如 podman run、podman ps 等)时,Podman 会直接调用系统资源完成操作,无需预先启动任何服务。这也是 Podman 与 Docker 的核心区别之一(无守护进程设计)。
Podman 采用 “无守护进程(daemonless)” 架构,所有操作通过直接调用内核接口和容器运行时完成,不需要后台服务支持。
无论 root 用户还是普通用户,使用 Podman 时只需直接执行命令即可,无需提前启动或管理任何 Podman 服务。
验证 Podman 是否可用
只需执行一个简单的命令检查 Podman 是否正常工作,无需 “启动” 操作:
1 | podman --version |
如果以上命令能正常输出结果,说明 Podman 已处于 “可用状态”,无需额外启动步骤。
Podman 不需要像传统服务那样手动 “启动”,其无守护进程的设计使其可以直接通过命令调用运行。只要安装正确,随时执行 podman 命令即可使用,无需预先启动任何后台服务
容器自启动替代方案
Podman 中没有 –restart 参数(这是 Docker 的语法),但可以通过其他方式实现容器的自动重启功能,核心是借助 systemd 服务管理来实现类似效果。
Podman 采用 “无守护进程(daemonless)” 设计,不依赖后台进程监控容器状态,因此无法像 Docker 那样通过守护进程内置的 –restart 策略自动重启容器。替代方案是利用系统的服务管理工具(如 systemd)来监控容器状态并实现自动重启,这也是 Podman 官方推荐的方式。
生成容器的 systemd 服务文件
1 | # 先创建一个命名容器(需持久化,不能用 --rm) |