Cloud System Engineer

도커 네트워크 본문

리눅스/docker

도커 네트워크

클라우드 엔지니어 2021. 1. 29. 23:19

도커 네트워크
컨테이너의 eth0 인터페이스는 호스트의 veth.... 라는 인터페이스와 연결되어 있으며 veth 인터페이스는 docker0 브리지와 바인딩 되어
외부와 통신할수 있다.

 

#brctl show docker0

 

 

도커에서 쓸 수있는 네트워크가 무엇이 있는지 확인
#docker netwokr  ls

#docker network inspect bridge

 

 

 

 브리지 네트워크
기본적으로 사용하는 docker0을 사용하는 브리지 네트워크가 아닌 새로운 브리지 타입의 네트워크를 생성한 후, 컨테이너가 사용하도록 해보자.

#docker network create --driver bridge mybridge

 

#docker run -i -t --name mynetwork_container --net mybridge ubuntu:14.04 

 

 

mynetwork_container 이름의 컨테이너를 --net mybridge 라는 브릿지에 연결하고 ip 결과

172.17 대역에서 172.18 대역으로 올라갔다.

 

네트워크 끊기
# docker network disconnect mybridge mynetwork_container

 

네트워크 연결
# docker network connect mybridge mynetwork_container

 

 

네트워크의 ip대역대를 변경할수 있다.
#docker network create --driver=bridge --subnet=172.72.0.0/16 --ip-range=172.72.0.0/24 --gateway=172.72.0.1 my_custom_network 

 

 

172.72.01 이라는 ip 가 생겼다.

 

 

논 네트워크
none 말그대로 아무런 네트워크를 사용하지 않는것을 뜻한다. 컨테이너를 생성하면 외부와 연결이 단절된다.
#docker run -i -t --name network_none --net none ubuntu:14.04

 

 

 

ip 를 받아오질 못한다.

 

 

컨테이너 네트워크
--net 옵션으로 container 를 입력하면 다른 컨테이너의 네트워크 네임스페이스 환경을 공유할 수 있다.
형식은 container:[다른컨테이너 의 id] 와 같다.

 

 

docker run -i -t -d --name network_container_1 ubuntu:14.04

 

 

# docker run -i -t -d --name network_container_2 --net container:network_container_1 ubuntu:14.04 

-network 입력 부분에 다른 컨테이너 이름을 쓰면

 

 

컨테이너 1 , 컨테이너 2  둘다 172.17.0.2 ip를 쓴다 

 

브리지 네트워크와 --netalias
브리지 타입의 네트워크와 run 명령의 -net-alias 옵션을 함께 쓰면 특정 호스트 이름으로 컨테이너 여러 개에 접근 할 수 있다.

 

 

컨테이너 3개 생성

docker run -i -t -d --name network_alias_container1 --net mybridge --net-alias jeong ubuntu:14.04
docker run -i -t -d --name network_alias_container2 --net mybridge --net-alias jeong ubuntu:14.04
docker run -i -t -d --name network_alias_container3 --net mybridge --net-alias jeong ubuntu:14.04

 

## 각 컨테이너의 ip 를 확인해본다
docker attach network_alias_container1~3 가서
ifconfig 해서 ip 확인

 

- 컨테이너 1 ip

 

- 컨테이너 2 ip

 

- 컨테이너 3 ip

 

172.18.0.2~172.18.0.4 나란히 받았다.

 

## 세개의 컨테이너에 접근할 컨테이너를 생성한 뒤 jeong 이라는 호스트 이름으로 ping을 해보자
 docker run -i -t --name network_alias_ping --net mybridge ubuntu:14.04

 

 

 

ping -c 3 jeong

 

3개의 컨테이너 가 라운드 로빈 형식으로 동작한다.

 

 

 

 

이를 확인 하기위해 dig라는 도구를 써보자. dig는 dns로 도메인 이름에 대응하는 ip를 조회할 때 쓰는 도구이다.

docker attach network_alias_ping

 

apt-get update
apt-get install dnsutils
dig jeong

 

결과

 

모두 확인할 수 있다. 

 

'리눅스 > docker' 카테고리의 다른 글

컨테이너 로깅  (0) 2021.01.31
MAC VLAN 네트워크  (0) 2021.01.29
도커 볼륨  (0) 2021.01.29
도커에 워드프레스를??  (0) 2021.01.29
도커 설치  (0) 2021.01.26