Docker stack/service 不行,怎么调试?
Docker stack/service doesn't work, how to debug?
我正在为 docker-swarm 制作堆栈。
这是我的 django 和 nginx 堆栈。
我部署了它,但它从未启动。
ID NAME MODE REPLICAS IMAGE PORTS
n9j49jx667x5 django_nginx replicated 0/1 nginx:1.13 *:8000->8000/tcp
7h3sbmmgwbvn django_python replicated 0/1 registry:5000/mydjango:latest *:8082->8082/tcp
dkzk9z3rdtzm phpmyadmin_phpmyadmin global 1/1 phpmyadmin/phpmyadmin:latest *:8009->80/tcp
kf6xisbvqdqv visualizer_app global 1/1 dockersamples/visualizer:latest *:9009->8080/tcp
现在我想检查为什么这个堆栈不起作用。
但是我如何查看日志或一些线索??
如果服务正常,我可以检查一下
docker container exec -it manager docker service logs -f visualizer_app
但是我该如何调查为什么 stack/service 不起作用...??
version: '3'
services:
python:
image: registry:5000/mydjango:latest
command: uwsgi --socket :8001 --module jrtweet.wsgi --py-autoreload 1 --logto /tmp/mylog.log
volumes:
- ./src:/code
- ./src/static:/static
ports:
- "8082:8082"
nginx:
image: nginx:1.13
ports:
- "8000:8000"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
- ./nginx/uwsgi_params:/etc/nginx/uwsgi_params
- ./static:/static
depends_on:
- python
连最简单的设置都试过了,还是不行,我也不知道怎么调试.....
我找到了它不起作用的原因,反复尝试。
我注释掉了 #volumes
它有效,但这一定是另一个问题...
我还想知道启动服务的debug.....
感谢 taleodor 我可以找到日志 service ps
docker container exec -it man docker service ps django_python
mbx47zczllwm django_python.1 registry:5000/myprog/djangosrc:latest 6b0938c9c5fb Ready Rejected less than a second ago "invalid mount config for type…"
xgpet2jwwocq \_ django_python.1 registry:5000/myprog/djangosrc:latest 6b0938c9c5fb Shutdown Rejected less than a second ago "invalid mount config for type…"
zl1z7a0qx330 \_ django_python.1 registry:5000/myprog/djangosrc:latest 6b0938c9c5fb Shutdown Rejected 38 seconds ago "invalid mount config for type…"
zewlsc76zluy \_ django_python.1 registry:5000/myprog/djangosrc:latest 6b0938c9c5fb Shutdown Rejected about a minute ago "invalid mount config for type…"
zytucyx6unsg \_ django_python.1 registry:5000/myprog/djangosrc:latest 6b0938c9c5fb Shutdown Rejected about a minute ago "invalid mount config for type…"
zqjdobhkti47 \_ django_python.1 registry:5000/myprog/djangosrc:latest 6b0938c9c5fb Shutdown Rejected about a minute ago "invalid mount config for type…"
zxe18cc554ev \_ django_python.1 registry:5000/myprog/djangosrc:latest 6b0938c9c5fb Shutdown Rejected about a minute ago "invalid mount config for type…"
做docker服务ps,即:
docker 服务 ps django_nginx
这将为您提供有关尝试启动服务器和可能出现的错误的线索。如果错误足够明显,就到此为止。
如果错误不明确 - 容器已启动但很快退出,请通过 docker ps 找到这些容器并通过
获取他们的日志
docker 日志 container_id
调度级别错误,如 "image not found"、"no suitable node for placement constraint" 或 "volume plugin errors" 可以这样识别:
docker service ps django_python --no-trunc
--no-trunc
会防止错误信息被截断。
Swarm 部署需要绑定安装(您尝试使用的类型)以使用绝对路径。
假设您的 docker-compose.yml 位于 /home/user/docker-compose.yml 中,并且您希望使用主机路径 /home/user/test 作为 "volume source"。那么您实际上需要使用绝对路径 /home/user/tests 而不是相对路径 ./test,就像您在示例中所做的那样。
我正在为 docker-swarm 制作堆栈。
这是我的 django 和 nginx 堆栈。
我部署了它,但它从未启动。
ID NAME MODE REPLICAS IMAGE PORTS
n9j49jx667x5 django_nginx replicated 0/1 nginx:1.13 *:8000->8000/tcp
7h3sbmmgwbvn django_python replicated 0/1 registry:5000/mydjango:latest *:8082->8082/tcp
dkzk9z3rdtzm phpmyadmin_phpmyadmin global 1/1 phpmyadmin/phpmyadmin:latest *:8009->80/tcp
kf6xisbvqdqv visualizer_app global 1/1 dockersamples/visualizer:latest *:9009->8080/tcp
现在我想检查为什么这个堆栈不起作用。
但是我如何查看日志或一些线索??
如果服务正常,我可以检查一下
docker container exec -it manager docker service logs -f visualizer_app
但是我该如何调查为什么 stack/service 不起作用...??
version: '3'
services:
python:
image: registry:5000/mydjango:latest
command: uwsgi --socket :8001 --module jrtweet.wsgi --py-autoreload 1 --logto /tmp/mylog.log
volumes:
- ./src:/code
- ./src/static:/static
ports:
- "8082:8082"
nginx:
image: nginx:1.13
ports:
- "8000:8000"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
- ./nginx/uwsgi_params:/etc/nginx/uwsgi_params
- ./static:/static
depends_on:
- python
连最简单的设置都试过了,还是不行,我也不知道怎么调试.....
我找到了它不起作用的原因,反复尝试。
我注释掉了 #volumes
它有效,但这一定是另一个问题...
我还想知道启动服务的debug.....
感谢 taleodor 我可以找到日志 service ps
docker container exec -it man docker service ps django_python
mbx47zczllwm django_python.1 registry:5000/myprog/djangosrc:latest 6b0938c9c5fb Ready Rejected less than a second ago "invalid mount config for type…"
xgpet2jwwocq \_ django_python.1 registry:5000/myprog/djangosrc:latest 6b0938c9c5fb Shutdown Rejected less than a second ago "invalid mount config for type…"
zl1z7a0qx330 \_ django_python.1 registry:5000/myprog/djangosrc:latest 6b0938c9c5fb Shutdown Rejected 38 seconds ago "invalid mount config for type…"
zewlsc76zluy \_ django_python.1 registry:5000/myprog/djangosrc:latest 6b0938c9c5fb Shutdown Rejected about a minute ago "invalid mount config for type…"
zytucyx6unsg \_ django_python.1 registry:5000/myprog/djangosrc:latest 6b0938c9c5fb Shutdown Rejected about a minute ago "invalid mount config for type…"
zqjdobhkti47 \_ django_python.1 registry:5000/myprog/djangosrc:latest 6b0938c9c5fb Shutdown Rejected about a minute ago "invalid mount config for type…"
zxe18cc554ev \_ django_python.1 registry:5000/myprog/djangosrc:latest 6b0938c9c5fb Shutdown Rejected about a minute ago "invalid mount config for type…"
做docker服务ps,即:
docker 服务 ps django_nginx
这将为您提供有关尝试启动服务器和可能出现的错误的线索。如果错误足够明显,就到此为止。
如果错误不明确 - 容器已启动但很快退出,请通过 docker ps 找到这些容器并通过
获取他们的日志docker 日志 container_id
调度级别错误,如 "image not found"、"no suitable node for placement constraint" 或 "volume plugin errors" 可以这样识别:
docker service ps django_python --no-trunc
--no-trunc
会防止错误信息被截断。
Swarm 部署需要绑定安装(您尝试使用的类型)以使用绝对路径。
假设您的 docker-compose.yml 位于 /home/user/docker-compose.yml 中,并且您希望使用主机路径 /home/user/test 作为 "volume source"。那么您实际上需要使用绝对路径 /home/user/tests 而不是相对路径 ./test,就像您在示例中所做的那样。