Rufen Sie die IP-Adresse des Docker-Hosts aus einem Docker-Container ab
- Erstellen Sie ein neues Projekt
- Definiere ein Bild
- Erstellen Sie ein Nginx-Image
- Führen Sie einen Container aus
- Rufen Sie die IP-Adresse des Docker-Hosts aus einem Docker-Container ab
- Abschluss
IP-Adresse bedeutet Internet Protocol-Adresse, ein Zahlenwert mit der Syntax 192.168.0.1
. IP-Adressen identifizieren ein mit einem Netzwerk verbundenes Gerät eindeutig und helfen uns auch beim Zugriff auf Anwendungen, die auf verschiedenen Geräten im Internet ausgeführt werden.
Anwendungen können in zwei Umgebungen ausgeführt werden: localhost oder auf einem Remote-Server wie AWS. Diese Anwendungen verwenden die IP-Adresse des Hosts, um auf die Anwendungen oder Container zuzugreifen, die auf ihnen ausgeführt werden.
Da wir Anwendungen normalerweise auf dem lokalen Host entwickeln und ausführen, behandelt dieses Tutorial keine Anwendungen, die in der Produktion ausgeführt werden. In diesem Tutorial erfahren Sie, wie Sie die IP-Adresse des Docker-Hosts aus einem Docker-Container abrufen.
Erstellen Sie ein neues Projekt
Öffnen Sie WebStorm IDEA und wählen Sie Datei > Neu > Projekt
. Wählen Sie im sich öffnenden Fenster Leeres Projekt
und ändern Sie den Projektnamen von unbenannt
in docker-host-ip
oder verwenden Sie einen beliebigen Namen.
Drücken Sie abschließend die Schaltfläche Erstellen, um ein leeres Projekt zu erstellen.
Um diese Anwendung zu testen, verwenden wir ein Nginx, das eine Webseite anzeigt, die den zufällig generierten Text enthält. Erstellen Sie eine index.html
-Datei und kopieren Sie den folgenden Code und fügen Sie ihn in die Datei ein.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Lorem ipsum text</title>
</head>
<body>
<p>Magna elaboraret dictumst sed quidam potenti tempus
principes morbi. Sit libero et eruditi lectus nonumes simul.
Dicam putent diam volumus similique ponderum sententiae maecenas mattis ridens.
Homero iisque regione voluptatibus nullam detraxit nullam eleifend brute.
Ligula orci dicat ac luptatum quisque appareat invidunt odio mazim.
Reformidans impetus facilis veniam fringilla.
Consectetur eros ferri congue latine constituto veritus persequeris dolorum felis.
Harum felis theophrastus aliquam wisi nibh nec assueverit mi nonumes.
Cubilia option ei ex vulputate at habeo aliquet omittantur delectus.
Sanctus dolorem moderatius venenatis agam suscipit comprehensam imperdiet amet.</p>
</body>
</html>
Um diesen Text zu generieren, installieren Sie das Lorem-Plugin und drücken Sie auf Ihrer Entwicklungsumgebung Code > Generate > Generate Text
, um einen Text mit 10 Sätzen zu generieren.
Definiere ein Bild
Erstellen Sie eine Datei namens Dockerfile
und kopieren Sie die folgenden Anweisungen und fügen Sie sie in die Datei ein.
FROM nginx:1.23.1-alpine
COPY . /usr/share/nginx/html
VON
– Dies definiert das Basisbild, auf dem unser benutzerdefiniertes Bild mit nachfolgenden Anweisungen erstellt werden soll.KOPIEREN
– Dies kopiert alle Dateien und Verzeichnisse im aktuellen Verzeichnis in das Image-Dateisystemziel/usr/share/nginx/html
.
Um mehr über die Verwendung des Nginx-Images zu erfahren, bietet der Docker-Hub offizielles Nginx-Image detaillierte Informationen zum Erstellen eines Images und zum Ausführen eines Containers daraus.
Erstellen Sie ein Nginx-Image
Um ein Nginx-Image unserer Anwendung zu erstellen, verwenden Sie den folgenden Befehl, um ein Image mit dem Tag host-ip:latest
zu erstellen.
~/WebstormProjects/docker-host-ip$ docker build --tag host-ip:latest .
Dieser Befehl führt die Anweisungen des Dockerfiles
sequentiell aus. Der Vorgang kann wie unten gezeigt im Terminalfenster angezeigt werden.
=> CACHED [1/2] FROM docker.io/library/nginx:1.23.1-alpine@sha256:082f8c10bd47b6acc8ef15ae61ae45dd8fde0e9f389a8b5cb23 0.0s
=> => resolve docker.io/library/nginx:1.23.1-alpine@sha256:082f8c10bd47b6acc8ef15ae61ae45dd8fde0e9f389a8b5cb23c374086 0.2s
=> [2/2] COPY . /usr/share/nginx/html
Führen Sie einen Container aus
In diesem Abschnitt möchten wir die IP-Adresse des Hosts aus dem laufenden Container sehen. Da wir keinen laufenden Container haben, müssen wir zuerst einen Container mit dem folgenden Befehl ausführen.
~/WebstormProjects/docker-host-ip$ docker run --name host-ip-service -d -p 8000:80 host-ip:latest
Dieser Befehl führt einen Container namens host-ip-service
aus, der Port 8000 auf dem Host bereitstellt, um auf Post 80 auf dem Container zu lauschen. Um den Inhalt der Anwendung anzuzeigen, stellen Sie im Browser eine Anfrage an localhost:8000
(http://localhost:8000/), und eine Webseite mit zufälligem Text wird angezeigt.
Rufen Sie die IP-Adresse des Docker-Hosts aus einem Docker-Container ab
Da wir einen Befehl in einem laufenden Container ausführen möchten, verwenden Sie den folgenden Befehl, um in den Docker-Container einzudringen.
docker exec -it host-ip-service /bin/sh
Ausgang:
/ #
Um die IP-Adresse des Docker-Hosts zu erhalten, auf dem unser Container host-ip-service
läuft, geben Sie den folgenden Befehl ein und drücken Sie die Enter-Taste auf Ihrer Tastatur.
/ # /sbin/ip route|awk '/default/ { print $3 }'
Ausgang:
172.17.0.1
Beachten Sie, dass wir, da wir die Docker-Bridge verwenden, die die Standardeinstellung für Container ist, die IP-Adresse der Bridge erhalten, die 172.17.0.1
lautet, anstelle der IP-Adresse in Ihrem Netzwerk, mit dem der Host verbunden ist.
Abschluss
In diesem Tutorial haben wir gelernt, die IP-Adresse des Docker-Hosts aus einem Container abzurufen, indem wir eine Nginx-Anwendung nutzen. Beachten Sie, dass es andere Methoden gibt, um das gleiche Ziel zu erreichen, je nachdem, wo der Container ausgeführt wird, und es uns freistehen sollte, jeden Ansatz zu verwenden, der die Anforderungen erfüllt.
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHubVerwandter Artikel - Docker Container
- Der Unterschied zwischen Docker-Container und Docker-Image
- Erstellen Sie einen Container in einer Docker-Compose-Datei neu
- Führen Sie Container mit Docker kontinuierlich im Hintergrund aus
- Geben Sie einen laufenden Docker-Container mit einem neuen Pseudo-TTY ein
- Listen Sie nur die angehaltenen Container in Docker auf
- Löschen Sie Container dauerhaft in Docker