序文
コンテナにps -ef
コマンドがない場合は、次のコマンドを使用してコンテナのプロセスを表示できます。
dockercontainertop を実行すると、コンテナ内で実行されているプロセスが表示されます (このコマンドは非常に便利です)
#docker container top 命令用于查看容器运行的进程
#当容器里面没有ps -ef命令时,使用docker container top 命令可以方便的查看容器运行的进程
#当容器里面没有ps命令时,就无法使用ps命令查看容器启动哪些进程
[root@master ~]# docker exec -it nginx1 bash
root@e88229ce4a8a:/# ps -ef
bash: ps: command not found
#这时可以直接使用docker container top nginx1 查看
#语法
[root@master ~]# docker container top --help
Usage: docker container top CONTAINER [ps OPTIONS]
[root@master ~]# docker container top nginx1
UID PID PPID C STIME TTY TIME CMD
root 9513 9483 0 00:12 ? 00:00:00 nginx: master process nginx -g daemon off;
101 9580 9513 0 00:12 ? 00:00:00 nginx: worker process
101 9581 9513 0 00:12 ? 00:00:00 nginx: worker process
101 9582 9513 0 00:12 ? 00:00:00 nginx: worker process
101 9583 9513 0 00:12 ? 00:00:00 nginx: worker process
k8s クラスターで dockercontainertop コマンドを使用して、コンテナー内で実行されているプロセスを表示します
#该方法同样适用于k8s的pod,因为pod里面本质上运行的就是容器
#得到容器ID,注意复制容器的前12位字符串即可
[root@master ~]# kubectl describe pod mysql57 | grep -C2 -i 'Container ID'
Containers:
mysql:
Container ID: docker://0d7575f9a63e0f646ea7d3588d7a77348cab08e8c4e0cbaa2d82556d87777dcf
Image: mysql/mysql:5.7
Image ID: docker-ullable://mysql/mysql:5.7@sha256:8fxxx0
#查看pod调度到哪个节点上容器就在哪个节点上
kubectl get pod mysql:5.7 -owide
#去到pod所在节点上
docker container top 0d7575f9a63e