레이블이 Docker인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Docker인 게시물을 표시합니다. 모든 게시물 표시

2014년 11월 23일 일요일

IP 주소로 Windows용 Boot2Docker 외부에서 Container로 접속하기

Windows 환경에서 Docker는 Boot2Docker 커맨드라인 툴을 통해 가상화된 Linux에서 실행된다.


Boot2Docker Start 아이콘을 실행하면 위와 같은 화면이 나오고 이제 마음 것 docker 명령어를 이용할 수 있다.


실제로 Docker가 실행되는 가상화된 Linux는 Boot3Docker와 같이 설치되는 Oracle VIrtualBox 상에서 실행된다. ifconfig를 실행하면 다음과 같은 네트워크 정보를 알 수 있다.


docker0는 Docker 컨테이너들 간에 연결된 네트워크이고 eth0는 VirtualBox NAT에 연결되어 호스트(Windows)의 인터넷과 연결에 사용되고 eth1은 호스트에 설치된 가상 네트워트 아답터와 매핑되어 호스트에서 Boot2Docker에 연결할 때 사용된다.


위와 같은 호스트와 게스트의 네트워트 관계에서 호스트의 Host Only Network를 통해서 직접 게스트의 docker0 네트워크 IP에 접근할 수 없기 때문에 위의 점선과 같이 호스트의 라우팅 테이블을 수정해서 호스트의 어플리케이션이 docker 컨테이너에 접근할 수 있도록 한다.


관리자모드로 커멘드 창을 열고 route print하여 인터페이스 목록에서 위에서 확인한 VirtualBox Host-Only Ethernet Adapter #2의 인터페이스 아이디 32를 확인하고 아래와 같이 입력한다.

route -p add 172.17.0.0 mask 255.255.0.0 192.168.59.103 IF 32

간단히 설명하면 192.168.59.3이 할당된 인터페이스로 172.17.0.0으로 시작하는 IP 주소에 대한 모든 요청을 192.168.59.103 인터페이스로 돌아서 요청하라는 의미이다. -p 옵션을 주어 이 설정을 영구적으로 적용하게 하였다. 테스트로 아래와 같이 CouchBase 컨테이너를 하나 생성해본다.

docker run -d -p 11210:11210 -p 8091:7081 -p 8092:8092 dustin/couchbase

생성된 CouchBase 컨테이너는 IP 주소 172.17.0.2부터 차례로 할당되고 다음과 같이 호스트에서 CouchBase Console에 접속이 가능함을 확인할 수 있다.