Docker DNS
목차
- Docker 컨테이너는 IP를 사용자 정의 네트워크의 컨테이너 이름으로 자동 확인하는 DNS서버가 호스트에 생성된다 (127.0.0.11)
- Docker의 기본 docker0 bridge driver에는 DNS가 포함되어 있지 않음 → Docker0 bridge driver는 작동 안함
- 동일 네트워크 alias 할당을 통해 하나의 타겟 그룹을 만들어 요청에 Round Robin방식으로 응답함다.
- 컨테이너 생성시 호스트 시스템에서 다음 세파일을 복사하여 컨테이너 내부에 적용하여 컨테이너 간에 이름으로 찾기가 가능해진다.
- /etc/hostname
- /etc/hosts
- /etc/resolv.conf
- libnetwork는 핵심 네트워킹 서비스 검색 기능 제공하며 모든 컨테이너가 이름으로 서로를 찾을 수 있게 한다. ( –name or –net-alias 사용 시 DNS에 등록)
docker network create es-net확인
route
컨테이너 생성
docker run -d -m 1g --cpus=2 --name=es1 --net=es-net --net-alias=esnet-tg -p 9201:9200 -p 9301:9300 -e "discovery.type=single-node" elasticsearch:7.17.10
docker run -d -m 1g --cpus=2 --name=es2 --net=es-net --net-alias=esnet-tg -p 9202:9200 -p 9302:9300 -e "discovery.type=single-node" elasticsearch:7.17.10
docker run -d -m 1g --cpus=2 --name=es3 --net=es-net --net-alias=esnet-tg -p 9203:9200 -p 9303:9300 -e "discovery.type=single-node" elasticsearch:7.17.10확인
docker ps | grep es
docker network inspect es-net
docker run -it --rm --name=request-container --net=es-net busybox nslookup esnet-tg내부내트워크 확인
docker run -it --rm --name=request-container --net=es-net centos:8 bash
curl -s esnet-tg:9200