Postgresql 如何从主机连接到Docker Postgres容器
我按照 它可以工作,但我无法从主机连接到Postgres服务器。我在管理macOS High Sierra。当我运行Postgresql 如何从主机连接到Docker Postgres容器,postgresql,docker,rails-postgresql,remote-connection,Postgresql,Docker,Rails Postgresql,Remote Connection,我按照 它可以工作,但我无法从主机连接到Postgres服务器。我在管理macOS High Sierra。当我运行docker container ls时,我看到5432/tcp作为Postgres容器的端口。请注意,5432前面没有列出IP。当我运行docker network inspect时,我得到了172.18.0.2作为IP 但是当我运行psql-h172.18.0.2-p5432-uppostgres时 xpsql: could not connect to server: Op
docker container ls
时,我看到5432/tcp
作为Postgres容器的端口。请注意,5432前面没有列出IP。当我运行docker network inspect
时,我得到了172.18.0.2作为IP
但是当我运行psql-h172.18.0.2-p5432-uppostgres时
xpsql: could not connect to server: Operation timed out
Is the server running on host "172.18.0.2" and accepting
TCP/IP connections on port 5432?
我做错了什么?使用Docker实际运行的虚拟机的IP。您可以通过运行以下命令找到此IP:
docker-machine ip default
通过查看您的详细信息5432/tcp,我觉得您似乎没有导出端口号5432 如果您已经导出了端口,那么它应该如下所示
0.0.0.0:5432->5432/tcp
然后通过使用主机IP地址(您的本地mac机器IP),您应该能够连接,如果仍然无法工作,请共享您的docker命令-您如何运行容器
Docker编写文件
version: '3'
services:
db:
image: postgres
ports:
- "5432:5432"
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/airbnb
ports:
- "3000:3000"
depends_on:
- db
在docker compose文件中,您没有公开端口号5432,因此无法从外部连接Postgres DB
尝试在docker compose文件中添加端口:-“5432:5432”。
然后通过使用您的计算机IP地址,您应该能够连接数据库。默认情况下。这只会将端口暴露给同一Docker网络中的其他容器,即compose文件中的所有其他容器。这是因为默认情况下,对于compose文件中的所有容器
有几个选项可用于从主机连接到容器:
HOST:CONTAINER
格式,使容器的端口在HOST
IP上可用。例如,使用127.0.0.1:5432
,以便可以访问主机上该地址的端口172.18.0.2
,那么网关很可能是172.18.0.1
。对于postgres和socket库,通常有一种方法可以做到这一点,但不幸的是,我没有看到使用psql
实现这一点的方法另一个选项是从Docker网络中的容器访问它。您可以执行
docker compose run--rm db psql-h db-U postgres
,它将运行一个一次性容器,该容器与db
容器具有相同的docker映像,并且位于同一网络中。我认为它不会在docker机器上运行。运行docker machine ls返回一个空结果您能详细说明主机IP是什么意思吗?我尝试了本地IP地址(在本地wifi网络上识别笔记本电脑的IP)和公共IP。他们都告诉我psql:无法连接到服务器:连接被拒绝服务器是否在主机“”上运行并在端口5432上接受TCP/IP连接?您知道GUI Postgres客户端将使用TCP/IP over SSH进行连接吗?然后我可以通过Rails容器连接。你能分享docker运行命令吗,你是如何运行Postgres容器的?我按照到的说明操作。因此,我通过运行docker compose up
来启动容器。这回答了你的问题吗?好的,那么你能分享你的docker compose文件吗。我想看看您是否正在公开端口号5432?如果您使用5433:5432,它将不会公开5433端口,并且您将获得拒绝连接。一旦您将其更改为“5433:5432”,它就会工作。与官方博士后测试:13.2图像(以及13)。