You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

도커 컨테이너 외부에 노출

컨테이너는 가상머신과 마찬가지 IP주소를 할당받는다.

기본적으로 도커는 컨테이너에 172.17.0.x 의 IP를 순차적 할당한다.

컨테이너를 생성한 후 ifconfig로 네트워크 인터페이스를 확인한다.

[root@localhost ~]# docker run -i -t --name network_test ubuntu:14.04
Unable to find image 'ubuntu:14.04' locally
14.04: Pulling from library/ubuntu
c954d15f947c: Downloading [========================>                          ]   36.2MB/72.95MB
c3688624ef2b: Download complete 
848fe4263b3b: Download complete 
23b4459d3b04: Download complete 
36ab3b56c8f1: Download complete 
Digest: sha256:e1c8bff470c771c6e86d3166607e2c74e6986b05bf339784a9cab70e0e03c7c3
Status: Downloaded newer image for ubuntu:14.04
root@932ac299b590:/# 
root@932ac299b590:/# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:02  
          inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:13 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:1086 (1.0 KB)  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:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

아무런 설정이 없었기때문에 이 컨테이너는 외부에 접근 할 수 없으며 도커가 설치된 호스트에서만 접근이 가능하다.

외부에 컨테이너의 어플리케이션을 노출하기 위해서는 컨테이너IP 와 호스트IP를 바인딩 해야 한다.

[root@localhost ~]# docker run -i -t --name mywebserver -p 80:80 ubuntu:14.04
root@4107b91f969d:/# [root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
4107b91f969d        ubuntu:14.04        "/bin/bash"         31 seconds ago      Up 30 seconds       0.0.0.0:80->80/tcp   mywebserver
932ac299b590        ubuntu:14.04        "/bin/bash"         5 minutes ago       Up 5 minutes                             network_test

-p 옵션은 컨테이너의 포트를 호스트포트와 바인딩하여 연결할 수 있게 설정한다.

-p의 옵션 형식은 다음과 같다.

[호스트포트] : [컨테이너포트]

호스트의 7777 포트를 컨테이너 80 포트와 연결하려면 7777:80 와 같이 입력하며

호스트의 특정 아이피를 사용하려면 192.168.0.100:7777:80 과 같이 바인딩할 아이피와 포트를 명시한다.

여러개의 포트를 외부에 개발하게되면 -p 옵션을 어러번 사용할수 있다.

[root@localhost ~]# docker run -i -t -p 3306:3306 -p 192.168.56.101:7777:80 ubuntu:14.04

실행이 완료되면 [도커엔진호스트IP] : 80 으로 접근이 가능하다.


호스트의 IP와 포트를 컨테이너의 아이피와 포트로 연결한다는 개념은 매우 중요하다.

172대역을 가진 컨테이너의 NAT IP와 80번 포트로 서비스하므로 여기에 접근하려면

172.17.0.x :80으로 접근할 수 있다.







  • No labels