我在一个名为 dbDocker 的 Docker 容器中安装了一个 postgress 数据库。此容器未使用任何服务器端口,并且 postgres 5342 的容器端口仅在同一虚拟网络中的容器中可见。我想创建另一个 docker 容器以允许网络外的用户联系该数据库。是否有可能做到这一点?因此,这个新容器将显示为具有数据库的容器。
谢谢
我在一个名为 dbDocker 的 Docker 容器中安装了一个 postgress 数据库。此容器未使用任何服务器端口,并且 postgres 5342 的容器端口仅在同一虚拟网络中的容器中可见。我想创建另一个 docker 容器以允许网络外的用户联系该数据库。是否有可能做到这一点?因此,这个新容器将显示为具有数据库的容器。
谢谢
是的,您询问的软件称为代理。
您可以拥有一个公开端口的容器。当有人连接时,它会连接到其他地方,并作为中间人来回传递数据。
事实上,当您在 docker 中公开任何端口(如
-p 3306:3306
)时,docker 在内部运行一个代理。一个非常简单的,没有太多的访问粒度。用于您的场景的更高级代理的一个示例是容器化 haproxy,配置为
mode tcp
(因为 postgress 与 不兼容mode http
)。另一个例子是可怕的 SOCKS 代理。
如果我弄错了,而您只需要简单地在 127.0.0.1 上公开,请查看此答案。