Dieser Artikel stellt kurz die Beziehung zwischen Docker-Containern und Front-End-Prozessen vor und zeigt, wie Sie Dockerfile/docker-compose.yml schreiben, um Container auf elegante Weise dauerhaft ausführen zu können. Der Lebenszyklus eines Docker-Containers hängt mit dem vorherigen Prozess im Container zusammen. Aus diesem Grund können wir auf einige Container stoßen, die nach nur wenigen Sekunden Laufzeit automatisch beendet werden: Da im Container kein vorheriger Prozess vorhanden ist, wird der Container automatisch beendet, nachdem der vorherige Prozess beendet ist. Beispiel: Docker Hello-World # Eine Reihe von Dingen in einem Flash ausgeben docker run --name hello-world hello-world # Sie können sehen, dass der Hallo-Welt-Container Docker ps -a verlassen hat Wie können wir also verhindern, dass der Container automatisch beendet wird? Wenn wir uns bei einem reinen Container wie Alpine/CentOS/Ubuntu anmelden möchten, installieren wir auf seiner Basis einige Servicekomponenten und übertragen sie dann in unser eigenes Image. Es gibt im Internet viele Methoden, die beim Erstellen eines Containers eine while(true)-Endlosschleife (natürlich sleep) ausführen oder tail -f /dev/null usw. verwenden. Der Zweck besteht jedenfalls darin, einen permanenten Front-End-Prozess zu starten. Tatsächlich können wir die interaktiven und TTY-Parameter des Docker-Containers eleganter verwenden, um den Befehl sh/bash (*nix-System muss ihn haben) als Vorbefehl zu starten, sodass der Container nicht automatisch beendet wird. Verwenden Sie beispielsweise das Alpine-Image als Basis-Image und erstellen Sie einen kleinen Alpine-Systemcontainer, damit dieser dauerhaft ausgeführt werden kann, damit wir uns anmelden und bestimmte Befehle interaktiv ausführen können. # Erstellen Sie einen Container mit dem Alpine-Systemabbild. # -i interactive=true, um stdin zu öffnen # -t tty=true weist das Sitzungsterminal zu# -d Daemon-Modus kann weggelassen werden und Sie können direkt in den Container eintreten. Sie müssen zum Beenden Strg+P+Q drücken# Sie können nicht beenden. exit ist gleichbedeutend mit dem Beenden der sh-Sitzung und der Container wird exitdocker run -it -d --name alpine alpine sh # alpine muss Docker PS ausführen # Beim Container anmelden docker exec -it alpine sh # apline verwendet apk als Paketverwaltung# Installieren Sie einen kleinen Zug# Sie können docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl verwenden, um ein neues Image apk add sl zu generieren # Container beenden Hinweis: Es kann nur -d verwendet werden. Wenn Sie -d nicht verwenden, um das sh-Terminal direkt zu starten, können Sie nicht beenden. Andernfalls wird auch der Container beendet. Übermitteln Sie Containeränderungen, um ein neues Image zu generieren docker commit -m "alpine mit sl cmd" -a "big_cat" alpine big_cat/alpine_sl Docker-Bilder # Wenn Sie ein Konto haben, veröffentlichen Sie es im Docker-Hub: docker push big_cat/alpine_sl # Sie müssen den Parameter -it nicht angeben, wenn Sie den Container später stoppen/starten docker stop alpine Docker starten alpin Übermitteln Sie Containeränderungen, um ein neues Image zu generieren docker commit -m "alpine mit sl cmd" -a "big_cat" alpine big_cat/alpine_sl Docker-Bilder # Wenn Sie ein Konto haben, veröffentlichen Sie es im Docker-Hub: docker push big_cat/alpine_sl Der obige Befehl verwendet tatsächlich das Sh/Bash-Sitzungsterminal als Frontprozess, sodass der Container nicht automatisch beendet wird. Wenn Sie denken, dass es grob ist, beim Erstellen eines Containers so zu schreiben, macht das nichts, wir können das alles auf docker-compose übertragen Version: '3' Leistungen: große_katze_alpine: Containername: Big_Cat_Alpine Bild: alpin stdin_open: true # -i interaktiv tty: true # -t tty privilegiert: wahr Einstiegspunkt: ["sh"] # sh ausführen Container erstellen und beim Container anmelden docker-compose up -d big_cat_alpine ./ Docker PS docker exec -it big_cat_alpine sh Übergeben Sie die beiden Parameter an Docker-Compose und starten Sie den Servicecontainer nach der Orchestrierung. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Detaillierte Erläuterung der MySQL-Protokoll- und Sicherungs- und Wiederherstellungsprobleme
>>: React verwendet Emotionen zum Schreiben von CSS-Code
1: MySql herunterladen Offizielle Download-Adress...
Inhaltsverzeichnis Vorwort Die Beziehung zwischen...
Die Rolle von init_connect init_connect wird norm...
Das Standard-Remote-Repository von Nexus ist http...
Inhaltsverzeichnis Was ist JSONP JSONP-Prinzip JS...
Bevor ich anfange, möchte ich betonen, dass proce...
Inhaltsverzeichnis Vorwort Die Rolle des Renders ...
Inhaltsverzeichnis Erstellen eines Layouts CSS-St...
Offizielle Website-Adresse: https://www.mysql.com...
Einfach ausgedrückt besteht die verzögerte Replik...
CentOS 8 ist offiziell veröffentlicht! CentOS ent...
Dieser Artikel beschreibt anhand von Beispielen d...
Inhaltsverzeichnis linux 1. Was ist SWAP 2. Was p...
1. Nach der Installation der Windows-Version von ...
In diesem Artikel wird die Methode vorgestellt, m...