본문 바로가기
기초 튼튼탄탄탄/DevOps

[docker] 도커 네트워크 - link 옵션

by 잇서니 2020. 4. 20.
반응형

 

docker network 구조 중 link에 대해 알아본다.

link 옵션은 같은 호스트 내에 컨테이너 간 연결을 할 때 사용한다.

 

 


 

컨테이너끼리는 private ip를 기반으로 통신한다. 그런데 컨테이너가 재시작되면 ip가 바뀔 수도 있다. 이 문제를 해결하는 방법으로 link를 사용한다. ip가 아닌 컨테이너 이름을 기반으로 통신할 수 있기 때문이다.

 

master 컨테이너와 slave1 컨테이너가 있다고 하자. slave1은 master와 link를 맺었다. slave1 컨테이너 내에서 ping master를 하면 정상적으로 작동한다. 즉 컨테이너 이름으로 통신이 된다는 이야기이다.

docker run -i -t -h master --name master -p 50070:50070 -p 8088:8088 ubuntu:hadoop_2.7.7
docker run -i -t -h slave1 --name slave1 --link master:master ubuntu:hadoop_2.7.7

 

이게 가능한 이유는 slave1의 /etc/hosts가 자동으로 변경되기 때문이다. /etc/hosts에 link를 걸은 master의 정보가 자동으로 입력된다. master의 ip가 바뀌면 자동으로 변경된다.

더보기

127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2      master master

 

이것은 컨테이너의 /etc/hosts 파일이 host의 특정 경로에 마운트 되었기 때문이다. 컨테이너 내에서 df -h 명령어를 날려보면 확인할 수 있다. 

root@slave1:~/soft/apache/hadoop/hadoop-2.7.7# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          94G   51G   44G  54% /
tmpfs            64M     0   64M   0% /dev
tmpfs           4.9G     0  4.9G   0% /sys/fs/cgroup
shm              64M     0   64M   0% /dev/shm
/dev/sda3        94G   51G   44G  54% /etc/hosts
tmpfs           4.9G     0  4.9G   0% /proc/acpi
tmpfs           4.9G     0  4.9G   0% /proc/scsi
tmpfs           4.9G     0  4.9G   0% /sys/firmware

 

host의 어떤 경로일까? 아래 명령어로 확인해보자. 그러면 그 경로에 hosts파일이 있을 것이다. 이 파일은 컨테이너의 /etc/hosts 과 동일하다.

docker inspect -f "{{ .HostsPath }}" slave1

 

 

참고링크
 

Docker Network 구조(4) - container link 구조

Docker Network 구조 (4) - Container link 구조 [Contents] 1. Docker Network 구조(1) - docker0와 container network 구조 2. Docker Network 구조(2) - Container network 방식 4가지 3. Docker Network 구조..

bluese05.tistory.com

 

반응형

댓글