У меня есть несколько серверов, работающих в контейнерах docker с docker-for-windows. Из-за того, как docker работает в Windows, все они помещаются внутрь Hyper-v vm, а затем контейнеры запускаются там. Поэтому для доступа к серверу, который привязан к localhost, я фактически использую IP-адрес виртуального адаптера Hyper-V.
Таким образом, я могу подключиться к своему серверу, используя 10.0.75.2:3579, когда я нахожусь на машине с Windows. Теперь я хочу, чтобы пользователь zerotier связал все мои контейнеры докеров с виртуальной локальной сетью, чтобы я мог получить доступ к своим контейнерам за пределами моей школьной сети. ZeroTier создает виртуальный адаптер под названием «нулевой виртуальный порт»:
Как это работает сейчас, так это то, что если я запускаю серверы на хост-машине с Windows (голый металл), я могу получить к ним доступ, используя свой нулевой IP-адрес.
10.147.17.221:port. НО это не подключает мои докеры, поскольку они подключены к другому адаптеру, а это означает, что я должен физически находиться на машине, чтобы делать какие-либо вещи, связанные с докерами. Как мне маршрутизировать или соединить адаптер нулевого уровня с адаптером докера Hyper-V, чтобы я мог получить доступ к своим контейнерам докеров извне с помощью IP-адреса нулевого уровня?
я уже пробовал это. Функция объединения окон не работает. Когда я делаю это, и адаптер Hyper-V, и адаптер нулевого уровня выходят из строя, жалуясь на `` кабель отсоединен ''.


У меня нет виртуальной машины Windows, чтобы попробовать это, но я бы использовал для этой цели сеть докеров. Например:
docker network create private
docker run --rm --name web--network private -p host_port_1:container_port_1 -p host_port_2:container_port_2 nginx:latest
docker run --rm --name db--network private -p host_port_3:container_port_1 -p host_port_4:container_port_2 postgres:latest
Дай мне знать, как дела.
сети докеров существуют внутри виртуальной машины и все еще находятся на другом адаптере. Так что это не работает. Я также пробовал типы l2bridge и transparent network, описанные здесь: 4sysops.com/archives/… и здесь: docs.microsoft.com/en-us/virtualization/windowscontainers/…, но они не поддерживаются в режиме контейнера linux. Таким образом, я могу создать только тип сети NAT по умолчанию. Я тоже могу создавать сети "хоста", но они привязаны к сети хоста виртуальной машины, ни одна из них не позволяет мне выйти из виртуальной машины.
Лучшее решение, которое я придумал, - не использовать нулевик. Я переключился на ngrok, который позволяет тривиально перенаправить на локальный ip
[10.0.75.0/24] - [10.147.17.211]Это добавит статический маршрут ко всем узлам ZeroTier в вашей сети, чтобы они знали, что использовать нулевой IP-адрес вашего виртуального хоста в качестве маршрута к локальной сети докеров.
У меня нет окон, чтобы попробовать это сделать. Можете ли вы выбрать адаптер
hyper-vи основной адаптер Wi-Fi и посмотреть, можно ли их соединить мостом?