小编Rya*_*son的帖子

到 Docker 容器的 SSH 隧道

目标:本地连接到远程repl(例如通过lein repl :connect)。

在本地,这很容易:

  1. 运行服务器(它在端口 8081 上启动嵌入式 nrepl 服务器)
  2. 跑吧lein repl :connect 8081,瞧!复制已连接

当 repl 在未打开的端口上运行时,我还通过使用 SSH 隧道连接到远程服务器上的 repl:

  1. 在 some.host 上,运行服务器(它在端口 8081 上启动嵌入式 nrepl 服务器)
  2. SSH隧道ssh -N -T -L 8081:localhost:8081 me@some.host
  3. 在本地,lein repl :connect 8081瞧!复制已连接

但是,我当前的设置是“服务器”在 Docker 容器中运行,该容器映射端口 8081。因此,为了连接到 nrepl 服务器,必须转到 local -> some.host -> docker-container -> nrepl 。

我可以看到我的 docker 容器映射了端口 8081:

$ sudo docker port container-id 8081
0.0.0.0:8081
Run Code Online (Sandbox Code Playgroud)

并且,在托管 docker 容器的服务器上,我可以看到端口 8081 正在侦听:

$ netstat -anl | sed -n '2p;/8081/p' …
Run Code Online (Sandbox Code Playgroud)

port-forwarding ssh-tunnel docker

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

docker ×1

port-forwarding ×1

ssh-tunnel ×1