2016-09-22 117 views
0

我有這兩個容器,說backend(CentOs)和mongo。我想有是從backend容器內,我可以連接到蒙戈數據庫,如果它是在本地運行,$> mongo localhost:27017在Docker中的SSH端口轉發

反正據我瞭解這一切,你可以映射端口本地主機:27017到蒙戈:27017這樣

$backend> ssh -L 27017:mongo:27017 [email protected] 

但是,如果我這樣做我必須提供root密碼之後,它記錄了我到mongo容器,沒有端口轉發發生

背景:我想這樣做是因爲我正在運行一個連接的Java程序s到本地主機上的Mongo數據庫,我無法改變這一點。

+0

?運行'ssh -L'命令時是否有錯誤信息? – vmonteco

+0

我正在使用'docker-compose'。我可以從'後端'ssh'到'mongo'。它在Mac上,所以我猜它仍然是'docker-machine' –

+1

你見過這個嗎? https://docs.docker.com/engine/userguide/networking/default_network/container-communication/#/communication-between-containers – vmonteco

回答

2

我找到了正確的SSH端口轉發命令

$> ssh [email protected] -L 27017:localhost:27017 -Nf 

通常使用此命令的想法是,你映射了非公端口 - 通過公共服務器到您自己的服務器/計算。

* `[email protected]` - the public server 
* -L <port on your server>:<third server address>:<port> 
* `-Nf` - Do not login 

因爲public serverthird server在同一臺計算機/容器,你必須你是否使用了原生Linux主機或類似泊塢窗機使用的東西:) localhost

2

默認情況下(網橋模式)每個容器都有自己的網絡接口,您將無法通過本地主機進行通信。

您可以輕鬆地鏈接使用--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 

現在內部後端集裝箱平蒙戈容器應該行不通,你的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 

希望它會有所幫助。

+0

Thnx尋求幫助,但這確實已經奏效。然而,java程序(在'backend'容器中運行,我不能改變)打開一個到'localhost:27017'的連接。你的解決方案在這裏不起作用,因爲它必須連接到'mongo:27017' –