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