<aside> 💡 VM Router에 bridge 만들어서 통신하기
master | node1 | node2 | node3 | node4 | unode1 | unode2
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
systemctl restart network
# 기존 default gateway address 삭제
ip route del default
또는
ip route del default via [지울 Gateway IP]
# default gateway address 추가
route add default gw [게이트웨이주소] [장치명]
netstat -rn :네트워크 확인
# IP 확인
ifconfig
장점
기존에 포트포워딩으로 들어갈 때 같은포트를 쓰면 vm에서 포트포워딩하고 docker에서 포트포워딩을 해야했음
OS에 랜카드를 2개(NAT, 어댑터에 브릿지) 설정 → 한곳은 인터넷 한 곳은 직접연결!!
<aside> 💡 192.168.56.1 로 기존에 접속했던걸 192.168.0.5 로 바로 접속가능 !!
</aside>
<aside> 🚨 오류정리
# **IPv4 forwarding is disabled. 문제 해결**
vi /etc/sysctl.confnet.ipv4.
**# 맨아래에 추가**
ip_forward=1
systemctl restart docker
</aside>
<aside> 💡 바뀐 IP로 nfs서버를 이용해서 volume으로 데이터 공유하기
master
vi /etc/hosts
# node1, node2에 파일복사
scp /etc/hosts node1:/etc/hosts
scp /etc/hosts node2:/etc/hosts
vi /etc/sysconfig/selinux
# 방화벽 상태 확인
systemctl status firewalld
# 방화벽 끄기
systemctl disable firewalld --now
<aside> 🌐 nfs서버설정 [From. node1]
# 최상위에 shared directory 만듬
mkdir /shared
# shared directory 에 welcome.msg 파일 만듬
touch /shared/welcome.msg
# 권한설정
chmod 777 /shared
# 공유된 파일 확인
ls -l /shared
# 공유하는 파일 경로설정
vi /etc/exports
# 적용
exportfs -a
# 현재 공유된 파일보기
exportfs -v
# nfs 시스템 재시작
systemctl restart nfs
# 서버돌리고 있을땐
reload
</aside>
<aside> ⚙️ local서버설정 [From. master]
#nfs-utils 다운
yum install nfs-utils -y
# shared 폴더가 공유됨
showmount -e node1
# local 서버에 /mnt 폴더에 node1:/shared 폴더를 마운트
mount -t nfs node1:/shared /mnt
# 잘 mount 되었는지 확인
ls -l /mnt
# mount 풀기
umount -a
# mount 확인
df -h
# local에서 volume 만들기
docker volume create --name [volume이름] --driver local --opt type=[서버타입] --opt o=addr=[nfs서버주소],rw --opt device=:/[mount한 폴더]
docker volume create --name nfsvol --driver local --opt type=nfs --opt o=addr=**192.168.0.32**,rw --opt device=:/shared
# container 만들기
docker run -it --name con100 -v nfsvol:/data centos:7
# container 안에 들어가서 welcome.msg 확인
docker exec -it con100 bash
# 공유된 파일 확인
ls -l /data
<aside> 🚨 오류정리
**# Error response from daemon: error while mounting volume '/var/lib/docker/volumes/nfsvol/_data': failed to mount local volume: mount :/consharedvol:/var/lib/docker/volumes/nfsvol/_data, data: addr=10.0.2.12: no route to host
문제 해결
# nfsvol 삭제**
docker volume rm nfsvol
**# --opt o=addr=[nfs서버 IP주소] 다시확인**
docker volume create --name nfsvol --driver local --opt type=nfs --opt o=addr=**192.168.0.32**,rw --opt device=:/shared
**# volume 확인**
docker volume ls
</aside>
<aside> 💡
HTML 파일 volume 사용법
**# 홈 디렉토리 확인**
docker run -d --name myweb nginx
docker exec myweb find / -name "index.html"
**#** **-v [volume이름]:[nginx 홈디렉토리]**
docker run -d --name web80 -p 80:80 -v webvol:/usr/share/nginx/html/ nginx
</aside>
<aside> 🌐 실행중인 container volume 공유하기 :
# con-a 일반 alpine container 생성
docker run -itd --name con-a -v /root:/data alpine
# con-a와 volume을 공유한 con-b busybox container 생성
docker run -itd --name con-b --volumes-from con-a busybox
<aside> 🚨 con-a 사망
# con-b 확인
**docker exec -it con-b sh
cd data
ls -l**
</aside>
<aside> ✨ -v 여러개도 가능
mkdir test1 test2 test3
touch /test1/ha1.txt /test2/ha2.txt /test3/ha3.txt
# con100 -> con200 -> con300
docker run -itd --name con100 -v /test1:/data -v /test2:/secret -v /test3:/imsi alpine
docker exec -it con200 ls -l /test1
</aside>
</aside>
<aside> ➕ .sh파일 만들기
**vi rm-container.sh
# 실행 권한 주기
chmod +x rm_container.sh
./rm_container.sh 로 실행가능**
</aside>
<aside> 💡 Ansible로 container 관리하기
# Ansible 설치
yum install ansible -y
# ansible의 hosts파일 수정
vi /etc/ansible/hosts
# ping 확인
ansible servers -m ping
# ping 확인 비밀번호입력
ansible servers -m ping -k
# node1, node2 동시 container 만들기
ansible servers -m shell -a "docker run -itd --name con100 -v convol:/data alpine"
# node1, node2 container 확인
ansible servers -m shell -a "docker ps -a"
# volume data 확인
ansible servers -m shell -a "docker exec con100 ls -l /data"
# 환경변수룰 이용해서 운영
ansible servers -m shell -a "docker exec con100 touch /data/${HOSTNAME}-good.news"
# 확인
ansible servers -m shell -a "docker exec con100 ls -l /data"
</aside>
<aside> 💡 다른 docker host로 docker volume 이전하기
# convol volume 생성
docker volume create convo
# convol volume으로 busybox mycon100 container 생성
docker run --name mycon100 -it -v convol:/data busybox
# file_from_container.txt 생성
touch /data/file_from_container.txt
Ctrl+p, Ctrl+q
# convol 경로 복사
docker volume inspect convol
# 경로로 이동
cd /var/lib/docker/volumes/convol/_data
# 크기가 10m인 big.file 만들기
fallocate -l 100m big.file
# 현재 디렉토리에 있는 파일들을 backup.tar로 압축
tar cvf backup.tar .
cd
ls -l
# node2로 복사
scp backup.tar node2:/root/
</aside>
</aside>