Estoy jugando a Docker Swarm y uso docker-compose.yml con docker deploy deployment. Todos los servicios se implementan excepto uno, que permanece en estado Pendiente. He agregado una restricción que vincula este servicio a uno de los nodos. Mi pregunta no es tanto sobre este problema en particular, sino más bien sobre cómo solucionarlo. La documentación de Docker menciona posibles causas para que un servicio esté en estado pendiente, pero ninguna de ellas aplica (problema de restricción, drenaje de recursos).
¿Puedo ver el 'proceso de pensamiento' del enjambre docker en alguna parte? ¿Qué está pensando?
Editar: debería haber dejado más claro que estoy usando la nueva opción de enjambre introducida en 1.12.
Explicaré cómo depurar cuando el servicio no se inicia como se esperaba en el modo de enjambre de la ventana acoplable.
En primer lugar, obtenga una ID de tarea con docker service ps <service-name> .
A continuación, es útil verificar los metadatos con docker inspect <task-id> . En particular, el mensaje de error antes del inicio del contenedor está en el campo de estado y luego vuelva a confirmar si se inició con los parámetros previstos.
Si la tarea tiene un ID de contenedor, se cerró de forma anormal después de iniciar el contenedor, por lo tanto, verifique el registro del contenedor con los docker logs <container-id>
Espero que esto sea de ayuda.
docker run swarm tiene una opción de --debug que puede brindarle más información.
Consulte el problema de docker swarm 2341 o el problema de docker 24982 para ver esa opción utilizada para depurar estados pendientes.
Por ejemplo:
(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?....