브리지 네트워크
앞서 기본적으로 쓸 수 있는 네트워크 중 bridge와 host, none을 확인했다.
도커에서는 브리지 네트워크를 사용자가 구성해 docker0을 대신해 각 컨테이너에 연결할 수 있도록 지원하며, 외부와 통신할 수 있다.
다음 명령어를 통해 새로운 브리지 네트워크를 생성할 수 있다.
#docker network create --driver bridge swift-bridge
# docker run -i -t --name net_ubuntu -p 8080:8080 --net swift-bridge ubuntu:latest
# docker inspect net_ubuntu
--subnet, --ip-range,--gateway 옵션 등을 통해 추가 네트워크 설정도 할 수 있다.
--net-alist
호스트의 별칭을 생성
사용자 정의 브리지 네트워크와 run 명령어의 --net-alias 옵션을 함께 쓰면 특정 호스트 이름으로 컨테이너의 여러개 IP의 목록을 갖는다.
# docker run -i -t --name ubuntu_alias_container1 --net swift-bridge --net-alias swift ubuntu:latest
# docker run -i -t --name ubuntu_alias_container2 --net swift-bridge --net-alias swift ubuntu:latest
각각의 IP가 생성되었으며 docker 엔진에 내장된 DNS가 swift라는 host 이름의 별칭으로 생성된 컨테이너로 변환한다.
컨테이너 실행 시 ubuntu_alias_container1과 ubuntu_alias_container2는 swift라는 이름의 호스트 이름으로 swift-bridge에 등록 했으며, 도커 내장 DNS 서버는 swift라는 호스트 이름의 IP 목록을 여러 개 들고 있다.
해당 호스트 이름으로 ping을 날려보자.
# docker run -i -t --name ubuntu_ping --net swift-bridge ubuntu:latest
# ping -c 1 swift
결과, 각 각 IP로 Ping이 전송된 것을 확인 할 수 있는데, 매 번 전달되는 ping이 달라지는 것은 DNS가 랜덤하게 순서가 바뀐 IP의 리스트를 반환하고 클라이언트는 이 중 첫번 째 IP를 사용한다.
도커의 컨테이너 IP는 수시로 재시작 혹은 변경될 요소가 있다. 도커의 DNS는 --link 옵션과 같은 호스트 이름으로 유동적으로 컨테이너를 찾을 때 주로 사용한다. 이는 컨테이너 IP가 변경되어도 별명으로 컨테이너를 찾을 수 있게 DNS에 의해 자동 관리 되는데, --link 옵션은 디폴트 브리지 네트워크의 컨테이너 DNS라는 점이 다르다.
# docker run -i -t --name ubuntu_container --link test12345:alias_ubuntu ubuntu:latest
# cat /etc/hosts
참고- https://m.blog.naver.com/PostView.nhn?blogId=alice_k106&logNo=220747224965&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F
'Cloud & NoSQL & Middleware > Docker' 카테고리의 다른 글
DockerFile (1) (0) | 2018.10.15 |
---|---|
Docker Network (3) - host, none, container network (0) | 2018.09.18 |
Docker Network (1) - docker0 (0) | 2018.09.14 |
Docker Container - 명령어 & Volume (0) | 2018.09.09 |
Docker Engine, image (0) | 2018.09.08 |