如何查看服务器上所有用户(含root)的rootless容器和镜像?
全量查询Podman容器与镜像的方法
Podman的rootless容器运行在对应用户的独立命名空间下,运行状态、存储数据默认保存在用户家目录的$HOME/.local/share/containers/路径下,root用户直接执行podman命令默认只会读取/var/lib/containers/下的root层级容器数据,因此无法直接列出所有普通用户的rootless容器。
解决方法
方案1:遍历系统用户查询(兼容所有Podman版本)
通过遍历系统所有用户,分别以对应用户身份执行查询命令,可兼容所有版本的Podman,结果最准确。
- 全量查询所有容器命令示例:
# 先输出root用户的容器 echo "=== root 用户容器 ===" podman container ps --all # 遍历所有普通用户(默认普通用户UID范围为1000-65533,可根据自身系统规则调整) for user in $(awk -F: '$3 >= 1000 && $3 < 65534 {print $1}' /etc/passwd); do echo -e "\n=== 用户 $user 的rootless容器 ===" runuser -u $user -- podman container ps --all 2>/dev/null || echo "该用户无运行Podman环境或无容器" done
- 全量查询所有镜像:将上述命令中的
podman container ps --all替换为podman image ls即可。
方案2:使用原生参数查询(Podman 3.1及以上版本支持)
3.1及以上版本的Podman新增了--user参数,root用户执行时可直接指定查询对象:
- 查询指定用户的容器:
podman ps --all --user <用户名/UID> - 一键查询所有用户的所有容器:
podman ps --all --user all
注意事项
- 若普通用户自定义了Podman存储路径,需要在执行查询命令时传入对应
CONTAINERS_CONF环境变量指定配置文件路径,才能正常读取容器数据。 - 若存在未开启登录权限的系统用户运行了rootless容器,需要自行调整遍历用户的UID范围,覆盖对应账号。
内容的提问来源于stack exchange,提问作者無名前
相关产品推荐
相关产品推荐

