web-dev-qa-db-fra.com

Comment savoir pourquoi mon service Docker est en attente?

Je joue Docker Swarm, et en utilisant un docker-compose.yml avec docker deploy. Tous les services sont déployés, sauf un, qui reste en attente. J'ai ajouté une contrainte qui lie ce service à l'un des nœuds. Ma question n'est pas tant sur ce problème particulier, mais plus sur la façon de dépanner. La documentation Docker mentionne les causes possibles d'un service en attente, mais aucune ne s'applique (problème de contrainte, drainage des ressources).

Puis-je voir le "processus de pensée" de l'essaim de dockers quelque part? À quoi pense-t-il?

Edit: aurait dû indiquer plus clairement que j'utilise la nouvelle option swarm introduite en 1.12.

17
raarts

Je vais vous expliquer comment déboguer lorsque le service ne démarre pas comme prévu en mode swarm docker.

Tout d'abord, obtenez un ID de tâche avec docker service ps <service-name>.

Ensuite, il est utile de vérifier les métadonnées avec docker inspect <task-id>. En particulier, le message d'erreur avant le démarrage du conteneur est dans le champ d'état, puis reconfirmez s'il a été démarré avec les paramètres prévus.

Si la tâche a un ID de conteneur, elle a été anormalement quittée après le démarrage du conteneur, vérifiez donc le journal du conteneur avec docker logs <container-id>

J'espère que ce serait un peu d'aide.

29
minamijoyo

docker run swarm a un --debug option qui peut vous en dire plus.

Voir docker swarm issue 2341 or docker issue 24982 pour voir cette option utilisée pour déboguer les états en attente.

Par exemple:

(unknown): 192.168.99.106:2375(node2 ip)
└ ID:
└ Status: Pending
└ Containers: 0
└ Reserved CPUs: 0 / 0
└ Reserved Memory: 0 B / 0 B
└ Labels:
└ Error: Cannot connect to the Docker daemon. Is the docker daemon running on this host?....
2
VonC