docker-compose ps
命令可以显示每个服务的状态,包括健康状态(如果定义了 healthcheck)。这对于基本概览非常有用。
% docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------------------------------------------------------------------------------------
remix-theme-editor_analytics_1 /bin/sh -c /analytics/run. ... Up
remix-theme-editor_base_1 /bin/bash Exit 0
remix-theme-editor_flower_1 /entrypoint --environment ... Exit 137
remix-theme-editor_frontend_1 /bin/sh -c perl -p -i -e ' ... Exit 137
remix-theme-editor_js-app_1 npm run Exit 0
remix-theme-editor_mq_1 docker-entrypoint.sh rabbi ... Up (healthy) 15671/tcp, 15672/tcp, 25672/tcp, 4369/tcp, 5671/tcp, 5672/tcp
remix-theme-editor_mysql-migration_1 /entrypoint_mysql-migratio ... Exit 0
remix-theme-editor_mysql_1 /bin/sh -c /entrypoint_wra ... Up (health: starting) 127.0.0.2:3308->3306/tcp
remix-theme-editor_page-renderer_1 npm run start:watch Up
remix-theme-editor_python-app_1 /entrypoint Exit 2
remix-theme-editor_redis_1 docker-entrypoint.sh /bin/ ... Up (health: starting) 6379/tcp
remix-theme-editor_scheduler_1 /entrypoint --environment ... Exit 137
remix-theme-editor_socket_1 /entrypoint --environment ... Exit 1
remix-theme-editor_static-builder_1 npm run watch Up
remix-theme-editor_static-http_1 nginx -g daemon off; Up 127.0.0.2:6544->443/tcp, 80/tcp
remix-theme-editor_web_1 /entrypoint --environment ... Exit 1
remix-theme-editor_worker_1 /entrypoint --environment ... Exit 1
remix-theme-editor_worker_screenshots_1 /entrypoint --environment ... Exit 1
如果您需要更多细节,可结合使用docker inspect
和docker ps -q <service-name>
。
% docker inspect --format "{{json .State.Health }}" $(docker-compose ps -q mq) | jq
{
"Status": "starting",
"FailingStreak": 48,
"Log": [
{
"Start": "2018-10-03T00:40:18.671527745-05:00",
"End": "2018-10-03T00:40:18.71729051-05:00",
"ExitCode": -1,
"Output": "OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused \"exec: \\\"nc\\\": executable file not found in $PATH\": unknown"
},
...
您可以通过执行健康检查代码来自行调试健康检查。例如:
% docker exec -it $(docker-compose ps -q socket) nc -w2 127.0.0.1 5672
(UNKNOWN) [127.0.0.1] 5672 (?) : Connection refused
你也可以在shell中实现同样的功能:
% docker exec -it $(docker-compose ps -q socket) bash
root@b5da5207d344:~/src
(UNKNOWN) [127.0.0.1] 5672 (?) : Connection refused
root@b5da5207d344:~/src
1
最后,在第一个终端窗口中,您可以简单地使用
docker-compose up
命令,并在另一个终端窗口中使用
docker-compose logs -f
命令。这将显示由docker-compose管理的所有容器的日志。
{{json .State.Health}}
无法使用。请改用{{json .Spec.TaskTemplate.ContainerSpec.Healthcheck}}
。 - Mojtaba Kamyabijq
,那么所有的查询都可以通过它来完成;这样更简短、更美观:docker inspect $CONTAINER | jq '.[].State.Health'
。 - Alex Povel