Docker中的SSH端口转发
我有这两个容器,比如backend
(CentOs)和mongo
。 我想要的是,从backend
容器内,我可以连接到mongo数据库,就好像它在本地运行$> mongo localhost:27017
无论如何,据我了解这一切,你可以映射到本地端口:27017到mongo:27017像这样
$backend> ssh -L 27017:mongo:27017 root@mongo
但是,如果我这样做,我必须提供root密码,之后它将我login到mongo
容器中,并且没有端口转发
背景:我想这样做,因为我正在运行一个Java程序连接到本地主机上的Mongo数据库,我不能改变这一点。
默认情况下(网桥模式)每个容器都有自己的networking接口,您将无法通过本地主机进行通信。
您可以使用–link选项轻松链接容器,并使用-p选项打开您想要的端口:
docker run --name mongo -p 27017:27017-it <mogo image> /bin/bash docker run --name backend --link mongo -it <backend image> /bin/bash
现在在后端容器ping里,mongo容器应该可以工作,你的ssh命令也可以。
$ping mongo PING mongo (172.17.0.2): 56 data bytes 64 bytes from 172.17.0.2: icmp_seq=0 ttl=64 time=0.224 ms
希望这会有帮助。
我find了正确的SSH端口转发命令
$> ssh root@mongo -L 27017:localhost:27017 -Nf
通常使用这个命令的想法是,你映射一个非公共的端口 – 通过公共服务器到你自己的服务器/计算机。
* `root@mongo` - the public server * -L <port on your server>:<third server address>:<port> * `-Nf` - Do not login
因为public server
和third server
是相同的计算机/容器,你必须使用localhost
🙂