Network
1 도커 네트워크
1.1 컨테이너 가상 IP
- 컨테이너는 가상 IP주소를 할당받는다.
- 기본적으로 도커 컨테이너는 172.17.0.x 의 IP 주소를 순차적으로 할당 받는다.
- IP 주소는 컨테이너를 재시작할 때마다 변경될 수 있다
- 이 IP 주소는 도커가 설치된 호스트에서만 접근 가능하다
컨테이너 IP 확인
- 컨테이너 내부에서 ifconfig 명령어를 통해 컨테이너의 네트워크 인터페이스 eh0와 네트워크 인페이스 lo를 확인할 수 있다.
$ docker run -it --name network_test ubuntu:14.04
## 컨테이너의 IP 주소 확인 172.17.0.2를 할당 받았다
$ root@8b597aa63feb:/# 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:12 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:1032 (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:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
1.2 veth 네트워크 인터페이스
- 외부와 연결이 필요한 경우 컨테이너를 시작할 때
veth라는 네트워크 인터페이스를 생성해야한다. veth: 외부와의 네트워크를 제공하기 위해 필요한 가상 네트워크 인터페이스veth는 사용자가 직접 생성할 필요가 없으며 컨테이너를 생성할 때 도커 엔진이 자동 생성한다.veth는 각 컨테이너의eth0와 연결되어 있다.
veth 네트워크 인터페이스 확인
- 도커가 설치된 호스트에서 실행중인 컨테이너의 수만큼 veth가 존재한다.
## 도커가 설치된 호스트에서 현재 2개의 컨테이너가 실행 중
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
80e9f140fecc neptunes032/ra-backend:0.0.1-SNAPSHOT "java -jar /app.jar" 9 minutes ago Up 9 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp RA-Backend
10e55ed604e1 mongo "docker-entrypoint.s…" 12 minutes ago Up 12 minutes 0.0.0.0:27017->27017/tcp, :::27017->27017/tcp mongodb
## 도커가 설치된 호스트에서 실행중인 컨테이너의 수만큼 veth를 확인할 수 있다
$ ifconfig
...
veth8f01bdc: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::9849:66ff:fe77:4054 prefixlen 64 scopeid 0x20<link>
ether 9a:49:66:77:40:54 txqueuelen 0 (Ethernet)
RX packets 161 bytes 54223 (54.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 299 bytes 29533 (29.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
veth8f5dad1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::501f:a5ff:fec2:3a1 prefixlen 64 scopeid 0x20<link>
ether 52:1f:a5:c2:03:a1 txqueuelen 0 (Ethernet)
RX packets 309 bytes 44270 (44.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 271 bytes 85651 (85.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0