我可能會問一個初學者級別的問題,但我需要一種方法來區分docker和non-docker下的進程。 'ps'命令的命令輸出給了我一個感覺,即進程在linux系統中運行,並且無法確認docker是否處於運行狀態。如何知道進程正在docker下運行
在相同的上下文中,docker根文件系統啓動docker進程時可能/可行。
是相同的可行或有任何其他解決方案相同?
我可能會問一個初學者級別的問題,但我需要一種方法來區分docker和non-docker下的進程。 'ps'命令的命令輸出給了我一個感覺,即進程在linux系統中運行,並且無法確認docker是否處於運行狀態。如何知道進程正在docker下運行
在相同的上下文中,docker根文件系統啓動docker進程時可能/可行。
是相同的可行或有任何其他解決方案相同?
您可以通過Docker主機上的進程樹識別Docker進程。
父進程到2924(HAProxy的)是2902
父進程到2902(HAProxy的開始)是2881
2881將是docker-container
這是由一個dockerd
過程
管理要查看進程列表中以樹的形式使用ps -ejH
或pstree
(可在包Psmisc做)
要獲得快速列表什麼dockerd
顯示PID的父母(-s
)
/ # pstree -aps 3744
init,1
`-dockerd,1721 --pidfile=/run/docker.pid -H unix:///var/run/docker.sock --swarm-default-advertise-addr=eth0
`-docker-containe,1728 -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim ...
`-docker-containe,3711 8d923b3235eb963b735fda847b745d5629904ccef1245d4592cc986b3b9b384a...
`-java,3744 -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp/zookeeper/bin/../build/cl
|-{java},4174
|-{java},4175
|-{java},4176
|-{java},4177
|-{java},4190
|-{java},4208
|-{java},4209
|-{java},4327
|-{java},4328
|-{java},4329
|-{java},4330
|-{java},4390
|-{java},4416
|-{java},4617
|-{java},4625
|-{java},4629
`-{java},4632
顯示泊塢窗的所有兒童,包括命名空間變化(-S
):
/ # pstree -apS $(pgrep dockerd)
dockerd,1721 --pidfile=/run/docker.pid -H unix:///var/run/docker.sock --swarm-default-advertise-addr=eth0
|-docker-containe,1728 -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim ...
| |-docker-containe,3711 8d923b3235eb963b735fda847b745d5629904ccef1245d4592cc986b3b9b384a...
| | |-java,3744,ipc,mnt,net,pid,uts -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp/zookeeper/bin/../build/cl
| | | |-{java},4174
| | | |-{java},4175
| | | |-{java},4629
| | | `-{java},4632
| | |-{docker-containe},3712
| | `-{docker-containe},4152
| |-docker-containe,3806 49125f8274242a5ae244ffbca121f354c620355186875617d43876bcde619732...
| | |-sinopia,3841,ipc,mnt,net,pid,uts
| | | |-{V8 WorkerThread},4063
| | | |-{V8 WorkerThread},4064
| | | |-{V8 WorkerThread},4065
| | | |-{V8 WorkerThread},4066
| | | |-{node},4062
| | | |-{sinopia},4333
| | | |-{sinopia},4334
| | | |-{sinopia},4335
| | | `-{sinopia},4336
| | |-{docker-containe},3814
| | `-{docker-containe},4038
| |-docker-containe,3846 2a756d94c52d934ba729927b0354014f11da6319eff4d35880a30e72e033c05d...
| | |-node,3910,ipc,mnt,net,pid,uts lib/dnsd.js
| | | |-{V8 WorkerThread},4204
| | | |-{V8 WorkerThread},4205
| | | |-{V8 WorkerThread},4206
| | | |-{V8 WorkerThread},4207
| | | `-{node},4203
在窗口泊塢窗的行爲有點不同。 它的進程不是作爲父進程的子進程運行,而是作爲主機上的獨立進程運行。
它們可以通過(例如),的powershell觀看,像
Get-Process powershell
例如,在運行Microsoft/IIS容器時將包括附加的powershell處理(在主機上得到處理,因爲MS/IIS容器運行作爲主要可執行進程的PowerShell)。
[如何檢查一個進程是否在Docker容器中運行]的可能重複(http://stackoverflow.com/questions/23513045/how-to-check-if-a-process-is-running-inside- docker-container) –