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
Inhaltsverzeichnis Vorwort MySQL Master-Slave-Rep...
Sicht Was ist eine Ansicht? Welche Rolle spielt e...
Zwei Probleme, die bei der Installation von Docke...
Zweck: Unter Linux kann das Serverprogramm aus ve...
Es gibt im Vue-Ökosystem ein neues Build-Tool nam...
Dieser Artikel beschreibt, wie man über Docker ei...
In diesem Artikel wird der spezifische Code für d...
Bei der Entwicklung von Web-Frontends entwerfen U...
Die Eigenschaft, Text in CSS zu zentrieren, lässt ...
Vorwort: MYSQL dürfte die beliebteste WEB-Backend...
Vorwort Dieser Artikel stellt hauptsächlich die A...
Viele Menschen leben heute im Internet und die Suc...
Die Methode zur Lösung des Problems, das anfängli...
Inhaltsverzeichnis MySQL Shell import_table Daten...
Vorwort Wenn es um Datenbanktransaktionen geht, f...