2015-10-22 3 views
2

У меня есть контейнер докеров, который должен запускать службу (HTTP). Этот контейнер должен иметь возможность подключаться к PostgresSQL, работающему на главной машине (так что он не является частью контейнера). Контейнер использует сетевые настройки хоста:Разрешение контейнера Docker на доступ к Postgres, запущенному на localhost

docker run -e "DBHOST=localhost:5432" -e "DB=somedb" -e "AUTH=user:pw" -i -t --net="host" myservice 

Я использую MacOSX, так Docker работает на VirtualBox VM. Наверное, мне нужно переадресовать порт, чтобы выполнить эту работу. Я попытался настроить это:

VBoxManage controlvm "default" natpf1 "rule1,tcp,,5432,,5432"; 

Но это не работает. Если я запустил службу, все, что я получаю, - это сообщение об отказе подключения, и служба не может подключиться к Postgres.

Postgres работает на порту 5432, на главной машине. «По умолчанию» - это имя виртуальной машины, созданной установщиком Docker.

Что я делаю неправильно? Пожалуйста помоги!

+0

Почему бы не запустить базу данных postgres в контейнере? Для этого есть много готовых изображений. – dnephin

ответ

1

У меня был успех с использованием флага --add-host, который добавляет запись в/etc/hosts в вашем контейнере. Boot2docker и docker-machine назначают IP-адрес, который вы можете использовать для попадания вашего локального хоста из контейнера, поэтому просто хотите добавить запись, которая указывает на это.

С boot2docker, где хост по умолчанию И.П. является 192.168.59.3, вы можете просто сделать docker run --add-host=my_localhost:192.168.59.3 ...

С Докер-машиной, я думаю, что вам нужно для поиска отображенный IP вашего локального хоста в в VirtualBox, а затем вы можете сделайте то же самое: docker run --add-host=my_localhost:[localhost_mapped_ip_from_docker] ...

Попробуйте установить это, а затем попытаться подключиться к экземпляру Postgres через my_localhost. Убедитесь, что вы правильно установили доступ и разрешили входящие IP-разрешения в Postgres, как если бы он не прослушивал ip-адрес контейнера или 0.0.0.0, он не будет работать ни на что.

+0

Привет, Эли, можете ли вы подробно рассказать о том, как правильно установить доступ и принять входящие разрешения ip в Postgres? – n370

Смежные вопросы