Предыстория ниже, но вот вопрос: я обнаружил, что если у меня есть postgresql, работающий на моем хосте докера, я могу подключиться к нему в контейнере через сокет домена, смонтированный как файл:
docker run -v /var/run/postgresql/:/var/run/postgresql
Это похоже на серьезный взлом, поэтому мне любопытно, действительно ли это ужасно в производственной среде. Мысли?
Предыстория
Предыстория заключается в том, что у меня есть postgresql, работающий на хосте докера, потому что я не доверяю докеру напрямую запускать postgresql.
Поэтому мне нужно подключиться к этому экземпляру postgresql из док-контейнера, работающего на том же сервере. Я попытался:
Использование
--add-host
Но это также был взлом, потому что требовалось, чтобы docker run был помещен в скрипт, чтобы определить правильный IP-адрес хост-компьютера. Что-то вроде:
docker run --add-host=postgres-host:$(ip route show | awk {print $2})
Мне не нравилось это делать.
Я пытался использовать
--net=host
, но... это не то, что нам нужно. Нам нужна оверлейная сеть.Я попытался установить это внутри контейнера, посмотрев там IP-адрес хоста, но мне не очень понравилось запускать скрипт только для этой цели.
Итак... я подумал: а как насчет использования сокета домена?