Docker Compose mit einer l2bridge-Compose-Datei

542
Brian Deragon

Ich habe eine Docker-Datei, die wie folgt aussieht:

version: '3.2' services: service-one: build: service-one container_name: service-one networks: - my-custom-network restart: unless-stopped service-two: depends_on: - service-one build: service-two container_name: service-two networks: - my-custom-network restart: unless-stopped networks: my-custom-network: driver: l2bridge 

Dies scheint auf meinem Rechner beim Laufen gut zu funktionieren docker-compose-up, alle Container starten und sind miteinander vernetzt und können den Host über 0.0.0.0 erreichen, falls dies erforderlich ist (es gab einige Dienste, die wir noch nicht containerisieren konnten, nämlich die Host ist zum Ausführen erforderlich).

Auf einem anderen Entwickler-Computer lädt er jedoch alles herunter und läuft docker-compose up; Es schafft das Netzwerk, die Maschinen starten, aber er kann sie nicht erreichen. Wenn er dies tut docker network inspect my-custom-network, wird angezeigt, dass das Netzwerk erstellt wurde und die IP-Adressen zugewiesen wurden. Die Eingabe dieser IP-Adressen in einen Browser führt jedoch zu nichts.

Wir haben versucht, sie manuell auf einer Maschine zu erstellen und sie in das Standardnetzwerk "nat" zu stellen. Die Maschinen sind verfügbar, wenn sie dort platziert werden.

Ich denke, meine Frage ist zweiteilig:

  1. Kann ich meine compose-Datei erneut schreiben, um das standardmäßige nat-Netzwerk zu verwenden, und gleichzeitig den Dienstnamen als Hostnamen nutzen? (Service-Two erwartet, auf http: // Service-One / verweisen zu können ); In Creators Update (nicht verfügbar, wir stehen hinter einem Unternehmensaktualisierungssystem) kann ich mehrere nat-Netzwerke erstellen, aber da wir uns in der Anniversary Edition befinden, können wir dies nicht.

Oder...

  1. Warum funktioniert seine Brücke nicht? Meine funktioniert gut, ich weiß, es steht in der offiziellen Dokumentation für die l2bridge, dass Sie das Creators Update benötigen, aber derzeit wird es von keinem von uns ausgeführt, und es funktioniert immer noch auf meinem Computer und nicht auf seinem. Wir verwenden dasselbe Netzwerk mit denselben Zugriffsrechten, dieselben Proxies, dasselbe Subnetz, dieselben DHCP-Server, dieselbe Firewall-Konfiguration des Unternehmens, dieselbe Gruppenrichtlinie und denselben Satz von Windows-Updates. Warum sollte meine arbeiten und nicht seine?
1
l2bridge erfordert ein Windows Server 2016- oder Windows 10 Creators-Update. harrymc vor 6 Jahren 0
Ich verstehe, dass die Docker-Dokumentation dies sagt, aber laut Winver laufen sowohl er als auch ich mit der gleichen Version von Windows, dem Jubiläums-Update 1607, derselben Build-Nummer. Aber es funktioniert bei mir und nicht bei ihm. Brian Deragon vor 6 Jahren 0
Da Sie sich in einer Situation befinden, die von der Dokumentation nicht garantiert wird, besteht der Unterschied möglicherweise darin, dass Sie über einen besseren Netzwerktreiber verfügen oder dass auf dem anderen Computer einige Windows-Updates fehlen. Möglicherweise sollten Sie beide auf Windows 10 Creators Update (Version 1703) aktualisieren. harrymc vor 6 Jahren 0

1 Antwort auf die Frage

1
harrymc

Laut Microsofts Artikel Windows Container Networking :

l2bridge - Container, die an ein Netzwerk angeschlossen sind, das mit dem Treiber 'l2bridge' erstellt wurde, befinden sich in demselben IP-Subnetz wie der Container-Host. Die IP-Adressen müssen statisch aus demselben Präfix wie der Container-Host zugewiesen werden. Alle Containerendpunkte auf dem Host verfügen aufgrund der Layer-2-Adressumsetzung (MAC-Umschreiboperation) beim Ein- und Ausstieg über dieselbe MAC-Adresse.

Erfordert ein Windows Server 2016- oder Windows 10 Creators-Update

Da Sie und Ihr Kollege die Windows 10-Version 1607 (Anniversary-Update) verwenden, befinden Sie sich beide in einer Situation, die in der Dokumentation nicht garantiert wird. Der Unterschied, warum dies für Sie und nicht für ihn funktioniert, können einige Software- oder Windows-Updates sein, die auf Ihrem Computer installiert sind, jedoch nicht auf seinem, z. B. einem anderen Netzwerktreiber.

Ich denke, Sie sollten sowohl das Windows 10 Creators Update (Version 1703) aktualisieren als auch überprüfen, ob Ihre Docker-Versionen identisch sind.

Leider befinden wir uns auf Unternehmens-Laptops, die von einem Corporate-Release-Zyklus verwaltet werden. Es gibt keine Möglichkeit für ein Update, wir sind bis Anfang nächsten Jahres auf die Anniversary-Edition beschränkt. Wir haben auch garantiert die gleichen Updates, und ich und er betreiben genau den gleichen Laptop. Brian Deragon vor 6 Jahren 0
Ich habe viele Anpassungen an meiner Firewall vorgenommen, aber das habe ich bereits überprüft, er hatte ziemlich viel eine Standard-Firewall. Ich glaube, es ist ein weiteres Problem von einer Konfigurationsseite, und ich habe nur nach weiteren Ideen gesucht, wie zum Beispiel den Firewall-Einstellungen oder den Docker-Einstellungen (ich hatte experimentelle Funktionen überprüft, er hat es nicht getan, aber wir haben das auch und es immer noch behoben hat nicht funktioniert) Brian Deragon vor 6 Jahren 0
Sind Ihre Laptops völlig identisch - dieselben Windows-Updates, Treiber und Anwendungen? harrymc vor 6 Jahren 0