如何仅将 Docker 容器端口公开给 localhost,以便也可以通过 ssh 隧道访问它?

Posted

技术标签:

【中文标题】如何仅将 Docker 容器端口公开给 localhost,以便也可以通过 ssh 隧道访问它?【英文标题】:How can I expose a Docker container port only to localhost so that it is also accessible via an ssh tunnel? 【发布时间】:2017-08-31 14:50:19 【问题描述】:

希望直截了当。我知道如何仅使用

绑定到主机
-p 127.0.0.1:$HOSTPORT:$CONTAINERPORT

我遇到的问题是这样做会阻止我通过 ssh 隧道访问映射的主机端口到 docker 主机。

有没有办法做到这一点,而不必在某处阻塞 docker 主机的上游端口?

【问题讨论】:

【参考方案1】:

只需将 ssh 隧道的目标设为 localhost127.0.0.1

ssh -L local-port:127.0.0.1:container-port docker-host

会将您的local-port 转发至docker-host 上的localhost:container-port。无需将容器端口暴露给外网。

【讨论】:

谢谢!做到了。

以上是关于如何仅将 Docker 容器端口公开给 localhost,以便也可以通过 ssh 隧道访问它?的主要内容,如果未能解决你的问题,请参考以下文章

似乎无法将 docker 容器端口暴露给主机

如何使用 Azure Web 应用容器公开端口 3000?

如何自动缩放 Docker 容器主机?

sh 在Docker容器中启动MongoDB并检查公开的端口

如何在没有端口映射的情况下将 docker 容器的 ip 和端口暴露给外部 docker 主机?

Docker如何在特定端口(8080)上建立到容器的TCP连接?