docker swarm как узнать, почему служба не может начаться
у меня часто возникают проблемы, потому что служба, которую я развертываю на docker swarm с несколькими узлами, не запускается, и нет журналов, которые я могу посмотреть с docker service logs {serviceName}
существует множество возможных причин, по которым служба не запускается, например
- не удается загрузить изображение из реестра
- ограничения, которые не могут быть выполнены
мне трудно выяснить, почему контейнер не запускается. Я нашел команду docker service ps {serviceName}
что Перечислите задачи одной или нескольких служб и короткое сообщение об ошибке (если произошла ошибка). Однако, когда я пытаюсь проверить задачу с docker service logs {taskId}
(который должен показывать журналы задачи) я получаю Error response from daemon: task 3lkgo8t2sn7k not found
.
может кто-нибудь помочь мне получить полное сообщение об ошибке, почему служба не запускается?
1 ответов
я нашел одно удобное решение проблемы.
docker service ps --no-trunc {serviceName}
который покажет ошибки при загрузке изображений, монтируя Тома nfs среди других.
---------------------- UPDATE
не все ошибки можно найти описанным выше способом. Другой полезный инструмент смотрит на журналы docker deamon, которые можно сделать следующим образом, как объяснено на stackoverflow:
journalctl -u docker.service | tail -n 50
это зависит от вашей ОС. Вот несколько местоположений с командами для нескольких операционных систем:
- Ubuntu (старый, используя выскочку ) -
/var/log/upstart/docker.log
- Ubuntu (новое использование systemd ) -
journalctl -u docker.service
- Boot2Docker -
/var/log/docker.log
- Debian GNU/Linux -
/var/log/daemon.log
- CentOS -
/var/log/daemon.log | grep docker
- по CoreOS -
journalctl -u docker.service
- Fedora -
journalctl -u docker.service
- Сервер Red Hat Enterprise Linux -
/var/log/messages | grep docker
- OpenSuSE -
journalctl -u docker.service
- OSX -
~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log/docker.log
- Windows -
Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time
, как указано здесь.