Windows本地如何从Docker网络外连接容器化PostgreSQL数据库
问题解答
方案1:直接使用容器内网IP
你通过docker inspect命令获取到的172.0.0.2就是tma_pg_db_container容器的内部IP地址,直接填入<IP_ADDRESS>位置即可正常连接容器内的数据库,完整命令示例:
psql postgresql://postgres:<PASSWORD>@172.0.0.2:5432/tma_pg_db
注意:
- 如果你要连接的是新建的名为
pg_container的容器,需要将docker inspect命令中的容器名替换为pg_container后重新查询IP,避免拿到错误的旧容器IP- Docker容器的内网IP在容器重启后会自动变更,如果需要长期固定访问地址,推荐使用方案2。
方案2:修改端口映射避免端口冲突
你当前本地已经有原生PostgreSQL占用了localhost的5432端口,因此原有-p 5432:5432的端口映射实际会触发端口占用报错无法生效,你可以调整启动命令映射到宿主机的其他未被占用的端口,例如5433:
docker run -d -p 5433:5432 --rm --name pg_container -v C:\pgdata:/var/lib/postgresql/data --env-file ./database.env postgres:latest
调整后你就可以通过localhost+新端口的方式访问容器内的数据库,无需记忆容器内网IP,连接命令如下:
psql postgresql://postgres:<PASSWORD>@localhost:5433/tma_pg_db
内容的提问来源于stack exchange,提问作者Amin Ba
相关产品推荐
相关产品推荐

