You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RHEL8下非Root用户运行ubi8-init容器Podman+systemd异常求助

解决方案:RHEL8非Root用户Podman运行ubi8-init容器的cgroup权限问题

我之前在RHEL8 + cgroup v2的环境下折腾过类似的Podman权限问题,结合官方文档和实际踩坑经验,给你几个可行的解决方向:

1. 用systemd委托权限替代临时chown

你之前手动chowncgroup路径只是临时 workaround,cgroup v2下正确的做法是让systemd把用户会话的cgroup权限委托给普通用户:

  • 创建(或编辑)/etc/systemd/system/user@.service.d/delegate.conf文件,写入以下内容:
    [Service]
    # 包含freezer权限来解决podman cp的冻结问题
    Delegate=cpu cpuset io memory pids freezer
    
  • 重新加载systemd配置并终止当前用户会话(需要重新登录):
    sudo systemctl daemon-reload
    sudo loginctl terminate-user bob
    

重新登录bob用户后,systemd会自动处理用户会话的cgroup权限,不需要再手动修改/sys/fs/cgroup下的文件权限。

2. 配置Podman优先使用systemd作为cgroup管理器

cgroup v2下systemd的兼容性比cgroupfs好得多,修改用户级Podman配置:

  • 编辑~/.config/containers/containers.conf(如果没有就创建),添加或修改:
    [engine]
    cgroup_manager = "systemd"
    events_logger = "journald"
    
  • 执行podman system migrate让配置生效

3. 验证subuid/subguid配置

虽然你已经配置了subuid/subguid,但还是确认一下:

cat /etc/subuid | grep bob
cat /etc/subgid | grep bob

确保输出都是bob:100000:65536,如果没问题,podman system migrate也会重新加载这些映射。

4. 测试验证

完成以上配置后,重新登录bob用户,执行启动命令:

podman run --name=ubi-init-test --cgroup-manager=systemd -it --rm --systemd=true ubi8-init

启动成功后,再尝试podman cp命令,比如:

echo "test content" > test.txt
podman cp test.txt ubi-init-test:/tmp/

应该不会再出现cgroup.freeze的权限错误了。

额外建议

Podman 2.0.5是比较旧的版本,RHEL8的后续更新中修复了不少cgroup v2相关的bug,如果你有条件,可以执行sudo yum update podman升级到官方支持的最新版本,能避免一些潜在问题。

内容的提问来源于stack exchange,提问作者CozyBob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 19:57:44