Перенаправление портов SSH в Docker

У меня есть эти два контейнера, скажем, backend (CentOs) и mongo. Я бы хотел, чтобы из контейнера backend я мог подключиться к базе данных mongo, как если бы она работала локально, $> mongo localhost:27017

В любом случае, насколько я все это понимаю, вы можете сопоставить порт localhost:27017 с mongo:27017 вот так

$backend> ssh -L 27017:mongo:27017 root@mongo

Однако, если я это сделаю, я должен предоставить пароль root, и после этого он зарегистрирует меня в контейнере mongo, и переадресация портов не произойдет.

Фон: я хочу сделать это, потому что я запускаю программу Java, которая подключается к базе данных Mongo на локальном хосте, и я не могу это изменить.


person Jeanluca Scaljeri    schedule 22.09.2016    source источник
comment
Используете ли вы собственный хост Linux или что-то вроде докер-машины? Есть ли у вас сообщение об ошибке при выполнении команды ssh -L?   -  person vmonteco    schedule 22.09.2016
comment
Я использую docker-compose. Я могу ssh от backend до mongo. Это на Mac, так что я думаю, что это все еще где-то docker-machine   -  person Jeanluca Scaljeri    schedule 22.09.2016
comment
Вы видели это ? docs.docker.com/engine/ руководство пользователя/сеть/сеть_по_умолчанию/   -  person vmonteco    schedule 22.09.2016
comment
Я добавил пару примеров того, что я пробовал и каков был результат. Кроме того, я думаю, что эта проблема связана не с докером, а с тем, что я не понимаю переадресацию портов SSH.   -  person Jeanluca Scaljeri    schedule 22.09.2016
comment
@Jeanluca: здесь мы не используем [решенные] заголовки. Пожалуйста, просто примите ответ ниже, который больше всего соответствует вашему решению (включая ваше собственное).   -  person halfer    schedule 22.09.2016


Ответы (1)


Я нашел правильную команду переадресации порта 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 :)

person Jeanluca Scaljeri    schedule 22.09.2016