列出其他用户的容器?

列出其他用户的容器?

有没有办法列出机器上所有正在运行的 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

相关内容