我在Linux服务器上安装了docker容器,我需要知道如何在容器中获取应用程序,服务及其状态的详细信息。我需要执行哪个命令来获取这些细节。
例如:
容器包含tomcat服务器。我需要获取tomcat服务器及其状态的详细信息(服务是否正在运行)。
我不知道是否有任何命令可以获取这些细节。
答案 0 :(得分:2)
您可以使用docker exec
命令执行容器内所需的任何命令。
例如,列出容器内的所有正在运行的进程:
docker exec <my container> ps aux
或显示文件内容
docker exec <my container> cat /etc/resolv.conf
这些命令将使用图像中定义的用户执行。您可以使用-u
选项覆盖它:
docker exec -u root <my container> ls -l
如果您需要运行多个命令,或使用容器中存在的环境变量,请使用以下技巧:
docker exec <my container> sh -c 'echo ~; echo "PATH: $PATH"'
答案 1 :(得分:1)
列出所有容器:
docker stats $(docker ps|grep -v "NAMES"|awk '{ print $NF }'|tr "\n" " ") --no-stream
内存使用量超过99%的LIST容器:
docker stats $(docker ps|grep -v "NAMES"|awk '{ print $NF }'|tr "\n" " ") --no-stream | sort -k 8n | awk '(NR>1) && ($8 > 99 ) '
答案 2 :(得分:0)
命令
docker inspect
看起来像你想要的,查看文档
https://docs.docker.com/reference/commandline/inspect/
要从容器内获取泊坞窗信息,请参阅
Docker, how to get container information from within the container?
答案 3 :(得分:0)
尝试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
Docker top实际上只是在幕后运行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
通常,您会发现只有一个进程正在运行。欢迎来到容器世界。
答案 4 :(得分:0)
我认为最简单的答案(由于OP似乎已经熟悉了应用程序,服务和状态的问题),是进入docker容器并在它们工作的上下文中运行这些熟悉的命令。
也就是说,如果您的容器名为app
,请转到已安装docker的计算机上的文件夹并运行./launcher enter app
这会将您放入容器中,例如,您可以运行service apache2 status
来查看容器上运行的Apache2的状态。