2014-11-11 3 views
7

У меня есть контейнер докеров, работающий на хосте EC2, а другой работает на другом узле ec2. Как сделать ssh от одного к другому, не предоставляя номера портов? Я хочу сделать что-то вроде ssh root @ ip-address-of-containerSSH в контейнер-докер из другого контейнера на другом хосте

+2

Для этого вашему второму контейнеру потребуется IP-адрес, который можно маршрутизировать из первого контейнера. Поскольку поведение Docker's вне коробки заключается в использовании частных IP-адресов, это нетривиально. Вот почему люди склонны сопоставлять порт с другим номером порта на внешнем узле. Альтернативой является использование «наложенной сети», например, переплетения. (Я работаю для переплетения) – Bryan

+1

Кроме того, сервер ssh необходимо установить и запустить внутри контейнера. ssh не работает из коробки в контейнерах так, как это происходит в обычном дистрибутиве. – Dharmit

+0

@ Брайан - Спасибо! Я попробую! – user1016313

ответ

5

Для того, чтобы вы могли ssh во второй контейнер на порте 22, вам нужно будет удалить демон ESX vm ssh с пути.

  1. Один из способов изменить SSH-порта хост-машины путем добавления записи в/и т.д./SSH/sshd_config на что-то вроде 3022. Теперь вы можете использовать -p 22:22 при запуске Docker контейнер (ов) и иметь возможность ssh между ними. Тем не менее, ssh`ing экземпляр ec2 находится на 3022.

  2. Если вы хотите, чтобы хост-vms также был включен ssh на порте 22, вам понадобится создать второй виртуальный интерфейс ethernet. Этот прост в использовании, если вы можете установить статические IP-адреса. что-то вроде ifconfig eth0:0 192.168.1.11 up. Однако в ec2 это не будет , поскольку у вас есть IP-адреса на основе DHCP.

  3. Третий способ - настроить файл .ssh/config для сопоставления с нестандартным портом. Это не позволяет вам передавать ssh через порт 22, но по крайней мере вам не нужно знать о нестандартном порту. Вот tutorial, и соответствующие части ниже.

    # contents of $HOME/.ssh/config 
    Host other_docker 
        HostName ec2-host-name-of-other-docker.com 
        Port 22000 
        User some_user 
    
        # must be added to authorized keys on other docker host for some_user 
        IdentityFile ~/.ssh/this-docker-private-key 
    

Теперь вы можете просто сделать ssh other_docker

Смежные вопросы