首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将远程码头集装箱的港口转发到本地主机

将远程码头集装箱的港口转发到本地主机
EN

Stack Overflow用户
提问于 2020-11-01 06:20:10
回答 2查看 5.5K关注 0票数 8

我在远程VPS上的码头组成网络中运行了容器。我希望能够从本地主机访问在其中一个容器中运行的数据库。

如果容器appdb在VPS上的容器网络中,我想从机器的localhost:5432中访问db:5432。Kubernetes的CLI允许使用kubectl port-forward <service-name> 5432:5432

在现有的unix命令和Docker的API中是否存在实现此效果的现有解决方案?我在互联网上的搜索并没有产生任何CLI来做这件事。

干杯。

编辑:我已经接受了阿里·头的回答,但是,如果能看到一个不需要重新启动容器来重新配置其端口以将它们公开到主机上的解决方案,那就太好了。

编辑2:我发现了一种聪明的方法,可以在Docker网络中使用与https://stackoverflow.com/a/42071577/12406113切线相关的套接字转发流量。但是,这是公开的端口,而不是创建隧道,例如在SSH解决方案中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-01 09:58:44

假设您可以访问正在运行容器的目标机器,您可以通过两个步骤实现这一点:

  1. 将容器端口公开到VPS端口,绑定到其环回IP以确保安全性:

代码语言:javascript
复制
ports:
  - 127.0.0.1:5432:5432

  1. 使用SSH端口转发来访问容器的端口5432:

代码语言:javascript
复制
ssh -f -N -L 127.0.0.1:5432:127.0.0.1:5432 <VPS_IP>

上面的命令可能令人困惑,但它请求SSH侦听客户端系统上的127.0.0.1:5432 (第一个ip:端口对),并通过ssh隧道将其连接转发到远程系统的127.0.0.1:5432 (第二个ip:端口对)(用<VPS_IP>演示)。有关更多信息,请参见this answer

请注意,这个ssh连接是持久的,直到您的网络保持连接。如果要关闭此连接,请执行ps aux | grep ssh查找ssh转发过程的PID,然后使用sudo kill -9 $PID关闭它。

但是,如果您没有安全问题,这与直接连接到VPS_IP:5432的情况没有什么不同。

票数 11
EN

Stack Overflow用户

发布于 2020-11-01 06:31:34

您可以只使用端口部分,其中可以指定主机端口和容器端口来转发请求https://docs.docker.com/compose/networking/

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64629210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档