在某些情况下,可能在宿主机上存在“看得到却摸不到”的进程;有的时候容器太多,想知道进程具体是哪个容器运行的?我们来尝试下:
首先在容器中的test目录下运行sleep 10000
在宿主机ps能看到对应的进程
看对应的proc下的cwd,也确实和容器中的路径一样,在/test目录下,但是宿主机实际上并没有这个路径
大概率可以判断这个进程不是在宿主机上的,可以通过如下这个命令判断命令是否是在容器中执行的:
ps -e -o pid,cmd,comm,cgroup
可以看到pid为29656的cgroup是在docker里,且docker-xxxx,xxxx就是docker的id,也就是:
bf85501b3084601ba76b8cb303917134d58b5e7783c14c1636ff1c56a3d83c1f
或者cat对应的进程cgroup也可以:
cat /proc/xxxx/cgroup
和我们执行的sleep命令的容器一致:
因此可以得出结论,pid为29656的进程是在
bf85501b3084601ba76b8cb303917134d58b5e7783c14c1636ff1c56a3d83c1f容器里执行的。