Как подключиться к хосту docker из контейнера в Windows 10 (Docker для Windows)

На каком IP-адресе контейнер-докер может подключиться к своему хосту на Docker для Windows (в Windows 10)? Как вы находите этот IP-адрес?

Пример: у вас есть служба, работающая на порту 1234 на вашем компьютере с Windows 10. Программа внутри вашего контейнера должна получить доступ к этой службе. Какой IP-адрес должен использовать программа для подключения к хосту?

Ответ 1

Короткий ответ: в большинстве случаев вам понадобится 10.0.75.1.

В Docker для Windows контейнер взаимодействует через адаптер vEthernet, называемый DockerNAT. Чтобы найти его сведения, откройте "Командная строка" и введите

ipconfig

Найдите запись, которая выглядит как

Ethernet adapter vEthernet (DockerNAT):

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::fd29:297:4583:3ad4%4
   IPv4 Address. . . . . . . . . . . : 10.0.75.1
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

IP-адрес справа от IPv4 Address - тот, который вам нужен.

Примечание. Убедитесь, что служба разрешает подключения извне вашего хоста. Что касается этой услуги, ваш контейнер для докеров - это другая машина. Также убедитесь, что брандмауэр Windows позволяет осуществлять связь с службой и из нее.

Ответ 2

Один из параметров, который позволяет вам подключаться из контейнера в хост, - это запустить ваш контейнер с параметром

--net="host"

Пример:

docker run -it --net="host" container_name

Затем из контейнера вы можете подключиться к сервису на хосте, используя:

localhost:port

Но в этом случае вы не сможете связать больше контейнеров с помощью параметра --link.

Подробнее об этой теме: http://phillbarber.blogspot.sk/2015/02/connect-docker-to-service-on-parent-host.html