반응형
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
참고링크
반응형
'기초 튼튼탄탄탄 > DevOps' 카테고리의 다른 글
[Azure] VM 자동중지 및 자동시작 (21) | 2020.12.26 |
---|---|
[docker] 도커 컨테이너 <-> 호스트 간 파일 복사 (2) | 2020.06.22 |
[docker] 실행중인 도커 container에 포트 추가하기 (2) | 2020.04.20 |
[ansible] How to set environment variables (4) | 2020.04.18 |
[ansible] fetch 모듈을 사용하여 파일 가져오기 (4) | 2020.04.17 |
댓글