2014-11-11 2 views
7

나는 도커 컨테이너가 EC2 호스트에서 실행 중이며 다른 컨테이너가 다른 ec2 호스트에서 실행 중입니다. 포트 번호를 제공하지 않고 어떻게 ssh를 하나씩 사용합니까? ssh root @ ip-address-of-container다른 호스트에있는 다른 컨테이너의 도커 컨테이너에 SSH 넣기

+2

이렇게하려면 두 번째 컨테이너에 첫 번째 컨테이너에서 라우팅 할 수있는 IP 주소가 필요합니다. Docker의 기본 동작은 사설 IP 주소를 사용하기 때문에 이는 사소한 일입니다. 이것이 사람들이 포트를 외부 호스트의 다른 포트 번호에 매핑하는 경향이있는 이유입니다. 또 다른 방법은 '오버레이 네트워크'를 사용하는 것입니다 (예 : 직조). (나는 짜다를 위해 일한다) – Bryan

+1

또한, ssh 서버는 컨테이너 안에 설치되고 시작되어야한다. ssh는 일반 배포판 에서처럼 컨테이너의 상자에서 작동하지 않습니다. – Dharmit

+0

@ 브라이언 - 감사합니다! 나는 그것을 밖으로 시도 할 것이다! – user1016313

답변

5

포트 22에서 두 번째 컨테이너로 ssh 할 수 있으려면 호스트 ec2 VM의 ssh 데몬을 꺼내야합니다.

  1. 한 가지 방법은 당신이 당신의 고정 표시기 컨테이너를 실행할 때 이제 22:22 -p 사용할 수있는 3022 같은 뭔가/등은/SSH/sshd_config에있는 항목 을 추가하여 호스트 시스템의 SSH 포트를 변경하는 것입니다 사이에 을 ssh 할 수 있어야합니다. 그렇지만 ec2 인스턴스가 ssh로 실행되는 경우는 3022입니다.

    host-vms도 포트 22에서 ssh를 활성화하려면 에서 두 번째 가상 이더넷 인터페이스를 만들어야합니다. 이 은 정적 IP를 설정할 수 있으면 쉽게 할 수 있습니다. ifconfig eth0:0 192.168.1.11 up과 같은 것입니다. 그러나 ec2에서는 DHCP 기반 IP를 사용하므로 이 될 수 없습니다.

  2. 세 번째 방법은 .ssh/config 파일을 비표준 포트에 매핑하도록 설정하는 것입니다. 그것은 당신이 포트 22를 통해 SSH를 허용하지 않지만 적어도 당신은 비표준 포트에 대해 알 필요가 없습니다. 다음은 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