Я создал образ ubuntu с nginx, php и postgres.
Я хочу подключить базу данных postgres в моем текущем изображении с pgadmin
расположенной на моем локальном компьютере.
Я попытался использовать инспектор докеров, чтобы попытаться использовать ip изображения для подключения к моему локальному pgadmin, но без особого успеха. Я также пробовал настроить некоторые порты на локальном компьютере, чтобы соединение работало.
postgresql
docker
pgadmin
Rigoxls
источник
источник
Ответы:
Это правильный вопрос, не знаю, почему люди считают, что «кажется невозможным ответить на этот вопрос».
Итак, вот как я делаю то, что вы пытаетесь сделать:
Извлечь образ postgres из Docker Hub
docker pull postgres:latest
Запустите контейнер, используя следующую команду
docker run -p 5432:5432 postgres
Используя команду docker inspect, найдите IP-адрес
Используйте этот IP-адрес, ПОРТ, имя пользователя и пароль для подключения к PGADMIN.
Вы также можете выполнить простой telnet, как показано ниже, чтобы подтвердить, можете ли вы получить доступ к контейнеру docker postgres:
telnet IP_ADDRESS 5432
источник
-p 5432:5432
вам не нужно искать IP-адрес контейнера, вы можете использовать свой IP-адрес хоста или127.0.0.1
простоlocalhost
То, что я сделал успешно на Windows 10 с запущенным докером для Windows 1.12.6 (9655), шаг выглядит следующим образом:
Вытащите последнюю версию postgres
docker pull postgres:latest
запустите контейнер postgres:
docker run -d -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password123 --name db-my -p 5432:5432 --restart=always postgres
Затем установил последнюю версию pgAdmin4 с веб-сайта pgadmin
Запустите pgAdmin 4, создайте новый сервер и введите следующий хост: 127.0.0.1 Порт: 5432 Имя пользователя: пароль пользователя: пароль123
источник
Кроме того , вы можете комбинировать Postgres и Pgadmin в одном
docker-compose
файле, а Войти как пользовательpgadmin4@pgadmin.org
, PWD:admin
. Чтобы добавить сервер Posgres, используйте имя хостаpostgres
, порт5432
.источник
docker network ls
, вы увидите мост для сети postgres-to-pgadmin (мой - postgres_postgres). Затем вы можетеdocker network inspect postgres_postgres
увидеть два контейнера, каждый с IP / именем хоста. Возьмите тот из Postgres (мой postgres_db_1), чтобы успешно подключиться из pgAdmin.Это то, что я сделал
для postgres
docker run -p 5432:5432 --name container-postgresdb -e POSTGRES_PASSWORD=admin -d postgres
для pgadmin
Строка подключения для pgadmin
Работает нормально !!!!!
источник
Unable to connect to server: could not translate host name "host.docker.internal" to address: Try again
В моем случае я мог бы решить проблему, проверяя мое изображение postgre с помощью команды
Итак, я использовал IP-адрес докера для настройки подключения к pgadmin 4, и все было в порядке. Спасибо @Afshin Ghazi
источник
Если pgAdmin предназначен для запуска с тем же хостом / гостем Ubuntu, вам необходимо связать контейнер postgres, чтобы его можно было разрешить по имени.
1. Запустите контейнер postgres:
docker run --name some-postgres -e POSTGRES_PASSWORD=postgres -d postgres
2. Запустите контейнер pgAdmin:
docker run -p 80:80 --link some-postgres -e "PGADMIN_DEFAULT_EMAIL=email@domain.com" -e "PGADMIN_DEFAULT_PASSWORD=postgres" -d dpage/pgadmin4
3. Теперь при добавлении нового сервера в веб-приложение phAdmin используйте в
some-postgres
качестве имени сервераОбратите внимание на то, что
--link some-postgres
когда мы поднимали файл pgAdmin. Эта команда делает контейнер postgres видимым для контейнера pgAdmin.источник
Warning: The --link flag is a legacy feature of Docker. It may eventually be removed. Unless you absolutely need to continue using it, we recommend that you use user-defined networks to facilitate communication between two containers instead of using --link.
Мне также не повезло с использованием,--link
чтобы заставить мой контейнер pgadmin общаться с моим контейнером postgres. Однако я могу получить доступ к postgres из локальной установки pgadmin.Я включил это в файл docker yaml, чтобы получить базу данных и pgAdmin:
Имя пользователя postgres - alphaone, пароль - xxxxxxxxxxx.
Сделайте,
docker ps
чтобы получить идентификатор контейнера, а затемdocker inspect <dockerContainerId> | grep IPAddress
например:
docker inspect 2f50fabe8a87 | grep IPAddress
Вставьте IP-адрес в pgAdmin и учетные данные базы данных, используемые в докере:
источник
localhost
не получилось.В моем случае у меня был контейнер PostgreSQL, поэтому я не менял свой контейнер и не создавал подход docker-compose, мне понадобилось pgadming через несколько месяцев, чтобы установить PostgreSQL, так что это мой подход:
docker inspect my_container_id_postgreSQL
Сеть, назначенная PostgreSQL, была:
"Сети": {"docker_default": {"IPAddress": "172.18.0.2", ...}}
Запустил мой PGADMIN с
--network
командой.docker run -p 85:80 --network docker_default -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' -e 'PGADMIN_DEFAULT_PASSWORD = SuperSecret' -d dpage / pgadmin4
Вставьте IP-адрес в pgAdmin и учетные данные базы данных, используемые в докере.
Надеюсь, это может быть кому-то полезно. С уважением.
источник
Чтобы узнать или найти свой IP-адрес контейнера, используйте следующую команду
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
Ссылка: как получить IP-адрес Docker-контейнера от хоста
источник
Вы должны открыть порт postgres в контейнере для вашей локальной системы. Вы делаете это, запустив свой контейнер следующим образом:
docker run -p 5432:5432 <name/id of container>
при подключении к вашему GUI-клиенту или CLI убедитесь, что вы используете IP-адрес, а не localhost, даже если ваш IP-адрес является IP-адресом localhost.
docker ps
предоставит вам IP-адрес, на котором находится ваш контейнер postgres.источник
Если вы убедились, что PostgreSQL запущен, и вы можете подключиться к нему с помощью локальной копии PgAdmin ...
Ответ прост: используйте
host.docker.internal
вместоlocalhost
PgAdmin, работающий внутри Docker.источник
Для этого вы также можете создать сеть моста Docker.
$ docker network create pgnet a0ae44aaf6f806fc37302e4c603b4828c4edb8d487fd9cd90e2fb19ae1d5c65f $ docker run --detach \ --name pg \ --network pgnet \ --publish 5432:5432 \ --restart always \ --env POSTGRES_PASSWORD=pg123 \ --volume ${PWD}/data:/var/lib/postgresql/data \ postgres:12.1 b60611e43727dabe483c1f08fdf74961b886ce05b432a10a0625bd1b6db87899 $ docker run --detach \ --name pgadm \ --network pgnet \ --publish 8000:80 \ --volume ${PWD}/pgadmin:/var/lib/pgadmin \ --env PGADMIN_DEFAULT_EMAIL=user@domain.com \ --env PGADMIN_DEFAULT_PASSWORD=pgadm123 \ dpage/pgadmin4:4.20 27f9ce1c1c4c383ee1507f4e2d88f6ef33d4fcf5b209a8a03b87519f90d56312
Откройте http: // localhost: 8000 /
Имя хоста / адрес, использованные выше, - это имя контейнера Postgres, указанное
--name pg
источник
После того, как я столкнулся с этой проблемой в течение двух дней, я смог решить эту проблему.
на решение этой проблемы уже ответили люди вроде
docker inspect CONTAINER_ID
но во время выполнения этой команды у меня было много журналов, таких как Host Config Config Network Settings и т.д., поэтому я запутался, какой IP-адрес добавить в соединение pgAdmin, потому что я пробовал 0.0.0.0 и config, host, networkSettings разные -2 IPAddress в журналы, но, наконец, он работает после долгих попыток.
он работает с каким IP-адресом, мы должны добавить этот сетевой IP-адрес (который мы создали для подключения postgres и pgAdmin .)
как в моем случае, когда я бегу: -
поэтому мы должны добавить NetworkSettings -> Network -> Postgres (моя созданная сеть) -> IPAddress, т.е. «IPAddress»: «192.168.16.2».
После добавления этого ip он заработает.
Надеюсь, это поможет.
источник
Чтобы найти правильный IP-адрес для вашего контейнера, выполните следующие команды:
Проверить ID контейнера:
Чтобы проверить правильный IP-адрес вашего контейнера:
Конфигурация как PostgreSQL, так и PgAdmin с Docker проста, если не правильно, я рекомендую переделать конфигурацию с нуля, если ваша проблема глубже.
Вот сценарий, который я разработал для решения этой проблемы. скрипт-ш / установка-докер-постгрес-и-pgadmin
источник
Для macOS IP-адреса
postgres
иpgadmin4
отличаются отdocker inspect
предоставленных. ТипВзгляните на имя сервера слева. Это
default
по умолчанию.docker-machine ip default
будет IP вам нужно использовать для обоих ,pgadmin4
в браузере иpostgres
вpgadmin4
настройках.источник
Решение, которое я попробовал и сработало для меня, заключалось в создании файла компоновки докеров, в который я включил postgress и pgadmin в качестве служб. Для получения дополнительной информации: Подключение pgadmin к postgres в докере
источник