Прежде всего, у меня нет большого опыта работы в сети или знаний, особенно в отношении docker контейнеров, поэтому, пожалуйста, будьте осторожны. Я использую хост-машину с docker для windows и мне нужно запустить linux контейнеров. Эти linux контейнеры передаются переменной окружения с IP-адресом сервера, к которому должна подключиться служба в контейнере. Я подозреваю, что эта часть работает, так как сервер регистрирует, что клиент подключился с IP 172.17.0.2, и поиск ifconfig внутри контейнера подтверждает это, поскольку он также показывает IP 172.17.0.2. Я подозреваю, что этот IP был сгенерирован некоторыми docker сетевыми средствами изоляции, так как это не может быть достигнуто извне.
Теперь к проблеме. Служба, работающая в контейнере linux, вероятно, отправляет на сервер уведомление о своем существовании и вместе с ним локальный ip контейнера. Когда сервер пытается отправить команду зарегистрированному клиенту, он отвечает командой find
Не удалось найти хост 172.17.0.2
Итак, мне нужен контейнер docker использовать реальный IP хоста windows. Инстинктивно я обратился к передаче --network host
в качестве параметра для docker выполнения, но, похоже, не поддерживается docker для windows. Передача IP-адреса хоста через --ip
также не работала, поскольку IP-адрес внутреннего контейнера остался на 172.17.0.2.
Эти сообщения, похоже, очень связаны Как подключиться к docker хосту из контейнера Windows 10 (Docker для Windows)
Контейнер не может разрешить docker .for.win.localhost , но --dns host.docker.internal or docker.for.win.localhost
привело к
недопустимый аргумент "host. docker .internal" для флага "--dns": host. docker .internal не является IP-адресом
am I может быть недоразумение как их использовать? Другие идеи по решению проблемы?