【发布时间】:2016-07-25 13:08:29
【问题描述】:
我创建了一个承载 postgres 服务器的 docker 容器。我试图让这个运行的两个实例索引两个完全不同的数据库,因此依赖于一组不同的卷。
我一个接一个地运行以下两个命令:
docker run -v ... -p 5432:9001 -P --name psql-data postgres-docker
docker run -v ... -p 5432:9002 -P --name psql-transactions postgres-docker
第一个容器创建并运行,但第二个调用抛出以下错误:
Error response from daemon: failed to create endpoint psql-transactions on network bridge: Bind for 0.0.0.0:5432 failed. Port already in use.
我觉得这有点令人困惑,因为我认为容器的目的是隔离端口绑定。如果我将两个容器都映射到主机上的同一端口上,我可以理解,但我正在尝试将它们分别挂载到 9001 和 9002。
如何防止这个问题?
【问题讨论】:
-
是否需要暴露和重新映射端口?链接容器时可以通过主机名访问它们
-
第一个发布的端口是在主机上,所以显然你必须改变两个中的一个
-
不幸的是,我确实需要从外部非 docker 位置访问端口。
标签: postgresql docker port