welche Images startet Dockerd automatisch?

welche Images startet Dockerd automatisch?

Nachdem ich den Docker-Dienst auf der Ubuntu-Box neu gestartet habe, service docker restartwurden einige Container gestartet, mit deren Start ich nicht gerechnet hatte.

Warum ist das so? Welche Konfigurationsdatei/welcher Speicher/welches auch immer enthält Informationen darüber, welche Bilder gestartet werden sollen?

Ich habe viele Bilder (~50), wenn ich sie mit aufliste docker images. Aber nur 8 davon werden gestartet, wenn ich die starte dockerd. Warum? Wie ändere ich das?

Danke.

Antwort1

Für einzelne Container gibt es eine Neustartrichtlinie, die Sie anwenden können. Diese wird beim docker run --restart=...Starten des Containers oder in einer restart: ...Zeile in der Compose-YML-Datei festgelegt. Sie können die Neustartrichtlinie in einem vorhandenen Container folgendermaßen ändern:

$ docker update --restart=... ${container_name_or_id}

Um alle Container und ihre Neustartrichtlinien aufzulisten, können Sie Folgendes von Bash aus ausführen:

$ docker container ls -q | \
  xargs docker container inspect --format \
          '{{ .Name }}: {{.HostConfig.RestartPolicy.Name}}'

DerNeustartrichtlinienSie können verwenden:

NEIN Den Container beim Beenden nicht automatisch neu starten. Dies ist die Standardeinstellung.

bei Fehler[:max-Wiederholungen] Führen Sie nur einen Neustart durch, wenn der Container mit einem Exit-Status ungleich Null beendet wird. Begrenzen Sie optional die Anzahl der Neustartversuche, die der Docker-Daemon unternimmt.

stets Starten Sie den Container immer neu, unabhängig vom Beendigungsstatus. Wenn Sie „immer“ angeben, versucht der Docker-Daemon, den Container unbegrenzt neu zu starten. Der Container wird auch immer beim Start des Daemons gestartet, unabhängig vom aktuellen Status des Containers.

sofern nicht gestoppt Starten Sie den Container immer neu, unabhängig vom Beendigungsstatus, aber starten Sie ihn nicht beim Start des Daemons, wenn der Container zuvor in den gestoppten Zustand versetzt wurde.

Eine Neustartrichtlinie alwayswürde zu einem unerwarteten Neustart des Containers führen, nachdem der Docker-Daemon neu gestartet wurde, wie Sie sehen, selbst wenn Sie den Container absichtlich gestoppt hätten. Aus diesem Grund erstelle ich normalerweise eigenständige Container mit einer unless-stoppedNeustartrichtlinie.


Wenn Sie den Docker-Swarm-Modus verwenden, starten die Dienste automatisch einen neuen Container, wenn der Zielzustand nicht mit dem aktuellen Zustand übereinstimmt. Für einen Single-Node-Swarm-Cluster, der häufig bei Laptops zu sehen ist, bedeutet dies, dass der Container neu gestartet wird, wenn Sie Docker neu starten, aber auch, wenn Sie den laufenden Container einfach stoppen oder löschen.

So stoppen und entfernen Sie einen Dienst dauerhaft:

$ docker service ls # to show the running services
$ docker service rm ${service_id_or_name}

Wenn ein Dienst im Replikationsmodus konfiguriert ist und Sie ihn vorübergehend stoppen möchten, ohne ihn zu löschen, können Sie die Zielreplikate auf 0 aktualisieren:

$ docker service update --replicas=0 ${service_id_or_name}

Und Dienste können als Teil eines Stapels bereitgestellt werden. So entfernen Sie den gesamten Stapel:

$ docker stack ls # to show the defined stacks
$ docker stack rm ${stack_id_or_name}

Antwort2

Das bedeutet, dass bei einigen Ihrer Container die RestartPolicy auf „immer“ eingestellt ist. Das bedeutet, dass der Container immer aktiv sein muss. Bitte überprüfen Sie die betreffenden Container und insbesondere den Wert von „RestartPolicy“.

$ docker inspect container-name

Dies geschieht normalerweise, wenn ein Container mit einem Flag erstellt wurde, --restartdas immer

Um den automatischen Start des Containers zu deaktivieren, verwenden Sie den folgenden Befehl:

$ docker update --restart=no container-name

Eine andere Möglichkeit, dies zu umgehen, besteht darin, RestartPolicy beim Starten des Containers auf unless-stopped zu setzen. Sie können die vollständige Dokumentation von lesenDocker-Update

Antwort3

Sehen Sie sich die Docker-Neustartrichtlinie an, beispielsweise --restart always. Ich vermute, dass einige Ihrer Container diese verwenden. Überprüfen Sie Ihr Service-Startskript für Docker. Sie können verwenden, docker ps -a --no-truncum die vollständige Liste anzuzeigen.

Antwort4

Images werden nicht automatisch gestartet, Container schon.

Auf service docker restartContainern, diegestopptodergestartetmit --restart alwaysFlag wird beim Neustart automatisch erneut gestartet. Überprüfen Sie diese über docker ps -a.

Wenn Sie nicht möchten, dass ein Container gestartet wird (auch einer mit --restart alwaysFlag), müssen Sie ihn einfach entfernen docker rm containeroder docker-compose down.

verwandte Informationen