Docker teilen das Netzwerk mit Windows- und Linux-Containern

Aug 17 2020

Ich möchte ein Windows- und ein Linux-Container innerhalb desselben Netzwerks verbinden.

Zuerst erstelle ich ein Netzwerk (Docker für Windows ist auf "Windows-Container" eingestellt):

docker network create --driver nat mynet

Das Netzwerk wird erstellt und docker network lslistet das neue Netzwerk auf.

docker-compose.yml der Windows und des Linux-Dienstes enthalten:

version: "3"
services:
  ...
    networks:
      mynet: {}
networks:
  mynet:
    external: true

Wenn docker-compose upder Windows-Container einwandfrei startet, wird nach "Wechseln zu Linux-Containern" und dem Versuch, den Linux-Container zu starten, der folgende Fehler angezeigt:

FEHLER: Netzwerk-Mynet als extern deklariert, aber nicht gefunden. Bitte erstellen Sie das Netzwerk manuell mit docker network create mynetund versuchen Sie es erneut.

Listet docker network lsdas Netzwerk auch nicht mehr auf.

Was wäre der richtige Weg, um ein Netzwerk zwischen Windows und Linux zu teilen?

Antworten

1 CharlesDesbiens Aug 17 2020 at 08:18

Wenn Sie die Option "Zu Linux-Containern wechseln" aktivieren, wechselt Ihr Docker die Kontexte zwischen einer Linux-VM, auf der Docker ausgeführt wird, und einem Windows-Betriebssystem.

Wenn Sie dies tun, wechseln Sie effektiv zu einem anderen Satz von Docker-Ressourcen, die sich nicht kennen. Sie befinden sich auf separaten Betriebssystemen. Leider können Sie mit compose nicht das tun, was Sie versuchen, da compose immer auf einem einzelnen Daemon ausgeführt wird und ein einzelner Daemon auf einem einzelnen Betriebssystem ausgeführt wird. Sie können jedoch eine eigene Linux-VM einrichten, Docker darauf installieren und einen 2-Knoten-Schwarm erstellen, der aus Ihrem Windows-Computer und Ihrer Linux-VM besteht. Auf diese Weise können Sie Ihre Linux-Container auf einem und Ihre Windows-Container auf dem anderen ausführen und sie über ein Netzwerk verbinden.