7.3.도커 컨테이너 간의 통신

  • 도커에도 DNS 서비스가 내장돼 있다.
  • 컨테이너 이름을 도메인 삼아 조회하면 해당 컨테이너의 IP 주소를 찾아 준다.
001)  docker-compose up -d --scale iotd=3
002) [+] Running 5/5
003)   Container image-of-the-day-iotd-3           Started                                                                                          0.8s 
004)   Container image-of-the-day-accesslog-1      Started                                                                                          0.5s 
005)   Container image-of-the-day-iotd-1           Started                                                                                          0.5s 
006)   Container image-of-the-day-iotd-2           Started                                                                                          1.1s 
007)   Container image-of-the-day-image-gallery-1  Started 
008)  
009)  docker exec -it image-of-the-day-image-gallery-1 sh
010)  /web nslookup accesslog
011) nslookup: can't resolve '(null)': Name does not resolve
012) 
013) Name:      accesslog
014) Address 1: 172.22.0.2 image-of-the-day-accesslog-1.nat
  1. 001~007: 애플리케이션이 정의된 상태대로 실행, iotd 서비스의 컨테이너를 3개로 늘림
  2. 009: 컨네이너에 대화식 셸을 실행
  3. 010~014: 도메인을 DNS에 조회. accesslog 서비스를 DNS에 조회해 보니 해당 컨테이너의 IP주소가 조회됐다.

컨테이너 삭제후 재실행 및 DNS 조회

001)  docker container rm -f image-of-the-day-accesslog-1
002) image-of-the-day-accesslog-1
003)  
004)  docker-compose up -d --scale iotd=3
005) [+] Running 5/5
006)   Container image-of-the-day-accesslog-1      Started                                                                                          0.3s 
007)   Container image-of-the-day-iotd-1           Running                                                                                          0.0s 
008)   Container image-of-the-day-iotd-3           Running                                                                                          0.0s 
009)   Container image-of-the-day-iotd-2           Running                                                                                          0.0s 
010)   Container image-of-the-day-image-gallery-1  Running                                                                                          0.0s 
011) 012)  docker exec -it image-of-the-day-image-gallery-1 sh
013)  /web nslookup accesslog
014) nslookup: can't resolve '(null)': Name does not resolve
015) 
016) Name:      accesslog
017) Address 1: 172.22.0.2 image-of-the-day-accesslog-1.nat
018) 
019) ➜ /web nslookup iotd
020) nslookup: can't resolve '(null)': Name does not resolve
021) 
022) Name:      iotd
023) Address 1: 172.22.0.5 image-of-the-day-iotd-2.nat
024) Address 2: 172.22.0.4 image-of-the-day-iotd-3.nat
025) Address 3: 172.22.0.3 image-of-the-day-iotd-1.nat
  1. 001: 컨테이너를 삭제하면 애플리케이션의 상태가 컴포즈 파일에 정의된 것과 달라져 컴포즈는 새롭게 컨테이너를 만든다.
  2. 016~017: DNS 조회 결과를 보면 기존 컨테이너의 IP를 그대로 유지했다. 삭제되면서 부여됐던 IP 주소도 재사용이 가능해졌기 때문
  3. 019~025: iotd 서비스는 세 개의 컨테이너로 동작하므로 IP주소도 세 개다.

links

social