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, как указано здесь.