使用Docker SDK绑定Postgres非默认端口8133失败求助
问题原因与解决方案
你的核心问题是Docker端口映射的方向搞反了。
错误原因
Docker Python SDK中ports参数的格式是{容器内端口: 主机端口},你写的{'8133/tcp': 5432}表示:
- 将容器的8133端口映射到主机的5432端口
但Postgres镜像默认在容器内监听的是5432端口,容器里根本没有开启8133端口,所以主机的8133端口没有对应的容器端口转发,自然会出现连接拒绝错误。
正确写法
要让主机的8133端口指向容器内的Postgres 5432端口,应该把ports参数改成:
ports={'5432/tcp': 8133}
这样配置后,主机的8133端口会转发到容器内的Postgres服务端口,此时连接localhost:8133就能正常访问了。
补充验证
启动容器后,可以通过docker ps命令查看端口映射状态,确认显示的是0.0.0.0:8133->5432/tcp,这就说明映射配置正确。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

