Detaillierte Erläuterung gängiger Befehle zur Netzwerkkonfiguration von Containern in Docker

Detaillierte Erläuterung gängiger Befehle zur Netzwerkkonfiguration von Containern in Docker

Grundlegende Netzwerkkonfiguration

Obwohl Docker basierend auf Images „mehrere“ Container öffnen kann und die einzelnen Container sich nicht gegenseitig beeinflussen, bedeutet dies nicht, dass die Container vollständig voneinander getrennt sind. Beim Ausführen eines Images stellt Docker eine Netzwerkverbindungsfunktion bereit, die Container-Ports dem Host-Host und Container-Ports einem anderen Container zuordnet, sodass Container mit dem Host-Host und untereinander kommunizieren können.

### Von außen auf Container-Anwendungen zugreifen

Wenn Sie beim Starten eines Containers die entsprechenden Parameter nicht angeben, kann auf Netzwerkanwendungen und -dienste im Container nicht über das Netzwerk außerhalb des Containers zugegriffen werden. Wenn Sie im Container einige Netzwerkanwendungen ausführen, auf die extern zugegriffen werden muss, können Sie die Portzuordnung mit dem Parameter -P oder -p angeben. Wenn Sie das Flag -P verwenden, ordnet Docker einem offenen Netzwerkport innerhalb des Containers zufällig einen Port zwischen 49000 und 49900 zu:

docker run -d -p [Spiegel-ID oder TAG]

Verwenden Sie -p (Kleinbuchstaben), um den zuzuordnenden Port anzugeben. An einen angegebenen Port kann nur ein Container gebunden werden. Die unterstützten Formate sind ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort.

Alle Schnittstellenadressen zuordnen

Verwenden Sie hostPort:containerPort, um den lokalen Port 5000 dem Port 5000 des Containers zuzuordnen:

docker run -d -p 5000:5000 Training/Webanwendung Python app.py

Standardmäßig sind alle Adressen an allen lokalen Schnittstellen gebunden. Um mehrere Ports zu binden, verwenden Sie das Flag -p mehrmals:

docker run -d -p 5000:5000 -p 3000:80 Training/Webanwendung Python app.py

Wird dem angegebenen Port der angegebenen Adresse zugeordnet

Sie können das Format „ip:hostPort:containerPort“ verwenden, um eine Zuordnung mit einer bestimmten Adresse anzugeben, beispielsweise der Localhost-Adresse 127.0.0.1:

docker run -d -p 127.0.0.1:5000:5000 Training/Webanwendung Python app.py

Es kann sich auch um die IP-Adresse anderer interner Container handeln.

Karte zu jedem Port der angegebenen Adresse

Verwenden Sie ip::containerPort, um einen beliebigen Port von localhost an Port 5000 des Containers zu binden. Der lokale Host weist automatisch einen Port zu:

docker run -d -p 127.0.0.1::5000 training/webapp python app.py

Sie können auch das UDP-Flag verwenden, um den UDP-Port anzugeben:

docker run -d -p 127.0.0.1:5000:5000/udp-Training/Webanwendung Python app.py

Anzeigen der zugeordneten Portkonfiguration

Verwenden Sie den Docker-Port, um die aktuell zugeordnete Portkonfiguration und die gebundene Adresse anzuzeigen:

Docker-Port nostalgic_morse 5000

Der Container verfügt über ein eigenes internes Netzwerk und eine eigene IP-Adresse (verwenden Sie Docker Inspect + Container-ID, um alle Variablenwerte abzurufen).

Container-Vernetzung ermöglicht Kommunikation zwischen Containern

Das Verbindungssystem des Containers ist neben der Portzuordnung eine weitere Möglichkeit zur Interaktion mit Anwendungen im Container. Es erstellt einen Tunnel zwischen dem Quell- und dem Empfangscontainer, und der Empfangscontainer kann die vom Quellcontainer angegebenen Informationen sehen.

Benutzerdefinierte Containerbenennung

Das Verknüpfungssystem wird basierend auf dem Containernamen implementiert. Daher müssen Sie zunächst einen einprägsamen Containernamen anpassen.

Obwohl das System beim Erstellen eines Containers standardmäßig einen Namen zuweist, bietet die benutzerdefinierte Benennung von Containern zwei Vorteile:

  • Benutzerdefinierte Namen sind leichter zu merken
  • Dies kann ein nützlicher Parameterpunkt beim Verbinden mit anderen Containern sein, beispielsweise beim Verbinden eines Webcontainers mit einem DB-Container.

Verwenden Sie das Flag --name, um dem Container einen benutzerdefinierten Namen zu geben:

docker run -d -p --name Webtraining/Webanwendung Python app.py

Verwenden Sie Docker PS, um den Namen anzuzeigen, oder verwenden Sie Docker Inspect, um den Namen des Containers anzuzeigen:

docker inspect -f "{{name}}" [Spiegel-ID]

Der Name des Containers ist eindeutig. Wenn Sie einen Container bereits web genannt haben, müssen Sie den Container zunächst mit dem Befehl docker rm löschen, bevor Sie einen neuen Container mit dem Namen web erstellen können.

Container-Vernetzung

Verwenden Sie den Parameter --link, um Containern eine sichere Interaktion untereinander zu ermöglichen.

Das Format des Parameters --link ist --link Name:Alias, wobei Name der Name des zu verknüpfenden Containers und Alias ​​der Alias ​​dieser Verbindung ist.

Lassen Sie uns beispielsweise einen neuen Datenbankcontainer erstellen:

docker run -d --name db training/postgres

Erstellen Sie dann einen Webcontainer und verbinden Sie ihn mit dem DB-Container:

docker run -d -p --name web --link db:db training/webapp python app.py

Zu diesem Zeitpunkt können der Datenbankcontainer und der Webcontainer miteinander kommunizieren. Sie können Docker PS verwenden, um die Verbindungen des Containers anzuzeigen.

Durch die Verwendung des Parameters --link kann Docker über einen sicheren Tunnel zwischen zwei Containern kommunizieren, ohne Ports zu öffnen. Dadurch wird vermieden, dass die Ports dem externen Netzwerk ausgesetzt werden.

Verbindungsinformationen öffentlicher Container anzeigen

Umgebungsvariablen: Verwenden Sie den Befehl env, um die Umgebungsvariablen des Containers anzuzeigen

docker run --name web --link db:db training/webapp umgebung

/etc/hosts-Datei: Wenn Sie den Link-Parameter verwenden, fügt Docker die Host-Informationen zur /etc/hosts-Datei des übergeordneten Containers hinzu. Unten finden Sie die Hosts-Datei des übergeordneten Containers web

docker run -t -i --link db:db training/webapp /bin/bash
root@aed84ee21bd3:/opt/webapp# cat /etc/hosts
127.17.0.7 aed84ee21bde
...
172.17.0.5db

Die erste ist die Hostinformation des Webcontainers, der standardmäßig seine eigene ID als Hostnamen verwendet. Das zweite ist die IP und der Hostname des DB-Containers.

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 Erklärung gängiger Befehle im Docker-Repository
  • Zusammenfassung gängiger Befehle in Dockerfile
  • Zusammenfassung der gängigen Docker-Befehle (praktische Version)
  • Zusammenfassung der in Docker häufig verwendeten Befehle zum Löschen von Container-Images
  • Detaillierte Erklärung gängiger Docker-Befehle

<<:  So gehen Sie mit verstümmelten Zeichen in der MySQL-Datenbank um

>>:  Verwenden Sie die mail()-Funktion von PHP zum Senden von E-Mails

Artikel empfehlen

So ändern Sie das Kennwort von mysql5.7.20 unter Linux CentOS 7.4

Nach dem Upgrade von MySQL auf Version 5.7 wurde ...

Datenabfragevorgang im MySQL-JSON-Format

Der Standardtabellenname ist „base_data“ und der ...

Tiefgreifendes Verständnis der Verwendung von CSS clear:both

clear:both wird zum清除浮動Das ist der Eindruck, den ...

Webdesign-Tutorial (8): Webseitenhierarchie und Raumgestaltung

<br />Vorheriger Artikel: Webdesign-Tutorial...

Lösung für das Problem des Sitzungsverlusts bei Nginx

Bei der Verwendung von Nginx als Reverse-Proxy fü...

Lösen Sie das Problem, dass Docker Pull zurückgesetzt wird

In diesem Artikel wird beschrieben, wie Sie das P...

Beispiel zum Deaktivieren der Browser-Cache-Konfiguration im Vue-Projekt

Beim Freigeben eines Projekts müssen Sie häufig d...

Detaillierte Analyse der HTML-Semantik und der zugehörigen Front-End-Frameworks

Über Semantik Die Semantik ist die Lehre von der ...

Verwendung des Linux-Crontab-Befehls

1. Befehlseinführung Der Befehl contab (Cron-Tabe...

Probleme bei der Installation von Python3 und Pip in Ubuntu in Docker

Text 1) Laden Sie das Ubuntu-Image herunter Docke...