如何从 docker 容器连接到远程主机

Ksh*_*Ngh 6 postgresql docker dockerfile docker-machine

我想实现什么目标?我有一个在 docker 内运行的休息服务,它想要建立到外部 postgres db 主机的连接,比如端口 5432 上的 abc.com。当我运行容器时,它永远不会连接到远程主机,事实上,甚至本地主机也失败了。我错过了一些步骤吗?

Dockerfile

FROM clojure
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN mv "$(lein with-profile prod uberjar | sed -n 's/^Created \(.*standalone\.jar\)/\1/p')" nameless.jar
EXPOSE 8080
CMD ["java", "-jar", "nameless.jar", "server"]
Run Code Online (Sandbox Code Playgroud)

Sla*_*sky 1

可能有不同的原因导致它不起作用。

网络配置错误:docker 容器在隔离的网络环境中运行,它对本地主机上的 postgres 服务器一无所知。如果也无法连接到abc.com,则可能是dns解析有问题,您应该尝试使用主机的ip来排除故障。

Postgres服务器配置错误:查看pg_hba.conf和postgresql.conf,有访问限制的设置。使用命令 pg_isready 和 psql 检查容器的连接。