Docker-Daemon hängt – Container-Statusdatei fehlt?

Docker-Daemon hängt – Container-Statusdatei fehlt?

Ich verwende Docker 1.12.6 auf AWS Linux.

Alle dockerBefehle bleiben hängen.

Die AWS-Instanz ist heute Morgen abgestürzt (ich weiß immer noch nicht, warum). Der Neustart hat nicht funktioniert, also habe ich die Instanz angehalten und neu gestartet. Beim Anzeigen /var/log/dockererhalte ich:

time="2017-01-16T10:46:18.829402768Z" level=info msg="libcontainerd: new containerd process, pid: 21697" 
time="2017-01-16T10:46:18.833508272Z" level=fatal msg="open /var/run/docker/libcontainerd/containerd/054f92393f757e0418b014ed1fa35673fbce2293de43e42153f4e10ec4910c77/state.json: no such file or directory"

Das Containerverzeichnis existiert, enthält aber nur ein leeres initVerzeichnis. Eine zufällige Suche in den anderen Containern zeigt dasselbe.

Ich nehme an, dass das Hängenbleiben durch eine fehlende Datei verursacht wird. Wie kann ich es wiederherstellen?

Bearbeiten:

Habe es schließlich entfernt und neu installiert und die Meldung erhalten:

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Docker-Dienst gestartet, jetzt hängt er wieder.

Antwort1

Ich habe mein Problem gelöst, indem ich

  1. Dienst Docker Stopp
  2. Gehen Sie zu /var/run/docker und löschen Sie alle Verzeichnisse, die mit der Container-ID in Zusammenhang stehen.
  3. Gehen Sie zu /var/lib/docker und löschen Sie alle Verzeichnisse, die mit der Container-ID in Zusammenhang stehen.
  4. Dienst Docker starten

Antwort2

Die Antwort von @Moreno hat bei mir mit einer kleinen Abwandlung funktioniert:

  • Stoppen Sie den Docker-Daemon ( sudo service docker stop)

  • Löschen Sie die Ordner in containerd (nur zur Sicherheit, wir haben auch die Ordner mit dem gleichen Namen direkt in libconteinerd gelöscht (/var/run/docker/libcontainerd/containerd))

  • Starten Sie den Docker-Daemon

Antwort3

Ich bin auf dasselbe Problem gestoßen. Nachdem ich ziemlich viel Zeit damit verbracht hatte, musste ich auf ältere AMIs zurückgreifen, die funktionieren, bis ich eine Lösung dafür gefunden habe. Der neueste ECS-Agent (1.13.1) wurde vor ein paar Tagen veröffentlicht – ich frage mich, ob dies unser Problem sein könnte.

Überblick:

  • Docker 1.12.6
  • ECS Agent 1.13.1

Beim Booten der Instanz bleiben alle dockerBefehle hängen. Die Überprüfung /var/log/dockerzeigt:

level=info msg="libcontainerd: new containerd process, pid: 21687" 
level=fatal msg="open /var/run/docker/libcontainerd/containerd/{{CONTAINER_HASH}}/state.json: no such file or directory"

Dasselbe Problem, wenn libcontainerdein leeres initVerzeichnis enthalten ist (nicht state.jsonzu sehen!)

Antwort4

Habe das gleiche Problem. Die Instanz ist abgestürzt (unbekannter Grund). Docker und ECS-Agent. Eine Neuinstallation von Docker hat nicht geholfen.

Was bei uns funktioniert hat:

  • Docker manuell beenden (PID beenden)
  • Löschen Sie die Ordner in containerd (nur zur Sicherheit, wir haben auch die Ordner mit dem gleichen Namen direkt in libconteinerd gelöscht (/var/run/docker/libcontainerd/containerd))
  • Docker neu starten
  • Starten Sie ecs

Hier zu sehen: https://github.com/docker/docker/issues/30984

Das System läuft wieder.

verwandte Informationen