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
Aktuelle Erfahrungen mit der Installation der kos...
Als Nächstes erfahren Sie, wie Sie die Serverleis...
MySQL 8.0.13 verfügt standardmäßig über einen Dat...
Das Computersystem wurde neu installiert und die ...
Manche Leute sagen, dass Werbung machen wie ein Me...
Die in diesem Beispiel verwendete MySQL-Version i...
Inhaltsverzeichnis 1. Props übergeordnete Kompone...
Wie kann ich die Bildlaufleisten ausblenden und t...
Weitere Informationen zu Bedienelementen finden S...
Lassen Sie uns heute ein interessantes Thema besp...
1. Die Verwendung der oder Syntax in MySQL und di...
In diesem Artikel wird der spezifische JavaScript...
Inhaltsverzeichnis 1. Erste SQL-Vorbereitung 2. M...
Inhaltsverzeichnis 1. Auf Ereignisse achten 2. Üb...
<br />Dieser Artikel soll Anfängern hauptsäc...