我在Docker容器中使用Linux服務器,我需要知道如何獲取應用程序,服務及其在容器內的狀態的詳細信息。我需要執行哪個命令才能獲取這些詳細信息。如何獲得碼頭集裝箱內的服務及其狀態?
例如:
容器包含tomcat服務器。我需要了解tomcat服務器的詳細信息及其狀態(服務是否在運行)。
我不知道是否有任何命令可用於獲取這些細節。
我在Docker容器中使用Linux服務器,我需要知道如何獲取應用程序,服務及其在容器內的狀態的詳細信息。我需要執行哪個命令才能獲取這些詳細信息。如何獲得碼頭集裝箱內的服務及其狀態?
例如:
容器包含tomcat服務器。我需要了解tomcat服務器的詳細信息及其狀態(服務是否在運行)。
我不知道是否有任何命令可用於獲取這些細節。
命令
docker inspect
看起來像你想要的東西,檢查文檔
https://docs.docker.com/reference/commandline/inspect/
從容器內得到泊塢窗信息,請參閱
Docker, how to get container information from within the container?
您可以使用docker exec
命令在容器內執行您需要的任何命令。
例如,列出在容器內的所有運行中的進程:
docker exec <my container> ps aux
或顯示文件
docker exec <my container> cat /etc/resolv.conf
這些命令將與在圖像中定義的用戶執行的內容。
docker exec -u root <my container> ls -l
如果您需要運行多個命令,或使用容器中存在的環境變量,使用下面的技巧:你可以用-u
選項來覆蓋它
docker exec <my container> sh -c 'echo ~; echo "PATH: $PATH"'
這是對的,但是'ps'不會被安裝在容器中。 –
嘗試docker top
:
docker top --help
Usage: docker top [OPTIONS] CONTAINER [ps OPTIONS]
Display the running processes of a container
--help=false Print usage
例如:
$ docker run -itd --name top-test debian
abf71bd18ac8d93684be17326f7a3be2cbea9103eca75391201d8e7a1ecde6e6
$ docker top top-test
UID PID PPID C STIME TTY TIME CMD
root 1155 1001 0 09:50 pts/1 00:00:00 /bin/bash
實例在PostgreSQL:
$ docker run -d --name pg postgres
1798f94c8ce9fe279036ada6fed119f60b7c2363c5ab3a4752cd3a404e3ffd92
$ docker top pg
UID PID PPID C STIME TTY TIME CMD
999 3916 1001 0 13:23 ? 00:00:00 postgres
999 3993 3916 0 13:23 ? 00:00:00 postgres: checkpointer process
999 3994 3916 0 13:23 ? 00:00:00 postgres: writer process
999 3995 3916 0 13:23 ? 00:00:00 postgres: wal writer process
999 3996 3916 0 13:23 ? 00:00:00 postgres: autovacuum launcher process
999 3997 3916 0 13:23 ? 00:00:00 postgres: stats collector process
泊塢窗頂部實際上只是運行ps
在幕後,所以我們可以把ARGS:
$ docker top pg -e -o pid,cmd
PID CMD
3916 postgres
3993 postgres: checkpointer process
3994 postgres: writer process
3995 postgres: wal writer process
3996 postgres: autovacuum launcher process
3997 postgres: stats collector process
在一般情況下,你會發現只有一個單一的過程運行。歡迎來到集裝箱世界。
我不想要流程細節,我需要服務細節。好吧,如果從你的角度來說,在我的容器中包含兩個以上的服務,例如Tomcat,MSSQL服務器等。我需要獲取所有服務的詳細信息,從結果中我怎麼能找到哪個進程是tomcat,哪個進程是MSSQL? –
這只是ps的原始輸出。將輸出滾動到右側以查看命令名稱。我用postgres添加了一個更多上下文的例子。我真的不知道你的服務是什麼意思。如果有幫助,你也可以獲得進程「樹」。 –
服務意味着在docker中運行的tomcat,mssql等。 –
列表中的所有容器:
docker stats $(docker ps|grep -v "NAMES"|awk '{ print $NF }'|tr "\n" " ") --no-stream
LIST容器內存使用超過99%:
docker stats $(docker ps|grep -v "NAMES"|awk '{ print $NF }'|tr "\n" " ") --no-stream | sort -k 8n | awk '(NR>1) && ($8 > 99) '
不,它不是我所需要的。它提供有關容器的詳細信息。我需要獲取有關服務和應用程序容器包含的詳細信息。 –
如果你是'docker exec -it your_container bash'你的是在你的容器內,我猜你可以輸入所需的命令 – user2915097