[docker]도커 네트워크

코드깎는 노인·2021년 7월 29일
0
post-thumbnail
post-custom-banner

도커 네트워크

도커네트워크 구조


도커 컨테이너를 생성할때 veth라는 인터페이스를 생성하여 내부 IP를 할당하여 외부와 연결할 수 있게 한다.veth는 docker0브릿지로 호스트의 eth0와 연결된다.네트워크를 따로 설정하지 않은 컨테이너는 docker0 브릿지를 사용한다.

brctl show docker0
docker0와 veth의 연결확인
docker network ls
도커네트워크 목록 확인
docker network inspect bridge
브릿지라는 네트워크 정보 확인

브릿지 네트워크

docker network create --driver bridge mybridge
브릿지타입의 mybridge네트워크생성
docker run -it --name myContainer \ --net mybridge \ ubuntu:14.04
mybridge를 브릿지로 사용하는 컨테이너 생성
docker network disconnect mybridge mynetwork_container docker network connect mybridge mynetwork_container
네트워크 연결/해제 브릿지네트워크,오버레이 네트워크에서만 작동.논 네트워크,호스트 네트워크에서 작동불가.

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

서브넷,아이피범위,게이트웨이 설정

호스트 네트워크

호스트 네트워크는 호스트의 네트워크환경을 쓸 수 있다.별도의 네트워크 생성없이 사용가능하다.
호스트네트워크의 컨테이너는 포트 포워딩없이 바로 외부와 연결된다.

docker run -it --name network_host \
--net host \
ubuntu:14.04

논 네트워크

docker run -it --name network_none \
--net none \
ubuntu:14.04

외부와의 네트워크를 차단한다.

컨테이너 네트워크

docker run -itd --name network_container1 ubuntu:14.04
docker run -itd --name network_container2 \
--net container:network_container1 \
ubuntu:14.04

--net 컨테이너 옵션으로 network_container1과 네트워크네임스페이스 환경을 공유하여 내부아이피,veth가상인터페이스를 공유한다.
docker exec network_container1 ifconfig
네트워크 인터페이스 확인

브릿지 네트워크와 --net-alias

docker run -itd --name network_container1 \
--net mybridge \
--nett-alias myalias ubuntu:14.04
docker run -itd --name network_container1 \
--net mybridge \
--nett-alias myalias ubuntu:14.04

브릿지 네트워크와 net-alias옵션으로 컨테이너 2개를 생성하였다.
ping -c 1 myalias
myalias로 ping요청을 보내면 ip주소가 매번 달라지는데 도커 내장DNS가 라운드 로빈방식(하나의 중앙처리장치를 여러 프로세스들이 우선순위없이 실행방식)으로 실행되어 매 ping마다 myalias로 생성한 2개중 1개의 ip로 무작위 핑을 보낸다.

apt-get udpate
apt-get install dnsutils
dig myalias

dig로 myalias호스트이름이 반환되는 ip리스트 확인.매번 순서가 달리짐(라운드 로빈)

profile
내가 볼려고 만든 블로그
post-custom-banner

0개의 댓글