GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Erläutern von Docker-Netzwerkkonzepten

Docker-Netzwerk wird im Wesentlichen verwendet, um die Kommunikation zwischen den Docker-Containern und der Außenwelt über den Host-Computer herzustellen, oder Sie können sagen, dass es sich um einen Kommunikationskanal handelt, durch den alle isolierten Container in verschiedenen Situationen miteinander kommunizieren, um die erforderlichen Aktionen auszuführen. In diesem Leitfaden erläutern wir grundlegende Docker-Netzwerkkonzepte mit praktischen Beispielen für Ubuntu.

Wenn Sie Docker noch nicht installiert haben, lesen Sie die folgende Anleitung.

  • So installieren Sie Docker in Ubuntu 18.04 LTS Server

Grundlagen der Docker-Nutzung:

  • Erste Schritte mit Docker

Erläuterung von Docker-Netzwerkkonzepten

Alle unten aufgeführten Befehle wurden mit root getestet Privilegien auf Ubuntu .

Um Netzwerkvorgänge zu verwalten, wie das Erstellen eines neuen Netzwerks, das Verbinden eines Containers mit einem Netzwerk, das Trennen eines Containers vom Netzwerk, das Auflisten verfügbarer Netzwerke und das Entfernen von Netzwerken usw., verwenden wir den folgenden Befehl:

# docker network

Typen von Docker-Netzwerktreibern

Um alle Ihre Netzwerke aufzulisten, führen Sie Folgendes aus:

# docker network ls

Lassen Sie uns eine kurze Einführung in alle geben.

  1. Bridge-Netzwerk : Wenn Sie Docker starten, wird automatisch ein Standard-Bridge-Netzwerk erstellt. Ein neu gestarteter Container verbindet sich automatisch damit. Sie können auch benutzerdefinierte benutzerdefinierte Bridge-Netzwerke erstellen. Benutzerdefinierte Bridge-Netzwerke sind dem Standard-Bridge-Netzwerk überlegen.
  2. Host-Netzwerk : Es entfernt die Netzwerkisolation zwischen dem Container und dem Docker-Host und verwendet das Netzwerk des Hosts direkt. Wenn Sie einen Container ausführen, der an Port 80 bindet, und Sie Hostnetzwerke verwenden, ist die Anwendung des Containers auf Port 80 der IP-Adresse des Hosts verfügbar. Das bedeutet, dass Sie nicht mehrere Web-Container auf demselben Host ausführen können, auf demselben Port, da der Port jetzt allen Containern im Host-Netzwerk gemeinsam ist.
  3. Kein Netzwerk : Bei dieser Art von Netzwerk sind Container an kein Netzwerk angeschlossen und haben keinen Zugriff auf das externe Netzwerk oder andere Container. Dieses Netzwerk wird also verwendet, wenn Sie den Netzwerkstapel auf einem Container vollständig deaktivieren möchten.
  4. Overlay-Netzwerk : Erstellt ein internes privates Netzwerk, das sich über alle Knoten erstreckt, die am Schwarmcluster teilnehmen. Overlay-Netzwerke erleichtern also die Kommunikation zwischen einem Docker-Schwarmdienst und einem eigenständigen Container oder zwischen zwei eigenständigen Containern auf verschiedenen Docker-Daemons.
  5. Macvlan-Netzwerk : Einige Anwendungen, insbesondere Legacy-Anwendungen oder Anwendungen, die den Netzwerkverkehr überwachen, erwarten eine direkte Verbindung mit dem physischen Netzwerk. In einer solchen Situation können Sie den Macvlan-Netzwerktreiber verwenden, um der virtuellen Netzwerkschnittstelle jedes Containers eine MAC-Adresse zuzuweisen, sodass es so aussieht, als wäre es eine physische Netzwerkschnittstelle, die direkt mit dem physischen Netzwerk verbunden ist.

Erlauben Sie mir, Ihnen praktische Übungen zu Bridge- und Host-Netzwerken zu zeigen.

1. Bridge-Netzwerk

Ich werde zwei Alpine-Container verwenden, um diese Art von Netzwerk zu erklären.

Jetzt werde ich zwei Alpine-Container ausführen, nämlich C1 und C2 mit Befehlen:

# docker run -it -d --name c1 alpine ash
# docker run -it -d --name c2 alpine ash

Lassen Sie uns als Nächstes die IP-Adresse dieser laufenden Container herausfinden. Führen Sie dazu Folgendes aus:

# docker exec -it c1 sh –c “ip a”
# docker exec -it c2 sh –c “ip a”

Wie Sie sehen, lautet die IP-Adresse des C1-Containers 172.17.0.2 und die IP-Adresse von C2 ist 172.17.0.3 .

Lassen Sie uns jetzt fortfahren und versuchen, uns gegenseitig zu pingen, um sicherzustellen, dass sie kommunizieren können.

Verbinden Sie sich zuerst mit dem laufenden C1-Container und versuchen Sie, den C2-Container zu pingen:

# docker attach c1
# Ping –c 2 172.17.0.3

Hängen Sie auf ähnliche Weise an den C2-Container an und versuchen Sie, den C1-Container zu pingen.

# docker attach c2
# Ping –c 2 172.17.0.2

Wie Sie in den obigen Screenshots sehen, findet die Kommunikation zwischen den Containern im selben Netzwerk statt.

Wir können es auch überprüfen, indem wir das Bridge-Netzwerk mit dem Befehl:

untersuchen
# docker network inspect bridge

Der obige Befehl zeigt alle Informationen über das Netzwerk an, wie Netzwerktyp, Subnetz, Gateway, Containername und IIP-Adressen usw.

1.1 Erstellen eines benutzerdefinierten Bridge-Netzwerks

Wie ich bereits sagte, wird beim Start von Docker automatisch ein Standard-Bridge-Netzwerk erstellt . Alle neu gestarteten Container verbinden sich automatisch damit. Sie können jedoch auch benutzerdefinierte Bridge-Netzwerke erstellen.

Um einen neuen Netzwerktreiber zu erstellen, führen Sie einfach Folgendes aus:

# docker network create my_net

Oder,

# docker network create --driver bridge dhruv_net

Beide Befehle erledigen die gleiche Arbeit. Wenn Sie den Treibernamen nicht angeben, wird er im Standardnetzwerktreiber erstellt, d. h. Bridge .

In benutzerdefinierten Netzwerken wie dhruv_net können Container nicht nur über die IP-Adresse kommunizieren, sondern auch einen Containernamen in eine IP-Adresse auflösen. Diese Funktion wird als automatische Diensterkennung bezeichnet .

Um sicherzustellen, dass die Container miteinander kommunizieren können, lassen Sie uns drei Alpine-Container ausführen, nämlich A1 , A2 und A3 auf dhruv_net Netzwerk, das wir zuvor erstellt haben.

# docker run -it -d --name A1 --network dhruv_net alpine ash
# docker run -it -d --name A2 --network dhruv_net alpine ash
# docker run -it -d --name A3 --network dhruv_net alpine ash

Versuchen Sie nun, eine Verbindung zu einem der Container herzustellen, und pingen Sie die anderen beiden mit dem Containernamen an.

Aus den obigen Screenshots geht hervor, dass Container miteinander kommunizieren können.

2. Host-Netzwerk

Wir führen einen Container aus, der sich über das Hostnetzwerk an Port 80 bindet. Die Anwendung des Containers ist auf Port 80 der IP-Adresse des Hosts verfügbar.

Das Host-Netzwerk wird nur benötigt, wenn Sie Programme mit einem sehr spezifischen Netzwerk ausführen. Die Anwendung, die im Docker-Container ausgeführt wird, sieht aus der Perspektive des Netzwerks so aus, als würden sie auf dem Host selbst ausgeführt. Es ermöglicht dem Container mehr Netzwerkzugriff, als er normalerweise erhalten kann.

Hier haben wir netstat -ntlp verwendet Befehl, um den Listening-Port auf dem Server anzuzeigen. Um herauszufinden, welcher Dienst einen bestimmten Port abhört, diese Anleitung .

Wir haben nur die Grundlagen der Docker-Netzwerkkonzepte behandelt. Für weitere Details empfehle ich Ihnen, sich den unten angehängten Docker-Netzwerkleitfaden anzusehen.

  • Docker-Container-Netzwerk

Empfohlene Lektüre:

  • Erläuterung von Docker-Volumes
  • So aktualisieren Sie laufende Docker-Container automatisch
  • ctop – Ein Befehlszeilen-Überwachungstool für Linux-Container
  • Portainer – Eine einfachste Art, Docker zu verwalten
  • PiCluster – Eine einfache, webbasierte Docker-Verwaltungsanwendung
  • Dockly – Docker-Container vom Terminal aus verwalten

Über den Autor:

Dhruv Tiwari ist ein DevOps-Ingenieur, der es liebt, Dinge zu automatisieren, mit Linux in großem Maßstab zu arbeiten und von dem Tag zu träumen, an dem Systeme intelligent genug sind, um sich nie mehr bei einer Linux-Box anmelden zu müssen. Reise von CI/CD vom Quellcode über die Codebereitstellung bis zur Produktion.


Docker
  1. Holen Sie sich unseren Linux-Netzwerk-Spickzettel

  2. So starten Sie das Netzwerk unter Ubuntu neu

  3. Haben Sie ein echtes Problem mit Systemctl Networking?

  4. Docker installieren (Ubuntu)

  5. Beheben Sie Probleme mit dem Windows Server-Netzwerk

Software Defined Networking (SDN) für Einsteiger erklärt

Erläuterung von Docker-Volumes mit Beispielen

Lernen Sie verschiedene Netzwerkoptionen in VirtualBox kennen

Docker mit Docker Inspect ein Vergrößerungsglas zeigen

So erhalten Sie die IP-Adresse des Docker-Containers

So konfigurieren Sie Netzwerk-Namespaces in Docker-Containern