例如,top顯示存在如下程序:
5400 nobody 20 0 73260 30620 2284 s 8.3 0.4 0:20.63 nginx
對于這樣一個程序,我們如何快速定位到它是運作于哪一個docker中呢 (特别是當ecs上運作了超過10個
docker的時候)?
先通過
$ pstree -p | grep -n5 5400
找到它的最上層的父程序pid:
...
114- | |-my_init(5248)-+-nginx(5398)-+-nginx(5399)
115: | | | |-nginx(5400)
116- | | | |-nginx(5401)
得到父程序pid=5248, 然後周遊所有容器的init程序進行比對:
$ docker ps | awk '{print $1}' | grep -v container | xargs docker inspect -f '{{.state.pid}} {{.config.hostname}}' | grep 5248
5248 bd939dc98684
利用上面輸出的container id,
$ docker ps | grep bd939dc98684
即可得到該容器的其餘關鍵資訊。