Существует несколько давних дискуссий о том, как сделать это последовательным, понятным и переносимым способом. Нет полного решения, но я свяжу вас с обсуждениями ниже.
В любом случае вы многие захотите попробовать использовать параметр --add-host для docker run, чтобы добавить IP-адрес хоста в файл / etc / host контейнера. Отсюда легко подключиться к хосту через любой требуемый порт:
Добавление записей в файл хостов контейнера
Вы можете добавить другие хосты в файл контейнера / etc / hosts, используя один или несколько флагов --add-host. В этом примере добавляется статический адрес для хоста с именем docker:
$ docker run --add-host=docker:10.180.0.1 --rm -it debian
$$ ping docker
PING docker (10.180.0.1): 48 data bytes
56 bytes from 10.180.0.1: icmp_seq=0 ttl=254 time=7.600 ms
56 bytes from 10.180.0.1: icmp_seq=1 ttl=254 time=30.705 ms
^C--- docker ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 7.600/19.152/30.705/11.553 ms
Примечание. Иногда вам нужно подключиться к хосту Docker, что означает получение IP-адреса хоста. Вы можете использовать следующие команды оболочки, чтобы упростить этот процесс:
$ alias hostip="ip route show 0.0.0.0/0 | grep -Eo 'via \S+' | awk '{ print $2 }'"
$ docker run --add-host=docker:$(hostip) --rm -it debian
Документация:
https://docs.docker.com/engine/reference/commandline/run/
Обсуждения доступа к хосту из контейнера:
https://github.com/docker/docker/issues/1143
https://github.com/docker/docker/issues/10023