容器进程查找(物理主机视角)
现代使用容器的系统,我们经常需要查找一个异常进程属于哪个容器,以便能够顺藤摸瓜分析存在的问题。但是,在物理主机上无法直接看到容器namespace,所以不是很容易找到进程所述容器。
解决思路
Systemd进程管理器 提供了一个工具可以直接列出所有cgroup的进程,以树状方式展示,类似 tree
命令:
systemd-cgls
将输出内容重定向到文件,然后通过搜索可以找到进程的父进程,直到定位到容器。接下来就可以通过 nsenter管理namespace 进入对应namespace,或者使用 docker exec -it <container_id> /bin/bash
进入容器进行检查。