喵星之旅-狂奔的兔子-centos7安装podman

在线安装

1
2
3
4
sudo yum install -y epel-release
sudo yum install -y podman
podman --version

离线安装

准备离线安装包

在联网的 CentOS 7 机器上下载 RPM 包,需先安装 yum-utils 工具,用于下载依赖包

1
2
3
4
5
6
7
8
9
# 安装工具
sudo yum install -y yum-utils

# 创建存放 RPM 包的目录
mkdir -p /tmp/podman-offline && cd /tmp/podman-offline

# 下载 Podman 及其所有依赖(包括 EPEL 仓库的包).需要在和环境一样的机器上执行,因为已经安装的不会下载。如果没有,可以创建一个空容器,在容器内操作。
sudo yumdownloader --resolve --destdir=. podman

下载完成后,/tmp/podman-offline 目录会包含所有需要的 RPM 文件。

将 RPM 包传输到离线机器通过 U 盘、移动硬盘等方式,将 podman-offline 目录复制到离线的 CentOS 7 机器上(例如 /root/podman-offline)

离线安装 Podman

1
2
3
4
5
# 进入 RPM 包目录
cd /root/podman-offline

# 安装所有依赖和 Podman(--nodeps 可能导致依赖问题,建议优先使用正常安装)
sudo rpm -ivh *.rpm

配置修改(root)

镜像容器存储配置

在 Podman 中,容器镜像、卷和其他相关数据的默认存储路径通常为 /var/lib/containers。若需修改资源存放路径,可通过配置文件永久修改

Podman 使用 /etc/containers/storage.conf 配置存储路径,修改此文件可永久生效:

配置文件非空,存在大量配置,建议备份。

1
sudo cp /etc/containers/storage.conf /etc/containers/storage.conf.bak
1
2
sudo vi /etc/containers/storage.conf

找到 graphroot 配置项(默认值为 /var/lib/containers/storage),将其改为新路径(例如 /data/podman/storage)

仓库配置

Podman 默认使用的镜像仓库配置在 /etc/containers/registries.conf 文件中,该文件定义了镜像仓库的地址及搜索顺序。

1
2
3
4
5
6
7
8
9
sudo vi /etc/containers/registries.conf

# 在 [registries.search] 中添加仓库地址(如阿里云),不能包含 http:// 或 https:// 等 URI 协议前缀(与docker
不同)

[registries.search]
registries = ['registry.aliyuncs.com', 'docker.io', 'quay.io']


提高系统级文件句柄限制

编辑 /etc/sysctl.conf,添加:

1
fs.file-max = 1048576

执行 sysctl -p 使配置生效。

创建或编辑:
/etc/systemd/system/podman.service.d/limits.conf

1
2
[Service]
LimitNOFILE=65535

然后:

1
2
systemctl daemon-reload
systemctl restart podman

提高用户会话限制
编辑 /etc/security/limits.conf,添加:

1
2
3
4
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard 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//containers
权限控制 拥有最高权限,可操作所有容器和系统资源 受限于用户自身权限,无法访问其他用户的容器或资源
功能限制 支持所有 Podman 功能(如特权容器、端口映射等) 部分功能受限(如无法使用 1024 以下的特权端口)

podman开机启动

Podman 本身是一个命令行工具(无后台服务进程),不像 Docker 有 dockerd 这样的守护进程需要常驻运行,因此不需要像服务一样 “启动 Podman”。

当你执行 podman 相关命令(如 podman run、podman ps 等)时,Podman 会直接调用系统资源完成操作,无需预先启动任何服务。这也是 Podman 与 Docker 的核心区别之一(无守护进程设计)。

Podman 采用 “无守护进程(daemonless)” 架构,所有操作通过直接调用内核接口和容器运行时完成,不需要后台服务支持。

无论 root 用户还是普通用户,使用 Podman 时只需直接执行命令即可,无需提前启动或管理任何 Podman 服务。

验证 Podman 是否可用
只需执行一个简单的命令检查 Podman 是否正常工作,无需 “启动” 操作:

1
2
podman --version
podman run --rm hello-world

如果以上命令能正常输出结果,说明 Podman 已处于 “可用状态”,无需额外启动步骤。

Podman 不需要像传统服务那样手动 “启动”,其无守护进程的设计使其可以直接通过命令调用运行。只要安装正确,随时执行 podman 命令即可使用,无需预先启动任何后台服务

容器自启动替代方案

Podman 中没有 –restart 参数(这是 Docker 的语法),但可以通过其他方式实现容器的自动重启功能,核心是借助 systemd 服务管理来实现类似效果。

Podman 采用 “无守护进程(daemonless)” 设计,不依赖后台进程监控容器状态,因此无法像 Docker 那样通过守护进程内置的 –restart 策略自动重启容器。替代方案是利用系统的服务管理工具(如 systemd)来监控容器状态并实现自动重启,这也是 Podman 官方推荐的方式。

生成容器的 systemd 服务文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 先创建一个命名容器(需持久化,不能用 --rm)
sudo podman run -d --name my-nginx -p 8080:80 nginx

# 生成 systemd 服务文件(用于自启动)
sudo podman generate systemd --name my-nginx --files

# 查看生成的文件
ls -l *.service
# 输出:-rw-r--r--. 1 root root 1234 ... container-my-nginx.service

# 将生成的服务文件移动到 systemd 配置目录
sudo mv container-my-nginx.service /etc/systemd/system/

# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 启用开机自启
sudo systemctl enable container-my-nginx.service

# 立即启动服务(启动容器)
sudo systemctl start container-my-nginx.service

# 查看服务状态
sudo systemctl status container-my-nginx.service
文章目录
  1. 在线安装
  2. 离线安装
    1. 准备离线安装包
    2. 离线安装 Podman
  3. 配置修改(root)
    1. 镜像容器存储配置
    2. 仓库配置
    3. 提高系统级文件句柄限制
  4. 非root用户配置和root配置区别
  5. podman开机启动
  6. 容器自启动替代方案
|