Verwenden Sie das virtuelle Netzwerk von Docker für Amazon ECS-Linux-Aufgaben - Amazon Elastic Container Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden Sie das virtuelle Netzwerk von Docker für Amazon ECS-Linux-Aufgaben

Der bridge-Netzwerkmodus wird nur für Amazon-ECS-Aufgaben unterstützt, die auf Amazon-EC2-Instances gehostet werden.

Im bridge-Modus verwenden Sie eine virtuelle Netzwerkbrücke, um eine Ebene zwischen dem Host und dem Netzwerk des Containers zu erstellen. Auf diese Weise können Sie Portzuordnungen erstellen, die einen Host-Port einem Container-Port neu zuordnen. Die Zuordnungen können statisch oder dynamisch sein.

Diagramm, das die Architektur eines Netzwerks im Bridge-Netzwerkmodus mit statischer Port-Zuordnung zeigt.

Mit einer statischen Port-Zuordnung können Sie explizit definieren, welchen Host-Port Sie einem Container-Port zuordnen möchten. Im obigen Beispiel wird der Port 80 auf dem Host dem Port 3000 auf dem Container zugeordnet. Um mit der containerisierten Anwendung zu kommunizieren, senden Sie den Datenverkehr an Port 80 an die IP-Adresse der Amazon-EC2-Instance. Aus der Sicht der containerisierten Anwendung sieht sie den eingehenden Datenverkehr an Port 3000.

Wenn Sie nur den Datenverkehr-Port ändern möchten, eignen sich statische Port-Zuordnungen. Dies hat jedoch immer noch den gleichen Nachteil wie die Verwendung des host-Netzwerkmodus. Sie können auf jedem Host nur eine einzige Instanziierung einer Aufgabe ausführen. Dies liegt daran, dass bei einer statischen Port-Zuordnung nur ein einziger Container Port 80 zugeordnet werden kann.

Um dieses Problem zu lösen, sollten Sie erwägen, den bridge-Netzwerkmodus mit einer dynamischen Portzuweisung zu verwenden, wie in der folgenden Abbildung dargestellt.

Diagramm, das die Architektur eines Netzwerks im Bridge-Netzwerkmodus mit dynamischer Portzuweisung zeigt.

Wenn Sie in der Port-Zuordnung keinen Host-Port angeben, können Sie Docker veranlassen, einen zufälligen, ungenutzten Port aus dem flüchtigen Portbereich auszuwählen und ihn als öffentlichen Host-Port für den Container zuzuweisen. Beispielsweise könnte der Anwendung Node.js, die den Port 3000 auf dem Container überwacht, ein zufälliger Port mit hoher Nummer zugewiesen werden, z. B. 47760 auf dem Amazon-EC2-Host. Dies bedeutet, dass Sie mehrere Kopien dieses Containers auf dem Host ausführen können. Darüber hinaus kann jedem Container ein eigener Port auf dem Host zugewiesen werden. Jede Kopie des Containers empfängt Datenverkehr über Port 3000. Clients, die Datenverkehr an diese Container senden, verwenden jedoch die nach dem Zufallsprinzip zugewiesenen Host-Ports.

Amazon ECS hilft Ihnen dabei, den Überblick über die zufällig zugewiesenen Ports für jede Aufgabe zu behalten. Zu diesem Zweck werden die Zielgruppen des Load Balancers und die AWS Cloud Map Diensterkennung automatisch aktualisiert, sodass die Liste der IP-Adressen und Ports für Aufgaben angezeigt wird. Dies erleichtert die Nutzung von Services, die im bridge-Modus mit dynamischen Ports betrieben werden.

Ein Nachteil der Verwendung des bridge-Netzwerkmodus besteht jedoch darin, dass es schwierig ist, die Kommunikation zwischen Services zu sperren. Da Services jedem beliebigen, ungenutzten Port zugewiesen werden können, ist es notwendig, breite Portbereiche zwischen Hosts zu öffnen. Es ist jedoch nicht einfach, spezifische Regeln zu erstellen, sodass ein bestimmter Service nur mit einem bestimmten anderen Service kommunizieren kann. Die Services haben keine spezifischen Ports, die für Netzwerkregeln für Sicherheitsgruppen verwendet werden können.