我有一个docker 17.05.0-ce,在ubuntu服务器16.04 LTS上构建89658be。 我有一个运行在容器中的Postgres,暴露了端口5432。
我可以从除psql只是超时的同级容器之外的任何地方连接它。作为地址,我使用主机的IP。从客户端执行Ping操作,但无法使用psql connect。
我知道我可以使用合并的Postgres服务创建一个docker-compose,但是我不想-我想将它们完全分开。
有什么办法解决问题吗?
答案 0 :(得分:0)
您要为此使用--net=host
。
添加一个类似问题的answer:
要快速解决此问题,您可以运行带有标志--net=host
的所有容器,这意味着docker容器将使用主机网络接口。可以在here中找到有关docker网络的更多信息。
答案 1 :(得分:0)
您必须将两个容器都放在同一个docker网络上,以便他们能够彼此交谈。
docker network create funny
然后启动您的容器连接到网络
docker run database_container --net=funny --name=database
docker run app_container --net=funny --name=app
执行完此操作后,就可以使用在run命令中指定的名称连接到每个容器。
答案 2 :(得分:0)
将-c'listen_addresses = *'传递给docker run命令行,这将允许postgress接受来自远程计算机的连接:
docker run --name postgres -p 5432:5432 -ePOSTGRES_DB=pgdb -e POSTGRES_USER=user -e POSTGRES_PASSWORD=pass -d postgres -c 'listen_addresses=*'