docker share network z kontenerami Windows i Linux
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
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ć.