초보자를 위한 Docker 기본 (2)

Updated:

본 포스팅을 읽기전에,

Docker가 설치되어 있지 않다면 Docker를 미리 설치하고 본 포스팅을 읽으며 따라하면 훨씬 더 효과적이에요~

Docker 설치하기

초보자를 위한 Docker 기본 (1)

Docker 컨테이너의 외부 노출

컨테이너를 외부 노출한다는 말은 “외부에서 접근 가능”하도록 조치한다는 말입니다.

Docker 컨테이너는 가상IP를 할당받는데, 기본적으로 172.17.0.x의 IP를 순차적으로 할당받습니다.

컨테이너를 새롭게 생성한 후, ifconfig 명령어로 컨테이너의 네트워크 인터페이스를 확인할 수 있습니다.

$ docker run -it --name myu1 ubuntu:14.04

root@695153bad6b2:/# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:ac:12:00:02  
          inet addr:172.17.0.2  Bcast:172.18.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1460  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

아무 설정을 하지 않았다면 외부에서 이 컨테이너를 접속할 수 없으며, 도커가 설치된 호스트에서 컨테이너로 들어가는 것으로만 접근이 가능합니다.

따라서 외부에 서비스하기 위해서는 eth0의 ip와 포트를 호스트의 ip와 포트에 바인딩해야 합니다.

이때 포트 바인딩을 위해 -p 옵션이 사용됩니다.

아래 예제는 Docker가 설치된 호스트의 80 포트로 들어오는 모든 Request를 myu1 컨테이너의 80 포트로 포워딩해 줍니다.

즉, myu1 컨테이너를 (80포트를 통해) 외부에 노출시켜 줍니다.

$ docker run -it -p 80:80 --name myu1 
   ubuntu:14.04


이상, -p 옵션을 통한 컨테이너 외부 노출에 대해 알아 보았습니다.

다음글…

초보자를 위한 Docker 기본 (3)

초보자를 위한 Docker 기본 (4)