web-dev-qa-db-fra.com

Docker Swarm comment savoir pourquoi le service ne peut pas démarrer

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

  • Impossible de télécharger l'image à partir du registre
  • Des contraintes qui ne peuvent être remplies

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?

29
herm

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/d‌​ocker.log
  • Windows - Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time, comme mentionné ici .
73
herm