Интересная особенность, решений которой пока не нашел (и такой вопрос в сети возникал неоднократно,
например). Если машина находится внутри 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.