So binden Sie einen Docker-Container an eine externe IP und einen externen Port

So binden Sie einen Docker-Container an eine externe IP und einen externen Port

Docker ermöglicht die Bereitstellung von Netzwerkdiensten durch den externen Zugriff auf Container oder durch die Verbindung von Containern.

Die folgenden Vorgänge werden durch das myfirstapp-Image simuliert. Klicken Sie hier, um zu erfahren, wie Sie ein myfirstapp-Image erstellen.

1. Container mit externem Zugriff

Nachdem der Container gestartet wurde, können einige Netzwerkanwendungen im Container ausgeführt werden und die Portzuordnung kann über den Parameter -p oder -P angegeben werden.

a. Wenn Sie das Flag -P (Großbuchstabe) verwenden, wählt Docker nach dem Zufallsprinzip einen Port aus und ordnet ihn dem offenen Netzwerkport im Container zu.

$ docker run -d -P meineersteapp python app.py 
$ Docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
dbcf5d3290ba myfirstapp "python app.py" vor 4 Sekunden Up 4 Sekunden 0.0.0.0:32770->80/tcp quizzical_engelbart

Derzeit kann über Port 32770 des lokalen Computers auf die von der Webanwendung im Container bereitgestellte Schnittstelle zugegriffen werden.

$ curl http://192.168.1.160:32770/
<h3>Hallo HALLO!</h3><b>Hostname:</b> dbcf5d3290ba<br/><b>Besuche:</b> <i>Verbindung zu Redis nicht möglich, Zähler deaktiviert</i> 

Sie können Docker-Protokolle auch verwenden, um Anwendungsinformationen anzuzeigen

$ Docker-Protokolle dbcf5d3290ba
* Läuft unter http://0.0.0.0:80/ (Zum Beenden STRG+C drücken)
192.168.1.5 - - [29/Mar/2018 06:17:34] "GET / HTTP/1.1" 200 -
192.168.1.5 - - [29/Mar/2018 06:17:34] "GET /favicon.ico HTTP/1.1" 404 -
192.168.1.160 - - [29/Mar/2018 06:17:43] "GET / HTTP/1.1" 200 -
192.168.1.5 - - [29/Mar/2018 06:18:59] "GET / HTTP/1.1" 200 -

b. Wenn Sie das Flag -p (Kleinbuchstaben) verwenden, können Sie den zuzuordnenden Port angeben, und nur ein Container kann an einen angegebenen Port gebunden werden. Die unterstützten Formate sind:

ip:Hostport:Containerport 
ip::Containerport 
Hostport:Containerport

$ docker run -d -p 4000:80 meineersteapp python app.py
$ docker run -d -p 4001:80 meineersteapp python app.py
$ locken http://192.168.1.160:4000/
Hallo HALLO!Hostname: f43ed2810353
Besuche: Verbindung zu Redis nicht möglich, Zähler deaktiviert
$ curl http://192.168.1.160:4001/
Hallo HALLO! Hostname:f43ed2810353
Besuche: Verbindung zu Redis nicht möglich, Zähler deaktiviert

Sie können sehen, dass der lokale Port 4000 und ein weiterer Port 4001 zugeordnet wurden.

Standardmäßig ordnet Docker alle lokalen Adressen zu. Versuchen wir nun, einen angegebenen Port einer angegebenen Adresse zuzuordnen.

$ docker run -d -p 127.0.0.1:4000:80 meineersteapp python app.py
$ curl http://127.0.0.1:4000/ ##Zugriff über $ curl http://localhost:4000/ ##Zugriff über $ curl http://192.168.1.160:4000/ ##Zugriff verweigert curl: (7) Verbindung zu 192.168.1.160:4000 fehlgeschlagen; Verbindung abgelehnt

Um dann auf die Anwendung im Container zuzugreifen, können Sie nur über die IP-Adresse 127.0.0.1 darauf zugreifen.

Der nächste Schritt besteht darin, einen beliebigen Port auf der lokalen Maschine an Port 80 des Containers zu binden und zufällig einen Port zuzuweisen

$ docker run -d -p 127.0.0.1::80 meineersteapp python app.py
$ docker ps ##127.0.0.1:32770->80/tcp
$ curl http://127.0.0.1:32770/ ##Zugriff über $ curl http://localhost:32770/ ##Zugriff über $ curl http://192.168.1.160:32770/ ##Zugriff verweigert

Sie können auch das Kommunikationsprotokoll angeben

docker run -d -p 5003:80/udp myfirstapp python app.py

2. Zeigen Sie die an den Container gebundenen und zugeordneten Ports und IP-Adressen an

$ Docker-Port 44de1b0b5312 (Container-ID)
80/tcp -> 127.0.0.1:32770

3. Hinweise

a.docker inspect, um das interne Netzwerk und die IP-Adresse des Containers anzuzeigen

$ docker inspect 44de1b0b5312 (Container-ID)

b. Binden Sie beim Starten des Containers mehrere IP-Adressen

$ docker run -d -p 5005:5000 -p 5006:80 myfirstapp python app.py #Container-ID: 44e703c1279a
$ Docker-Port 44e703c1279a
5000/tcp -> 0.0.0.0:5005
80/tcp -> 0.0.0.0:5006

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:
  • So legen Sie die Portzuordnung zum Ausführen von Containern in Docker fest
  • Fügen Sie die Portzuordnung hinzu, nachdem der Docker-Container gestartet wurde
  • Fehlerbehebungsprozess für Docker-Container, bei dem nach der Portzuordnung plötzlich keine Verbindung mehr hergestellt werden kann
  • Detaillierte Erläuterung der Docker-Portzuordnung und Containerverbindung
  • Detaillierte Erklärung zum Ändern der Container-Port-Zuordnung in Docker
  • Lösung, wenn der Docker-Container nicht auf den Host-Port zugreifen kann
  • Perfekte Lösung für das Problem, unter Windows 10 nicht auf den Port des Docker-Containers zugreifen zu können
  • Docker stellt Containern dynamisch Ports zur Verfügung
  • Detaillierte Erläuterung des Konfigurationsprozesses des Docker-Container-Netzwerkports
  • So ändern Sie die Portzuordnung eines laufenden Docker-Containers

<<:  MYSQL Eine Frage zur Verwendung von Zeichenfunktionen zum Filtern von Daten

>>:  HTML + CSS + JS realisiert, dass die Leinwand dem Quellcode für Spezialeffekte des kleinen Kreises der Maus folgt

Artikel empfehlen

Was tun, wenn Sie das ursprüngliche Passwort für MySQL auf dem MAC vergessen?

Die Methode zur Lösung des Problems, das anfängli...

Beispiel und Update für die Erstellung von HTML5+CSS3-Headern

Beim letzten Mal haben wir uns zwei Header-Layout...

Vue+js realisiert Video-Ein- und Ausblendeffekte

Vue+js realisiert das Ein- und Ausblenden des Vid...

Methoden des adaptiven Webdesigns (gutes Zugriffserlebnis auf Mobiltelefonen)

1. Fügen Sie dem HTML-Header das Viewport-Tag hin...

So verwenden Sie Verbindungen der Physik-Engine in CocosCreator

Inhaltsverzeichnis Mausgelenk Mausgelenk AbstandG...

Schritte zum Kapseln von Element-UI-Popupkomponenten

Kapseln Sie el-dialog als Komponente ein Wenn wir...

TypeScript verwendet vscode, um den Codekompilierungsprozess zu überwachen

Installieren Installieren Sie den TS-Befehl globa...

MySQL Serie 8 MySQL Server-Variablen

Tutorial-Reihe MySQL-Reihe: Grundlegende Konzepte...

5 Lösungen für den CSS-Box-Zusammenbruch

Zunächst: Was ist ein Box-Collapse? Elemente, die...