跳转至

Docker 查找容器的宿主机进程ID


2016-08-11 by dongnan

目标

根据容器进程 ID找到相对应的宿主机进程ID

使用场景

在某些情况下,比如系统负载很高 docker stop 无法关闭某个容器(无响应),这时可以根据容器进程的ID找到宿主机进程ID, 然后 kill掉这个容器(容器内数据有丢失风险,最好使用数据卷持久化数据)。

操作步骤

列出当前容器

# 格式化输出
docker ps --format '{{ .ID }} {{ .Names }}'

CONTAINER ID    NAMES
1201281cb959    web
425a6234df74    db

获得容器进程ID

# web是容器的名称
docker inspect -f '{{ .State.Pid }}' web
9834

进程信息

tail /proc/9834/cmdline ;echo
nginx: master process nginx -g daemon off;

也可以使用top子命令

docker top web

最后如有必要可以kill这个进程ID,这等效于强制关闭容器,可能会数据丢失。

kill -9 9834

Docker容器进程

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。 因此容器可以拥有自己的 root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID空间。

容器内的进程是运行在一个隔离的环境里,使用起来就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全

回到页面顶部