Для того, чтобы из docker контейнера, использующего сетевой интерфейc типа bridge получить доступ к локальной сети используется параметр --add-host. Для него требуется docker версии 20 и выше. Пример использования:
Использование опции --net=host
зачастую не возможно, поскольку контейнер запускается в контексте определенной сети.
Если вы используете ssh туннель для локальной работы с базой, то для соединения вам нужно пробросить этот туннель в docker0 bridge
. Подробнее смотрите здесь.
В моем случае, сначала смотрим ip адрес docker0
, затем пробрасываем туда ssh тунель:
ifconfig | grep docker -A 2
# docker0 Link encap:Ethernet HWaddr 03:41:4a:26:b7:31
# inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
ssh -fN -i ~/.ssh/id_rsa -L 172.17.0.1:3051:172.31.10.150:3051 dev
Для доступа к сети хоста из контейнера используем специальное DNS имя host.docker.internal
.