gscraft
@gscraft
Программист, философ

Как заставить Windows увидеть сеть из WSL2 в режиме host?

Интересная особенность, решений которой пока не нашел (и такой вопрос в сети возникал неоднократно, например). Если машина находится внутри WSL2, скажем, Ubuntu под Windows, и создать контейнер с открытым портом, он доступен из Windows, но если сделать режим хоста, Windows в упор не видит созданную сеть. К примеру, так localhost откроется в Windows:
containers:
  nginx:
    image: nginx:latest
    ports:
       - '80'

А так, нет:
containers:
  nginx:
    image: nginx:latest
    network_mode: host
    expose:
       - '80'

Вроде бы решают установкой Docker внутрь WSL2, но у меня ряд проектов на рабочей машине и не хотелось бы все перестраивать.

PS Можно сделать проброс с помощью SSH, можно настроить сетевой интерфейс Hyper-V / WSL2 в режим моста, можно при каждом запуске выполнять проброс портов (мне не удалось завести, но пишут, что это возможно). Одно не ясно, почему в режиме закрытой сети и открытыми портами из Docker работает, но с открытием сети перестает работать. Docker имеет свои механизмы проброса?

PS Понятно, что шарить сеть необязательно, но в одном из старых проектов, обернутых в Docker, не удалось решить связь между контейнерами, где веб-приложения общаются между собой посредством nginx — постоянные вылеты на SSL, а соответствующий рефакторинг на данном этапе невозможен. И если на рабочей машине с Linux полный порядок, то в Windows приходится работать внутри WSL2.
  • Вопрос задан
  • 321 просмотр
Решения вопроса 1
gscraft
@gscraft Автор вопроса
Программист, философ
Эта задача не имеет адекватного решения. Docker для Windows имеет особую реализацию, собственную сеть, и режим хоста означает, что приложение будет работать не в сети WSL2 / Windows, а в сети самого Docker. Тогда как открытие портов создает туннели для сетей WSL2 и Windows. Единственный способ заставить это работать, это каждый раз при запуске контейнеров вручную делать туннель, что едва ли просто сделать, поскольку, опять-таки, согласно документации "This interface is actually within the virtual machine".
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 мар. 2024, в 21:25
2000 руб./за проект
28 мар. 2024, в 21:17
5000 руб./за проект
28 мар. 2024, в 20:46
150000 руб./за проект