Website-Suche

Installieren, Ausführen und Löschen von Anwendungen in Docker-Containern - Teil 2


Im Anschluss an den vorherigen Docker-Artikel wird in diesem Tutorial erläutert, wie Sie einen Docker-Container in einem neuen Image speichern, einen Container entfernen und einen Nginx-Webserver in einem Container ausführen.

Anforderungen

  • So installieren Sie Docker und führen Container in CentOS/RHEL 8/7 aus – Teil 1

Ausführen und Speichern eines Docker-Containers

1. In diesem Beispiel führen wir einen Ubuntu-basierten Docker-Container aus und speichern ihn, in dem der Nginx-Server installiert wird. Bevor Sie jedoch Änderungen an einem Container vornehmen, starten Sie zuerst den Container mit den folgenden Befehlen, die den Nginx-Daemon aktualisieren und in das Ubuntu-Image installieren:

# docker run ubuntu bash -c "apt-get -y update" 
docker run ubuntu bash -c "apt-get -y install nginx" 

Wenn Sie den Fehler "E: Paket nginx kann nicht gefunden werden" erhalten, müssen Sie eine Verbindung zu einem Container mit interaktiver CLI herstellen und nginx wie gezeigt installieren.

# docker run -it ubuntu bash
apt install nginx
exit

2. Geben Sie nach der Installation des Nginx-Pakets den Befehl docker ps -l ein, um die ID oder den Namen des ausgeführten Containers abzurufen.

# docker ps -l

Und übernehmen Sie die Änderungen, indem Sie den folgenden Befehl ausführen:

# docker commit 5976e4ae287c ubuntu-nginx

Hier steht 5976e4ae287c für die Container-ID und ubuntu-nginx für den Namen des neuen Bildes, das mit den übertragenen Änderungen gespeichert wurde.

Um zu sehen, ob das neue Image erfolgreich erstellt wurde, führen Sie einfach den Befehl docker images aus und eine Liste aller gespeicherten Images wird angezeigt.

# docker images

Es besteht die Möglichkeit, dass der Installationsprozess im Container schnell abgeschlossen wird, was zu einem nicht laufenden Container führt (Container wird gestoppt). In diesem Fall zeigt der Befehl docker ps keine Ausgabe an, da kein Container ausgeführt wird.

Um die ID des Containers weiterhin abrufen zu können, führen Sie docker ps -a | head -3 aus, um die neuesten Container auszugeben und den Container basierend auf dem Befehl zum Erstellen des Containers und dem Status "Beendet" zu identifizieren.

3. Alternativ können Sie aktiv an Containersitzungen teilnehmen, indem Sie den Befehl docker run -it ubuntu bash ausführen und den weiteren Befehl apt-get install nginx ausführen. Während der Befehl ausgeführt wird, trennen Sie ihn mit den Tasten Strg-p + Strg-q vom Container und der Container wird auch dann weiter ausgeführt, wenn der Nginx-Installationsvorgang abgeschlossen ist.

# docker run -it ubuntu bash
apt-get install nginx

Rufen Sie dann die ID des ausgeführten Containers mit docker ps ab, und übernehmen Sie die Änderungen. Wenn Sie fertig sind, geben Sie mit docker attach erneut die Containerkonsole ein, und geben Sie exit ein, um den Container zu beenden.

# docker ps
docker attach 3378689f2069
exit

4. Um weiter zu testen, ob das aktuelle Image ordnungsgemäß übergeben wurde (in diesem Fall wurde der Nginx-Dienst installiert), führen Sie den folgenden Befehl aus, um einen neuen Container zu generieren, der ausgegeben wird, wenn die Nginx-Binärdatei erfolgreich installiert wurde:

# docker run ubuntu-nginx whereis nginx

5. Um einen Container zu entfernen, verwenden Sie den Befehl rm für eine Container-ID oder einen Namen, der mit dem Befehl docker ps -a abgerufen werden kann:

# docker ps -a
sudo docker rm 36488523933a

So führen Sie Nginx im Docker-Container aus

6. In diesem Teil konzentrieren wir uns darauf, wie Sie einen Netzwerkdienst, wie z. B. einen Nginx-Webserver, in Docker ausführen und darauf zugreifen können, indem Sie das zuvor erstellte ubuntu-nginx-Image verwenden, auf dem der Nginx-Daemon installiert wurde.

Das erste, was Sie tun müssen, ist, einen neuen Container zu erstellen, Host-Container-Ports zuzuordnen und die Container-Shell aufzurufen, indem Sie den folgenden Befehl ausführen:

# docker run -it -p 81:80 ubuntu-nginx /bin/bash
nginx &

Hier macht die Option -p den Host-Port für den Container-Port verfügbar. Während der Host-Port beliebig sein kann, mit der Bedingung, dass er verfügbar sein sollte (keine anderen Host-Dienste sollten darauf lauschen), muss der Container-Port genau der Port sein, den der interne Daemon abhört.

Sobald Sie mit der Containersitzung verbunden sind, starten Sie den Nginx-Daemon im Hintergrund und trennen Sie sich von der Containerkonsole, indem Sie die Tasten Strg-p + Strg-q drücken.

7. Führen Sie nun docker ps aus, um den Status Ihres ausgeführten Containers abzurufen. Sie können Hostnetzwerk-Sockets auch anzeigen, indem Sie den folgenden Befehl eingeben:

# docker ps
OR
netstat -tlpn 

8. Um die vom Nginx-Container bereitgestellte Seite zu besuchen, öffnen Sie einen Browser von einem entfernten Standort in Ihrem LAN und geben Sie die IP-Adresse Ihres Rechners über das HTTP-Protokoll ein.

9. Um den Container zu stoppen, führen Sie den folgenden Befehl gefolgt von der Container-ID oder dem Namen aus:

# docker ps
docker stop fervent_mccarthy
docker ps

Um den ausgeführten Container zu stoppen, geben Sie die Eingabeaufforderung container shell ein und geben Sie exit ein, um den Vorgang zu beenden:

# docker attach fervent_mccarthy
exit

Beachten Sie, dass die Verwendung dieser Art von Containern zum Ausführen von Webservern oder anderen Arten von Diensten nur für Entwicklungszwecke oder Tests am besten geeignet ist, da die Dienste nur aktiv sind, während der Container ausgeführt wird. Durch das Beenden des Containers werden alle laufenden Dienste oder alle vorgenommenen Änderungen unterbrochen.

Weiterführende Literatur:

Verwandte Artikel: