Container Link
컨테이너 내보의 /etc/hosts 파일을 설정하여 IP가 변경되어도 통신이 유지되도록 하는 기능
1. Container Link 실습 전 Docker 설치
Docker 설치 관련
31. CentOS7 : Cloud & Docker
1. Cloud 언제 어디서나 어떠한 단말을 가지고서라도 인터넷 접속만 가능하다면 사용한만큼 비용을 지불하고 원하는 IT 자원을 이용하는 것 설치할 필요 없음 통합된 환경 제공 사용한 만큼 비용
mh-itstudy.tistory.com
2. Container Link 실습
2.1. Container Link
※ c1, c2 컨테이너 생성
# docker run -itd --name c1 centos:7
# docker run -itd --name c2 centos:7
※ c1, c2 컨테이너가 링크하여 c3 컨테이너 생성

※ 생성된 컨테이너 확인

※ c3 컨테이너의 /etc/hosts 파일 확인
→ c1, c2 컨테이너가 링크되어 있는 것을 확인할 수 있음

※ c3 컨테이너에서 c1, c2 컨테이너로 통신 테스트

2.2. Container Link - 별칭 등록
※ c4 컨테이너 구동 - c1, c2, c3 컨테이너 링크 및 별칭 등록

※ c4 컨테이너의 /etc/hosts 파일 설정 내용 확인

※ 설정한 별칭 이용하여 통신 테스트 - mhan1(c1), mhan2(c2), mhan3(c3)

2.3. Continer Link - IP 변경 후 통신 테스트
※ 컨테이너 삭제
# docker rm $(docker ps -aq)
※ c1 컨테이너 구동

※ c2 컨테이너 구동 - c1 링크

Stop vs Pause
stop: 자원 해제/정상 종료
pause: 작업 멈춤
※ IP 변경을 위해 c1 컨테이너 stop 및 확인


※ c1 컨테이너 상세 정보 출력 - 네트워크 할당 해제 확인


※ c3 컨테이너 구동

※ c3 컨테이너 상세 정보 출력 - 기존에 c1이 사용 중이던 IP를 c3가 할당 받음


※ 멈춰있던 c1 컨테이너 재 구동

※ c2 컨테이너에서 c1 컨테이너로 통신 테스트 (IP 변경 됨)

3. 실습 내용 스크립트로 작성하여 자동화 환경 구성
위에서 실습했던 내용을 쉘 스크립트로 작성하여 자동화 되도록 구성해 보자
※ dockerLink.sh 작성

#! /bin/bash
docker run -itd --name c1 centos:7
docker run -itd --name c2 --link c1:mhan1 centos:7
echo "===============$(date)===============" >> linkRes.txt
echo "--------C1 NETWORK INFO--------" >> linkRes.txt
docker inspect c1 | sed -n '187,203p' >> linkRes.txt
echo -e "\n--------Ping Test 1--------" >> linkRes.txt
docker exec c2 ping -c 4 c1
docker exec c2 ping -c 4 c1 >> linkRes.txt
docker stop c1
docker ps -a
echo -e "\n--------STOP C1 NETWORK INFO--------" >> linkRes.txt
docker inspect c1 | sed -n '187,203p' >> linkRes.txt
echo -e "\n--------C3 NETWORK INFO--------" >> linkRes.txt
docker run -itd --name c3 centos:7
docker inspect c3 | sed -n '187,203p' >> linkRes.txt
docker start c1
echo -e "\n--------Docker Process--------" >> linkRes.txt
docker ps
docker ps >> linkRes.txt
echo -e "\n--------CHANGE C1 NETWORK INFO--------" >> linkRes.txt
docker inspect c1 | sed -n '187,203p' >> linkRes.txt
echo -e "\n--------Ping Test 2--------" >> linkRes.txt
docker exec c2 ping -c 4 c1
docker exec c2 ping -c 4 c1 >> linkRes.txt
echo -e "\n\n" >> linkRes.txt
docker rm -f $(docker ps -aq)
※ dockerLink.sh 파일에 실행 권한 부여

※ dockerLink.sh 파일 실행
# ./dockerLink.sh
※ dockerLink.sh 파일 실행으로 인해 생성된 linkRes.txt 파일 내용 확인 (로그)

===============2022. 06. 01. (수) 11:04:01 KST=============== --------C1 NETWORK INFO-------- "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "b7f3be54d76d06b295e7120971f61041c5b5b9dc585924efe43622ad28fca757", "EndpointID": "67e16b9c9cbfb36a0d0f1840af350c44ff88e7eb4c4b79e4d574511676d93314", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:02", "DriverOpts": null } } --------Ping Test 1-------- PING mhan1 (172.17.0.2) 56(84) bytes of data. 64 bytes from mhan1 (172.17.0.2): icmp_seq=1 ttl=64 time=0.059 ms 64 bytes from mhan1 (172.17.0.2): icmp_seq=2 ttl=64 time=0.052 ms 64 bytes from mhan1 (172.17.0.2): icmp_seq=3 ttl=64 time=0.051 ms 64 bytes from mhan1 (172.17.0.2): icmp_seq=4 ttl=64 time=0.053 ms --- mhan1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3000ms rtt min/avg/max/mdev = 0.051/0.053/0.059/0.009 ms --------STOP C1 NETWORK INFO-------- "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "b7f3be54d76d06b295e7120971f61041c5b5b9dc585924efe43622ad28fca757", "EndpointID": "", "Gateway": "", "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "", "DriverOpts": null } } --------C3 NETWORK INFO-------- "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "b7f3be54d76d06b295e7120971f61041c5b5b9dc585924efe43622ad28fca757", "EndpointID": "cef36e920291adf1ed19f0ce5cc0880464e29881f2d2adb92c3a20c1f89a927a", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:02", "DriverOpts": null } } --------Docker Process-------- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f9c4a1c9d651 centos:7 "/bin/bash" 1 second ago Up Less than a second c3 e066de841682 centos:7 "/bin/bash" 19 seconds ago Up 18 seconds c2 5e7ea128a830 centos:7 "/bin/bash" 21 seconds ago Up Less than a second c1 --------CHANGE C1 NETWORK INFO-------- "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "b7f3be54d76d06b295e7120971f61041c5b5b9dc585924efe43622ad28fca757", "EndpointID": "ca91462c338789c213c6c4250f97eaade18e03d23f521bb06a61b75c615e9340", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.4", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:04", "DriverOpts": null } } --------Ping Test 2-------- PING mhan1 (172.17.0.4) 56(84) bytes of data. 64 bytes from mhan1 (172.17.0.4): icmp_seq=1 ttl=64 time=0.027 ms 64 bytes from mhan1 (172.17.0.4): icmp_seq=2 ttl=64 time=0.068 ms 64 bytes from mhan1 (172.17.0.4): icmp_seq=3 ttl=64 time=0.143 ms 64 bytes from mhan1 (172.17.0.4): icmp_seq=4 ttl=64 time=0.195 ms --- mhan1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3003ms rtt min/avg/max/mdev = 0.027/0.108/0.195/0.065 ms |
'Linux > Docker' 카테고리의 다른 글
37. CentOS7 : Docker - 컨테이너로 Wordpress 구성 (0) | 2022.06.07 |
---|---|
36. CentOS7 : Docker - MySql (0) | 2022.06.07 |
34. CentOS7 : Docker httpd, nginx 컨테이너 생성 - 스크립트로 처리하여 자동화 환경 구성 (0) | 2022.06.07 |
33. CentOS7 : Container를 이용하여 Load Balancer 환경 구성 (0) | 2022.06.07 |
32. CentOS7 : Docker Network (0) | 2022.06.07 |