有没有办法列出机器上所有正在运行的 podman 容器,包括来自其他用户的容器?
即使我以 root 身份登录,podman ps -a
只是列出用户的所有容器,但我想查看机器上的所有容器。
答案1
据我所知,podman 本身没有能力做到这一点——拥有一个中央守护进程来仲裁容器的创建是违反 podman 哲学的!
然而,容器仍然主要是奇特的命名空间,因此您可以使用lsns
(“列表命名空间”)工具获取所有容器的列表
lsns
很多命名空间!让我们将自己限制在这些挂载命名空间中:
lsns -t mnt
好多了!
现在,您可以获取该进程的进程ID已创建命名空间 - 那就是 podman!
lsns -t mnt -n -o PPID
现在让我们把这一切放在一起:
#!/usr/bin/env zsh
ppids=$(lsns -t mnt -n -o PPID)
uids=""
for ppid in ${ppids}; do
uids="${uids}\n$(stat -c '%u' /proc/$ppid)"
done
uids=$(echo "$uids" | sort -u)
for uid in uids; do
## su(do) as that user: podman ps -a
done