2017-01-13 4 views
14

Ich spiele Docker Swarm und eine docker-compose.yml mit docker deploy. Alle Dienste werden bereitgestellt, mit Ausnahme eines Dienstes, der im Status "Ausstehend" bleibt. Ich habe eine Einschränkung hinzugefügt, die diesen Dienst mit einem der Knoten verknüpft. Meine Frage bezieht sich nicht so sehr auf dieses spezielle Problem, sondern eher auf die Problembehandlung. Die Docker-Dokumentation erwähnt mögliche Ursachen für einen Dienst im Status "Ausstehend", aber keiner von diesen trifft zu (Einschränkungsproblem, Entwässerung von Ressourcen).Wie finde ich heraus, warum mein Docker-Dienst im Status Ausstehend ist?

Kann ich irgendwo den Docker-Schwarm "Gedankenprozess" sehen? Was denkt es?

Edit: sollte deutlicher gemacht haben, dass ich die neue, 1.12-Einführung, Schwarm-Option verwende.

Antwort

22

Ich werde erklären, wie zu debuggen, wenn der Dienst nicht gestartet wird, wie in dem Docker Schwarm-Modus erwartet.

Zuerst erhalten Sie eine Aufgaben-ID mit docker service ps <service-name>.

Als nächstes ist es nützlich, Metadaten mit docker inspect <task-id> zu überprüfen. Insbesondere befindet sich die Fehlermeldung vor dem Start des Containers im Statusfeld und bestätigt erneut, ob sie mit den beabsichtigten Parametern gestartet wurde.

Wenn die Aufgabe hat ID Behälter wurde abnormal nach dem Start der Behälter verlassen, so überprüfen Sie das Protokoll des Behälters mit docker logs <container-id>

Ich hoffe, das einige von Hilfe sein würde.

+2

Danke! In meinem Fall anstehend bedeutet docker swarm konnte keinen passenden Knoten finden (der meine Bedingung erfüllte) –

1

docker run swarm hat eine --debug Option, die Ihnen mehr erzählen kann.

Siehe docker smarm issue 2341 oder docker issue 24982, um diese Option zum Debuggen ausstehender Status anzuzeigen.

Zum Beispiel:

(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?.... 
+3

Ich benutze 'docker swarm init', also starte ich den internen Schwarm-Manager mit' swarmkit'. Die Befehlszeilenhilfe zeigt keine '--debug' Option an. Ich nehme an, den Docker-Dämon selbst mit '--debug' laufen zu lassen. Ich werde es versuchen. – raarts

+0

Fügen Sie auch hinzu, dass, anstatt den Dienst in die 'docker-compose.yml'-Datei zu setzen, das Ausführen von Hand aufschlussreich sein kann. – raarts

Verwandte Themen