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

JavaScript Factory Pattern erklärt

Inhaltsverzeichnis Einfache Fabrik Fabrikmethode ...

Zwei Methoden zur Implementierung der Mysql-Remoteverbindungskonfiguration

Zwei Methoden zur Implementierung der Mysql-Remot...

Vue-Beispielcode zur einfachen Implementierung von virtuellem Scrollen

Inhaltsverzeichnis Vorwort Rollprinzip erreichen ...

Verwandte Vorgänge zum Hinzufügen und Löschen von Indizes in MySQL

Inhaltsverzeichnis 1. Die Rolle des Index 2. Erst...

Asynchroner Lebenszyklus von AsyncHooks in Node8

Async Hooks ist eine neue Funktion von Node8. Sie...

Eine kurze Analyse des MySQL-Index

Ein Datenbankindex ist eine Datenstruktur, deren ...

MySQL Multi-Instance-Bereitstellungs- und Installationshandbuch unter Linux

Was ist MySQL Multi-Instance Einfach ausgedrückt ...

Detaillierte Erklärung zur Verwendung der Funktion find_in_set() in MySQL

Betrachten wir zunächst ein Beispiel: In der Arti...

Kurze Analyse der geplanten MySQL-Sicherungsaufgaben

Einführung Um Datenverlust in einer Produktionsum...

TypeScript-Lernhinweise: Typeingrenzung

Inhaltsverzeichnis Vorwort Typinferenz Einengung ...

Tutorial zu HTML-Tabellen-Tags (3): Breiten- und Höhenattribute WIDTH, HEIGHT

Standardmäßig werden Breite und Höhe der Tabelle ...

CSS, um den kleinen scharfen Eckeneffekt von Blasen zu erzielen

Effektbild (die Rahmenfarbe ist zu hell, setzen S...