我用nginx,php和postgres创建了一个ubuntu图像。
我想将当前图片中的postgres数据库与本地计算机上的pgadmin
连接起来。
我尝试使用docker inspector尝试使用image ip与我的本地pgadmin建立连接但没有太大成功。我还尝试在本地配置一些端口以使连接正常工作。
答案 0 :(得分:59)
这是一个有效的问题,我不知道为什么人们会觉得这些问题似乎无法回答这个问题"
所以,这就是我如何做你想做的事情:
从Docker Hub中拉出postgres图像
docker pull postgres:latest
使用以下命令运行容器
docker run -p 5432:5432 postgres
使用docker的inspect命令查找IP
使用该IP,PORT,用户名和密码连接PGADMIN
你也可以像下面这样做一个简单的telnet来确认你是否可以访问docker postgres容器:
telnet IP_ADDRESS 5432
答案 1 :(得分:37)
我在windows 10运行docker for windows 1.12.6(9655)上取得的成功,步骤如下:
拉最新的postgres
docker pull postgres:latest
运行postgres containsner:
docker run -d -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password123 --name db-my -p 5432:5432 --restart=always postgres
然后安装了最新版本的pgAdmin4 pgadmin website
运行pgAdmin 4创建新服务器,并输入如下 主持人:127.0.0.1 港口:5432 用户名:user 密码:password123
答案 2 :(得分:15)
或者,您可以将Postgres和Pgadmin合并到一个docker-compose
文件中,然后以用户pgadmin4@pgadmin.org
的身份登录,密码为admin
。要添加Posgres服务器,请使用主机名postgres
,端口5432
。
version: '3'
services:
postgres:
image: postgres
hostname: postgres
ports:
- "6543:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: TEST_SM
volumes:
- postgres-data:/var/lib/postgresql/data
restart: unless-stopped
pgadmin:
image: dpage/pgadmin4
depends_on:
- postgres
ports:
- "5555:80"
environment:
PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
PGADMIN_DEFAULT_PASSWORD: admin
restart: unless-stopped
volumes:
postgres-data:
答案 3 :(得分:9)
如果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 Web应用程序中添加新服务器时,请使用some-postgres
作为服务器名称
在打开pgAdmin时注意--link some-postgres
。此命令使PostgreSQL容器对pgAdmin容器可见。
答案 4 :(得分:7)
这在 Ubuntu 18 上对我有用:
1- 运行 postgres 容器
docker run -d -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password123 --name my-postgres -p 5432:5432 postgres
2- 运行 pgAdmin 容器
docker run --rm -p 5050:5050 thajeztah/pgadmin4
3- 获取您的本地 IP(在 Ubuntu 中通过 ifconfig
命令)
4- 在浏览器中打开 localhost:5050
5- 单击服务器 >> 创建 >> 服务器...
6- 在 General 选项卡中,为其命名,例如:docker。在连接选项卡中,输入以下字段:
<块引用>主机名:来自 3 的 IP
用户名:用户
密码:password123
7- 点击保存,现在一切正常。
注意:如果这不起作用,请尝试使用“localhost”作为主机名。
答案 5 :(得分:5)
如果您确认PostgreSQL正在运行,则可以在那里与PgAdmin的本地副本连接...
答案很简单:对于运行在Docker中的PgAdmin,使用host.docker.internal
而不是localhost
答案 6 :(得分:4)
您必须将容器中的postgres端口暴露给本地系统。你可以通过像这样运行容器来实现这个目的:
docker run -p 5432:5432 <name/id of container>
连接GUI客户端或CLI时,请确保使用ip-address而不是localhost,即使您的ip-address是localhost ip-address。
docker ps
将为您提供postgres容器所在的IP地址。
答案 7 :(得分:3)
这就是我所做的
docker run -p 5432:5432 --name container-postgresdb -e POSTGRES_PASSWORD=admin -d postgres
docker run -p 5050:80 -e "PGADMIN_DEFAULT_EMAIL=name@example.com" -e "PGADMIN_DEFAULT_PASSWORD=admin" -d dpage/pgadmin4
host: host.docker.internal
database: postgres
user: postgres
password: admin
工作正常!!!!
答案 8 :(得分:3)
我将其包含在docker yaml文件中以获取数据库和pgAdmin:
database:
image: postgres:10.4-alpine
container_name: kafka-nodejs-example-database
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
expose:
- "5432"
ports:
- 8000:5432
volumes:
- ./services/database/schema.sql:/docker-entrypoint-initdb.d/1-schema.sql
- ./services/database/seed.sql:/docker-entrypoint-initdb.d/2-seed.sql
pgadmin:
image: dpage/pgadmin4
ports:
- 5454:5454/tcp
environment:
- PGADMIN_DEFAULT_EMAIL=admin@mydomain.com
- PGADMIN_DEFAULT_PASSWORD=postgres
- PGADMIN_LISTEN_PORT=5454
postgres用户名是alphaone,密码是xxxxxxxxxxx。
执行docker ps
获取容器ID,然后docker inspect <dockerContainerId> | grep IPAddress
例如:docker inspect 2f50fabe8a87 | grep IPAddress
将Ip地址插入pgAdmin中,并在docker中使用数据库凭据:
答案 9 :(得分:3)
面对此问题两天后,我得以解决该问题。
这个问题的解决方案已经像“检查”这样的人们回答了
docker inspect CONTAINER_ID
但是在运行此命令时,我收到了很多日志,例如主机配置 配置 网络设置等,所以我很困惑哪个IP地址添加 pgAdmin 连接,因为我尝试了 0.0.0.0 并在日志中配置,主机,networkSettings不同的-2 IPAddress,但最终在尝试了很多之后才可以使用。 / p>
它与哪个IP一起工作,我们必须添加该网络ip地址(我们创建该IP地址是为了连接 postgres 和 pgAdmin 。)
就像我跑步时的情况:-
泊坞窗检查postgres_container
"NetworkSettings": {
"Bridge": "",
"SandboxID": "sdffsffsfsfsfsf123232e2r3pru3ouoyoyuosyvo8769696796",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"5432/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "5432"
}
]
},
"SandboxKey": "/var/run/docker/231231Ad132",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"postgres": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"postgres",
"0e2j3bn2m42"
],
"NetworkID": "35rhlhl3l53l5hlh3523233k3k4k22l3hk2k4",
"EndpointID":"b3424n43k52o2i4n235k1k4l2l4hj234f14n2",
"Gateway": "192.168.16.1",
"IPAddress": "192.168.16.2",
"IPPrefixLen": 20,
"IPv6Gateway": "",
所以我们必须添加NetworkSettings-> Network-> Postgres(由我创建的网络)-> IPAddress,即“ IPAddress”:“ 192.168.16.2”。
添加此IP后,它将起作用。
我希望这会有所帮助。
答案 10 :(得分:2)
对于我来说,我可以通过命令
解决检查我的postgre图像的问题docker inspect CONTAINER_ID | grep IPAddress.
因此,我使用了docker ip地址来配置我的pgadmin 4连接,一切都很好。感谢@Afshin Ghazi
答案 11 :(得分:2)
您也可以创建一个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
上面使用的主机名/地址是--name pg
答案 12 :(得分:2)
就我而言,我有一个PostgreSQL容器,因此我没有更改容器或创建docker-compose方法,几个月后我需要pgadming安装PostgreSQL,所以这是我的方法:
docker inspect my_container_id_postgreSQL
分配给PostgreSQL的网络是:
“网络”:{ “ docker_default”:{ “ IPAddress”:“ 172.18.0.2”, ... } }
使用--network
命令运行我的PGADMIN。
docker run -p 85:80 -network docker_default -e'PGADMIN_DEFAULT_EMAIL=user@domain.com'-e'PGADMIN_DEFAULT_PASSWORD = SuperSecret'-d dpage / pgadmin4
将IP地址和docker中使用的数据库凭据插入pgAdmin。
我希望这对某人有用。 问候。
答案 13 :(得分:1)
要为您的容器找到正确的IP,请执行以下命令:
检查容器ID:
docker ps
要检查容器的正确IP:
docker inspect <ID_CONTAINER> | grep "IPAddress"
使用Docker进行PostgreSQL和PgAdmin的配置都很简单,如果不正确,如果您的问题更深,我建议从头开始重做配置。
这是我为解决此问题而开发的脚本。 script-sh/install-docker-postgres-and-pgadmin
答案 14 :(得分:1)
对于macOS IP postgres
和pgadmin4
与docker inspect
提供的IP地址不同。
输入
docker-machine ls
看看左侧的服务器名称。默认为default
。
docker-machine ip default
将需要IP用于浏览器中的{strong>两者,pgadmin4
和postgres
设置中的pgadmin4
。
答案 15 :(得分:0)
要订购或找到容器的IP,请用户按照以下命令
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
引荐来源:How to get a Docker container's IP address from the host?
答案 16 :(得分:0)
我尝试并为我工作的解决方案是创建一个docker compose文件,其中将postgress和pgadmin作为服务包含在内。有关更多详细信息:Connecting pgadmin to postgres in docker
答案 17 :(得分:0)
您是否使用 Window Subsystem LinuxWSL2
来运行 Docker 和 PgAdmin?
我建议的步骤类似于人们建议的步骤。就我而言,我使用的是窗口环境
第 1 步: 打开 CMD 并输入 ipconfig
并按 Enter。
第 2 步:检查 WSL IPv4 Adress
Ethernet adapter vEthernet (WSL):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : 3bd9::997b:b52a::fe80::65b3%63
IPv4 Address. . . . . . . . . . . : 172.172.172.1 // use the IP as host/address
Subnet Mask . . . . . . . . . . . : 255.255.255.255
第 3 步: 从浏览器中打开 PgAdmin 并创建服务器
第 4 步:
// Here it depends on your desired config mine is the following
Server: postgres
host address: IPv4 Address(step 2)
username: postgress(username for postgress)
password: password(password for postgress)
我花了两天时间弄清楚出了什么问题,希望有人会觉得有帮助
答案 18 :(得分:0)