docker share network z kontenerami Windows i Linux

Aug 17 2020

Chciałbym połączyć okno i kontener linux w tej samej sieci.

Najpierw tworzę sieć (Docker dla Windows jest ustawiony na „Kontenery Windows”):

docker network create --driver nat mynet

Sieć zostanie utworzona i docker network lswyświetli nową sieć.

docker-compose.yml okien i usługi linux zawiera:

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

Gdy docker-compose upkontener systemu Windows uruchamia się prawidłowo, po „Przełącz na kontenery Linuksa” i próbie uruchomienia kontenera systemu Linux wyświetlany jest następujący błąd:

BŁĄD: Sieć mynet została zadeklarowana jako zewnętrzna, ale nie można jej znaleźć. Utwórz sieć ręcznie za pomocą docker network create myneti spróbuj ponownie.

Również docker network lsnie wymienia już sieci.

Jaki byłby prawidłowy sposób udostępniania sieci między Windows i Linux?

Odpowiedzi

1 CharlesDesbiens Aug 17 2020 at 08:18

Przełączanie opcji „Przełącz na kontenery Linuksa” powoduje, że Docker przełącza konteksty między maszyną wirtualną Linux, na której działa Docker, a systemem operacyjnym Windows.

Gdy to zrobisz, skutecznie przełączasz się na inny zestaw zasobów platformy Docker, które nie są świadome siebie nawzajem. Są na oddzielnych systemach operacyjnych. Niestety, nie możesz zrobić tego, co próbujesz zrobić z Compose, ponieważ Compose zawsze będzie działać na jednym Daemon, a pojedynczy Daemon działa w jednym systemie operacyjnym. Ale możesz skonfigurować własną maszynę wirtualną z systemem Linux, zainstalować na niej dockera i utworzyć rój 2 węzłów składający się z maszyny z systemem Windows i maszyny wirtualnej z systemem Linux. W ten sposób możesz uruchamiać kontenery linuxa na jednym, kontenery Windows na drugim i łączyć je przez sieć.