Bei einem aktuellen Problem gibt es folgendes Phänomen:Das System verfügt über ein Testskript, das den Befehl „Docker Run“ kontinuierlich ausführt, um den Container auszuführen. Während des Tests wurde festgestellt, dass der Container manchmal nicht vollständig in den Status „Up“ ausgeführt wurde, sondern sich im Status „erstellt“ befand, was sehr seltsam war. Die obige Umgebung überprüft zunächst den Container im Status „erstellt“ und das Dockerd-Protokoll: (1) Das Dockerd-Protokoll enthält nur „Post Create“-Anfragen, aber es werden keine „Post Start“-Anfragen für den Container empfangen; (2) Durch manuelles Ausführen von Docker Start kann der Container in den Zustand „Up“ versetzt werden, was darauf hinweist, dass es keine Probleme mit dem Container und dem Image selbst gibt. Aufgrund der oben genannten Phänomene wird vermutet, dass der Vorgang „Docker Run“ nicht abgeschlossen wurde und Docker Run beendet wurde. Schauen Sie sich sofort „Docker Run“ an. In cli/command/container/run.go weist die Implementierung der Verarbeitungsfunktion func runRun() des Befehls „Docker Run“ die folgende Situation auf: Funktion runRun(dockerCli *command.DockerCli, flags *pflag.FlagSet, opts *runOptions, copts *runconfigopts.ContainerOptions) Fehler { . . . . . . createResponse, err := createContainer(ctx, dockerCli, config, hostConfig, networkConfig, hostConfig.ContainerIDFile, opts.name) . . . . . . wenn err := Client.ContainerStart(ctx, createResponse.ID, types.ContainerStartOptions{}); err != nil {) . . . . . } Wenn der Befehl „docker run“ nach der Ausführung der Funktion createContainer() abnormal beendet wird (z. B. aufgrund eines Kill-Signals), kann die Funktion ContainerStart() nicht weiter ausgeführt werden. Dies führt dazu, dass der Container erfolgreich erstellt wird und sich im Status „erstellt“ befindet, Dockerd jedoch keinen „Post-Start“ erhält, was letztendlich das obige Phänomen verursacht. Daher ist es notwendig, den Befehl „Docker Run“ in der täglichen Produktion zu überwachen, beispielsweise um festzustellen, ob er erfolgreich ausgeführt wird, ob er abnormal beendet wird, ob der Rückgabewert beim Beenden 0 ist usw. Ergänzung: Drei Möglichkeiten zum Ausführen eines Docker-Containers Die erste LösungWenn wir Docker-Container ausführen, befinden sie sich häufig im Status „Beendet“. Beispielsweise wird der folgende Befehl „docker run -d --name nginx -P nginx /bin/bash“ beendet, nachdem der interaktive Modus abgeschlossen ist, und ein erneuter Start von Docker funktioniert nicht. Wenn Sie möchten, dass der Container nach dem Ausführen ausgeführt wird, entfernen Sie einfach /bin/bash. Die zweite Lösungdocker run -it --name nginxit -P nginx Jetzt befindet sich der Container nginxit im Beendigungszustand; Solange wir es mit Docker starten, können wir es verwenden Docker startet Nginxit Der dritte ist dem zweiten ähnlich:docker run -it --name nginxit2 -P nginx /bin/bash Die Vordergrund- und Hintergrundinteraktionen müssen beendet werden: root@de4dbb27f905:/# beenden Dann neu starten: Docker startet nginxit2 Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur. Das könnte Sie auch interessieren:
|
<<: Vorteile und Nachteile des MySQL Advanced Learning Index sowie Nutzungsregeln
>>: jQuery Canvas generiert ein Poster mit einem QR-Code
Inhaltsverzeichnis 1. Warum brauchen wir vue3? 2....
RPM-Paketverwaltung Ein Verpackungs- und Installa...
Nehmen wir als Beispiel das Übersetzungsprogramm....
Problembeschreibung: Nachdem das Front-End Daten ...
1. Installieren und starten Sie nginx # Installie...
Warum brauchen wir ein Berechtigungsmanagement? 1...
Inhaltsverzeichnis Was ist virtueller Dom? Warum ...
Projektdokumentationsverzeichnis Div+CSS-Benennung...
Die neueste Verpackungsschachtel für Perfect Aloe...
Vorwort Zum Leistungsvergleich zwischen „group by...
Vorwort Nodejs ist eine serverseitige Sprache. Wä...
In diesem Artikel untersuchen wir, warum async/aw...
1. Einleitung Die EXPLAIN-Anweisung liefert Infor...
Inhaltsverzeichnis Vorwort Browser kompilierte Ve...
Siehe: https://www.jb51.net/article/112612.htm Üb...