초보자를 위한 Docker 기본 (2)
Updated:
본 포스팅을 읽기전에,
Docker가 설치되어 있지 않다면 Docker를 미리 설치하고 본 포스팅을 읽으며 따라하면 훨씬 더 효과적이에요~
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 옵션을 통한 컨테이너 외부 노출에 대해 알아 보았습니다.
다음글…