Подключение PostgreSQL, установленное в docker внутри Hyper-V Ubuntu от Windows 10 PgAdmin - PullRequest
4 голосов
/ 28 января 2020

Мне нужна помощь в подключении PostgreSQL, который установлен в Docker внутри HyperV Ubuntu 18.4 с Windows 10 PgAdmin. До сих пор я попробовал следующее

Шаг 1: Установите Postgres в Docker (Ubuntu работает на Hyper-V)

sudo docker run -p 5432:5432 --name pg_test -e POSTGRES_PASSWORD=admin -d postgres

Шаг 2: Создайте базу данных

docker exec -it pg_test bash
psql -U postgres
create database mytestdb

Шаг 3: Получить IP-адрес

sudo docker inspect pg_test | grep IPAddress
//returned with 172.17.0.2

Шаг 4: pg_hba.conf

host    all             all             0.0.0.0/0               md5

Шаг 5: Когда я пытаюсь подключиться с Windows PgAdmin 4 , Я получаю эту ошибку ниже - Примечание : Я также пытался использовать IP-адрес виртуальной машины UBUNTU, но не повезло enter image description here

Ответы [ 3 ]

5 голосов
/ 17 февраля 2020

Это тот случай, когда вы пытаетесь подключиться к postgres из другого su bnet, то есть windows su bnet к гипервизору su bnet, если вы не используете мостовой протокол.

Так, вариант 1:

  1. Если это на NAT \ HOST, а не на мосту, то вам нужно убедиться, что вы можете пропинговать сервер Ubuntu с сервера windows.
  2. Далее убедитесь, что порт открыт со стороны Ubuntu. Как это проверить, введите te lnet на номер порта из windows cmd.

    te lnet 192.168.0.10 5432

, если вы подключены к сети и можете также пропинговать сервер, проверить, открыт ли порт, т. Е. lnet работает. Вы должны убедиться, что в файле postgres .conf "адрес прослушивания" равен "*". и все.

Снова на уровне ОС в Ubuntu запустите команду systemctl stop firewalld, чтобы остановить брандмауэр, а затем попытайтесь подключиться. Если это работает, то вам нужно открыть порт в брандмауэре с помощью этой команды:

firewall-cmd --permanent --add-port 5432/tcp

Я вижу от вас docker изображение, что 5432 уже открыт. Это больше карт портов и огненного мира.

2 голосов
/ 14 февраля 2020

Вам не нужен контейнер IP. Поскольку вы сопоставили порт контейнера с хост-машиной (Ubuntu), любому постороннему просто необходим IP-адрес машины с Ubuntu, а в самой Ubuntu вы можете использовать localhost.

2 голосов
/ 14 февраля 2020

Возможно, вы захотите проверить, что pg_hba.conf не ограничено местным. Это не должно иметь место для docker изображения, но вы никогда не знаете.

См .: https://www.postgresql.org/docs/9.1/auth-pg-hba-conf.html

Также существует опечатка: POSTGRES_PASSWOR=admin is отсутствует D, должно быть POSTGRES_PASSWORD=admin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...