Übersetzt aus der offiziellen Docker-Dokumentation, Originaltext: https://docs.docker.com/network/overlay/ Overlay-Networking erstellt ein verteiltes Netzwerk zwischen mehreren Hosts, auf denen sich Docker-Daemons befinden. Dieses Netzwerk überschreibt das hostspezifische Netzwerk und ermöglicht es Containern (einschließlich Containern in Clusterdiensten), eine Verbindung damit herzustellen, um sicher zu kommunizieren. Offensichtlich kümmert sich Docker um das Routing von Datagrammen zwischen den Quell- und Zielcontainern des Docker-Daemons. Wenn Sie einen Swarm initialisieren oder einen Docker-Host zu einem vorhandenen Swarm hinzufügen, werden auf dem Host zwei neue Netzwerke erstellt: Zur Steuerung und Datenübertragung im Zusammenhang mit Clusterdiensten wird ein Overlay-Netzwerk namens „Ingress“ verwendet. Wenn Sie einen Clusterdienst erstellen und ihn nicht mit einem benutzerdefinierten Overlay-Netzwerk verbinden, wird er standardmäßig mit dem Eingangsnetzwerk verbunden. Ein Bridge-Netzwerk namens docker_gwbridge. Wird verwendet, um diesen Docker-Daemon mit anderen Daemons im Cluster zu verbinden. Sie können benutzerdefinierte Overlay-Netzwerke mit dem Befehl „Docker Network Create“ erstellen, genau wie Sie benutzerdefinierte Bridge-Netzwerke erstellen. Dienste und Container können gleichzeitig mit mehreren Netzwerken verbunden werden. Dienste und Container können nur mit anderen Objekten im Netzwerk kommunizieren, in dem sie sich befinden. Obwohl sowohl Clusterdienste als auch einzelne Container eine Verbindung zum Overlay-Netzwerk herstellen können, sind das Standardverhalten und die Konfiguration der beiden unterschiedlich. Daher ist der Rest dieses Themas in drei Teile unterteilt: diejenigen, die für alle Overlay-Netzwerke gelten; diejenigen, die für Netzwerke in Cluster-Diensten gelten; und diejenigen, die für Overlay-Netzwerke gelten, die von einzelnen Containern verwendet werden. Gilt für alle Overlay-Netzwerkvorgänge Erstellen eines Overlay-Netzwerks ✅Voraussetzungen Für den Docker-Daemon mit Overlay-Netzwerk sind Firewall-Regeln erforderlich Damit Docker-Hosts in einem Overlay-Netzwerk miteinander kommunizieren können, müssen Sie die folgenden Ports öffnen: 1. TCP-Port 2377, wird für die Clusterverwaltungskommunikation verwendet 2. TCP- und UDP-Port 7946, wird für die Kommunikation zwischen Knoten verwendet 3. UDP-Port 4789 wird für die Datenübertragung im Overlay-Netzwerk verwendet Bevor Sie ein Overlay-Netzwerk erstellen können, müssen Sie Ihren Docker-Daemon entweder mit „Docker Swarm Init“ als Swarm-Manager initialisieren oder ihn mit „Docker Swarm Join“ einem vorhandenen Swarm hinzufügen. Unabhängig von der Methode wird standardmäßig ein Overlay-Netzwerk namens Ingress erstellt und verwendet. Tun Sie dies auch, wenn Sie keine Clusterdienste verwenden möchten. Später können Sie benutzerdefinierte Overlay-Netzwerke erstellen. Um ein Overlay-Netzwerk zur Verwendung mit Cluster-Diensten zu erstellen, verwenden Sie den unten gezeigten Befehl:
Um ein Netzwerk zu erstellen, das sowohl für Swarm-Dienste als auch für die Kommunikation einzelner Container mit anderen einzelnen Containern in anderen Docker-Daemons verwendet werden kann, fügen Sie das Flag --attachable hinzu:
Sie können IP-Adressbereich, Subnetz, Gateway und andere Optionen angeben. Weitere Einzelheiten finden Sie unter „Docker Network Create – Help“. Verschlüsselte Übertragung im Overlay-Netzwerk Alle mit der Dienstverwaltung verbundenen Übertragungen werden standardmäßig mit dem AES-Algorithmus im GCM-Modus verschlüsselt. Die Verwaltungsknoten im Cluster rotieren den Verschlüsselungsschlüssel alle 12 Stunden. Wenn Sie Anwendungsdaten verschlüsseln möchten, fügen Sie beim Erstellen des Netzwerks --opt encrypted hinzu. Dieser Parameter unterstützt die IPSEC-Verschlüsselung auf VXLAN-Ebene. Dieser Vorgang führt zu einer nicht zu vernachlässigenden Leistungsverschlechterung und sollte daher vor der Anwendung in einer Produktionsumgebung getestet werden. Wenn Sie die Overlay-Verschlüsselung aktivieren, erstellt Docker IPSEC-Tunnel auf allen Knoten im Netzwerk, für die der Dienst geplant ist. Diese Tunnel werden ebenfalls mit dem AES-Algorithmus im GCM-Modus verschlüsselt und der Verschlüsselungsschlüssel wird alle 12 Stunden automatisch rotiert. ❌ Fügen Sie einem Overlay-Netzwerk, das verschlüsselte Kommunikation verwendet, keine Windows-Knoten hinzu. Verschlüsselte Kommunikation in Overlay-Netzwerken wird unter Windows nicht unterstützt. Wenn ein Windows-Knoten versucht, eine Verbindung zu einem Overlay-Netzwerk herzustellen, das verschlüsselte Kommunikation verwendet, wird kein Fehler gemeldet, der Knoten kann jedoch nicht mit anderen Knoten kommunizieren. Cluster-Modus-Overlay-Netzwerk und separate Container Sie können die Overlay-Netzwerkfunktion nutzen, indem Sie --opt encrypted --attackable verwenden oder nicht verwaltete Container zum Netzwerk hinzufügen.
Ändern des Standard-Eingangsnetzwerks Die meisten Benutzer müssen kein Ingress-Netzwerk konfigurieren. Aber Docker 17.05 und spätere Versionen ermöglichen Ihnen dies. Diese Funktion ist nützlich, wenn das automatisch ausgewählte Subnetz mit einem vorhandenen Netzwerk in Ihrem Netzwerk in Konflikt steht oder wenn Sie andere Netzwerkeinstellungen auf niedriger Ebene wie MTU ändern müssen. Um das Eingangsnetzwerk zu ändern, müssen Sie es löschen und dann erstellen. Dies erfordert, dass Sie die Änderung abschließen, bevor Sie den Dienst im Cluster erstellen. Wenn es Dienste gibt, die Ports veröffentlichen, löschen Sie diese, bevor Sie das Eingangsnetzwerk löschen. Wenn das Eingangsnetzwerk nicht vorhanden ist, können vorhandene Dienste ohne veröffentlichte Ports weiterhin Dienste bereitstellen, es gibt jedoch keine Lastausgleichsfunktion. Betroffen sind Dienste, die Ports veröffentlichen, wie etwa WordPress-Dienste, die Port 80 veröffentlichen. Verwenden Sie „Docker Network Inspect Ingress“, um das Ingress-Netzwerk zu überprüfen, und löschen Sie dann alle Dienste im Container, die mit dem Ingress verbunden sind. Bei diesen Diensten handelt es sich um Dienste, die Ports veröffentlichen, wie beispielsweise der WordPress-Dienst, der Port 80 veröffentlicht. Wenn alle diese Dienste nicht gestoppt werden, schlägt der nächste Schritt fehl. Löschen Sie das Eingangsnetzwerk.
3. Erstellen Sie ein neues Overlay-Netzwerk mit dem Ingress-Tag und fügen Sie die gewünschte Konfiguration hinzu. Das folgende Beispiel konfiguriert die MTU auf 1200, legt das Subnetz auf 10.11.0.0/16 fest und setzt das Gateway auf 10.11.0.2. $ Docker-Netzwerk erstellen \ --Treiber-Overlay \ --ingress \ --subnet=10.11.0.0/16 \ --gateway=10.11.0.2 \ --opt com.docker.network.mtu=1200 \ mein-ingress Hinweis: Sie können dem Ingerss-Netzwerk einen beliebigen anderen Namen geben, es kann jedoch nur eines geben. Der Versuch, ein zweites zu erstellen, schlägt fehl. 4. Starten Sie den Dienst neu, den Sie im ersten Schritt gestoppt haben. Ändern Sie die Schnittstelle docker_gwbridge docker_gwbridge ist eine virtuelle Brücke, die das Overlay-Netzwerk (einschließlich des Eingangsnetzwerks) mit dem physischen Netzwerk eines bestimmten Docker-Daemons verbindet. Docker erstellt es automatisch, wenn Sie einen Cluster initialisieren oder einen Docker-Host zu einem Cluster hinzufügen, es ist jedoch kein Docker-Gerät. Es existiert im Kernel des Docker-Hosts. Wenn Sie die Konfiguration ändern möchten, müssen Sie dies tun, bevor Sie den Host zum Cluster hinzufügen, oder den Host vorübergehend aus dem Cluster entfernen. Stoppen Sie Docker Löschen Sie die Schnittstelle docker_gwbridge
3. Starten Sie Docker, treten Sie dem Cluster nicht bei und initialisieren Sie ihn nicht 4. Verwenden Sie den Befehl „Docker Network Create“, um die Docker_Gwbridge-Brücke manuell zu erstellen oder neu zu erstellen und fügen Sie Ihre benutzerdefinierten Einstellungen hinzu. Die folgenden Beispiele verwenden das Subnetz 10.11.0.0/16. $ Docker-Netzwerk erstellen \ --subnet 10.11.0.0/16 \ --opt com.docker.network.bridge.name=docker_gwbridge \ --opt com.docker.network.bridge.enable_icc=false \ --opt com.docker.network.bridge.enable_ip_masquerade=true \ docker_gwbridge 5. Initialisieren Sie einen Cluster oder treten Sie einem bei. Da die Brücke bereits vorhanden ist, erstellt Docker sie mit der Standardkonfiguration nicht erneut. Vorgänge in Clusterdiensten Veröffentlichen von Ports im Overlay-Netzwerk Clusterdienste, die mit demselben Overlay-Netzwerk verbunden sind, stellen alle Ports füreinander bereit. Wenn ein Port von außerhalb des Dienstes erreichbar sein soll, muss er mit -p oder --publish in Docker Service Create oder Docker Service Update veröffentlicht werden. Sowohl die alte, durch Doppelpunkte getrennte Syntax als auch die neue, durch Kommas getrennte Syntax werden unterstützt. Die längere Syntax ist besser, da sie einigermaßen selbsterklärend ist.
Umgehen des Routing-Netzwerks für Cluster-Dienste Standardmäßig veröffentlichen Clusterdienste Ports über das Routing-Netzwerk. Wenn Sie eine Verbindung mit einem veröffentlichten Port auf einem beliebigen Clusterknoten herstellen (unabhängig davon, ob dort der durch den Port dargestellte Dienst ausgeführt wird oder nicht), können Sie zu dem Knoten umgeleitet werden, auf dem der angegebene Dienst ausgeführt wird. Docker fungiert effektiv als Lastenausgleich für Ihren Dienstcluster. Dienste, die das Routing-Netzwerk verwenden, werden im virtuellen IP-Modus (VIP) ausgeführt. Auch wenn ein Dienst auf einem einzelnen Knoten ausgeführt wird (über das Flag --global), wird das Routing-Mesh verwendet. Bei der Verwendung eines Routing-Mesh gibt es keine Garantie, welcher Knoten die Anfrage eines Clients bearbeitet. Um das Routing-Mesh zu umgehen, können Sie den Dienst im DNS-Round-Robin-Modus (DNSRR) starten. Indem Sie das Flag --endpoint-mode auf dnsrr setzen. Sie müssen vor dem Dienst Ihren eigenen Load Balancer ausführen. Eine DNS-Abfrage für einen Dienstnamen auf dem Docker-Host gibt eine Reihe von IP-Adressen von Knoten zurück, auf denen der angegebene Dienst ausgeführt wird. Konfigurieren Sie Ihren Load Balancer so, dass er diese Liste verwendet und den Datenverkehr zwischen den Knoten ausgleicht. Trennung von Kontrollfluss und Datenfluss Standardmäßig wird der Steuerverkehr an den Cluster-Manager übermittelt und zwischen Anwendungen übertragen, die im selben Netzwerk ausgeführt werden, obwohl der Steuerverkehr verschlüsselt ist. Sie können Docker so konfigurieren, dass zum Verarbeiten unterschiedlicher Streams unterschiedliche Netzwerkschnittstellen verwendet werden. Wenn Sie einen Cluster initialisieren oder ihm beitreten, geben Sie --advertise-addr bzw. --datapath-addr an. Sie müssen dies auf jedem Knoten tun, der dem Cluster beitreten soll. Für einzelne Container im Overlay-Netzwerk verfügbare Vorgänge Verbinden von eigenständigen Containern mit dem Overlay-Netzwerk Das Eingangsnetzwerk wurde ohne das Flag --attachable erstellt. Dies bedeutet, dass es nur von Clusterdiensten und nicht von eigenständigen Containern verwendet werden kann. Sie können eigenständige Container mit benutzerdefinierten Overlay-Netzwerken verbinden, die mit der angegebenen Option --attachablebiaojid erstellt wurden. Dadurch können unabhängige Container, die auf verschiedenen Docker-Hosts ausgeführt werden, miteinander kommunizieren, ohne dass das Routing auf einem bestimmten Docker-Host eingerichtet werden muss. Veröffentlichungsports
Die obige ausführliche Erklärung des Overlay-Netzwerks in Docker ist alles, was ich mit Ihnen teilen möchte. Ich hoffe, sie kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Das könnte Sie auch interessieren:
|
<<: JS+Canvas zeichnet ein Glücksrad
>>: Detaillierte Schritte zum Ändern gespeicherter MySQL-Prozeduren
Nachdem Sie einen Container lokal erstellt haben,...
Inhaltsverzeichnis Überblick 1. Kompositions-API ...
<br />Originaltext: http://blog.rexsong.com/...
Ich habe die neueste Version von MySQL 5.7.x heru...
Ich habe hier mehrere Tomcats. Wenn ich sie gleic...
Die Standard-SSH-Portnummer von Linux-Servern ist...
Wenn die oben genannten Einstellungen in IE8 und C...
Zunächst: Was ist Datenbankpartitionierung? Ich h...
Rendern Prinzip Im Formularelement gibt es ein Mu...
Standortausdruckstyp ~ bedeutet, dass ein regulär...
Mehrere Konzepte Zeilenbox: Eine Box, die eine In...
Inhaltsverzeichnis Hintergrund 1) Aktivieren Sie ...
Code kopieren Der Code lautet wie folgt: <Kopf...
Hier verwende ich Samba (Filesharing-Dienst) v4.9...
In diesem Artikel finden Sie den spezifischen Cod...