关于容器(Docker)故障模式的说明,我们已经向大家介绍过半了,这一期我们继续学习容器(Docker)故障模式-容器进程。
注意:与容器内的进程相关的故障模式,大部分需要传入容器内的进程id作为参数,查询容器内的进程id的方式有以下三种:
- 进入容器内部进行查询(容器内需要安装‘ps’程序):
- 首先,通过‘docker ps’查询到正在运行的容器id;
- 其次,再通过‘docker exec- it $containerId /bin/bash’进入到该容器的内部,其中变量$containerId为第一步查找的容器id;
- 然后,再在容器内部执行‘ps -ef’命令查询到对应的容器内的进程id;
- 最后,‘exit’退出容器即可。
- 查看OS进程与容器进程的映射关系(推荐这种方法):
- 首先,通过‘docker ps’查询到正在运行的容器id;
- 其次,通过‘docker top $containerId’查询到想要进程所在的行,并取得对应的第二列的进程ID(容器内的进程再OS中的进程ID),其中变量$containerId为第二步查找的容器id;
- 然后,通过‘cat /proc/$containerPid/status | grep NSpid’命令查询出当前进程在所有命名空间内的进程ID,然后找到与$containerPid不同的进程ID,即为容器内该进程对应的进程ID值,其中$containerPid为上一步查询到的进程ID;
- 进程容器的namespace进行查询(需要在宿主机上安装‘nsenter’与‘ps’程序):
- 首先,通过‘docker ps’查询到正在运行的容器id;
- 其次,通过‘docker top $containerId’查询到容器对应的宿主机OS的进程id(取输出任意行的第二列‘PID’的值),其中变量$containerId为第二步查找的容器id;
- 再次,通过‘nsenter -p -t $containerPid’进入到容器的进程namespace内,其中变量‘$containerPid’为第二步查找的容器对应的宿主机OS的进程id;
- 然后,执行‘mount -t proc proc /proc’命令重新挂载‘/proc’,以将进入的进程空间的进程信息挂载至OS的/proc目录下;
- 最后,执行‘ps -ef’命令查询到对应容器内的进程id;
- 另外,在退出当前命名空间之前,需要先执行‘umount /proc’命令将当前进程空间的进程信息数据从OS的/proc目录进行卸载,再执行‘exit’命令退出当前进程的namespace。
关于容器(Docker)故障模式的说明,我们已经向大家介绍过半了,这一期我们继续学习容器(Docker)故障模式-容器进程。
注意:与容器内的进程相关的故障模式,大部分需要传入容器内的进程id作为参数,查询容器内的进程id的方式有以下三种:







容器(Docker)故障模式-容器进程我们就介绍到这,下一期我们一起来了解下,DemonCAT如何向容器网络中注入故障。