J'ai souvent des problèmes parce qu'un service que je déploie sur un docker swarm avec plusieurs noeuds ne démarre pas et qu'il n'y a pas de journaux générés que je puisse consulter avec docker service logs {serviceName}
Il existe de nombreuses raisons pour lesquelles un service ne démarre pas, tel que
J'ai du mal à comprendre pourquoi un conteneur ne veut pas démarrer. J'ai trouvé la commande docker service ps {serviceName}
qui liste les tâches d’un ou de plusieurs services et d’un message d’erreur court (en cas d’erreur). Cependant, lorsque j'essaie d'inspecter la tâche avec docker service logs {taskId}
(qui devrait afficher les journaux d’une tâche) j’obtiens Error response from daemon: task 3lkgo8t2sn7k not found
.
Quelqu'un peut-il m'aider à obtenir un message d'erreur complet indiquant pourquoi un service ne démarre pas?
J'ai trouvé une solution pratique au problème.
docker service ps --no-trunc {serviceName}
qui affichera des erreurs lors du téléchargement d’images, notamment du montage de volumes nfs.
---------------------- MISE À JOUR
Toutes les erreurs ne peuvent pas être trouvées de la manière décrite ci-dessus. Un autre outil utile est de regarder les journaux de dockon de docker qui peuvent être faits de la manière suivante, comme expliqué sur stackoverflow :
journalctl -u docker.service | tail -n 50
Cela dépend de votre système d'exploitation. Voici les quelques emplacements, avec des commandes pour quelques systèmes d'exploitation:
- Ubuntu (ancien utilisant upstart) -
/var/log/upstart/docker.log
- Ubuntu (nouveau en utilisant 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
- Serveur 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
, comme mentionné ici .