Linux Mount 를 이용한 Docker 이전 테스트 2 (볼륨 복원)
.https://hit-sand.tistory.com/48
Linux Mount를 이용한 Docker 이전 테스트 (redmine, jenkins 복원)
인스턴스 생성 후 30G 볼륨을 mount 후 docker 의 root directory를 mount 한 해당 볼륨으로 지정한 후 백업하는 방법을 알아보자. EC2 생성 테스트용 인스턴스 생성 30G 볼륨 생성 (vol-LAB) vol-LAB 볼륨 lab-test1
hit-sand.tistory.com
mount 볼륨에 docker root directory 를 두고 구축한 docker 환경을 mount 볼륨을 이용해서 이전해보자!
나의 계획
1. 기존 서버 (old_server), 새로운 서버 (new_server) 라고 한다.
2. new_server EC2를 만든다. (스토리지 10G, t3.small)
3. old_server에 mount 된 50G 볼륨(vol_LAB)을 언마운트한다.
4. new_server에 vol_LAB을 마운트 시킨다.
5. new_server에 docker를 설치한다.
6. new_server의 Docker Root Directory를 vol_LAB으로 변경한다.
-> 이 단계가 될지 미지수이다. docker root directory를 변경했을 때 덮어써질지, 기존 디스크가 유지될지, 볼륨과 컨테이너는 유지가 될지 궁금하다!!!
7. 모든 단계가 진행 된다면, docker의 Root Directory만 잘 가지고 있다면 복원이 가능하다.
하나라도 진행이 안된다면, Docker Root Directory를 이용한 docker 이전은 불가하기 때문에, 백업을 잘 해야한다.
new_server EC2 생성
- 인스턴스 유형 : t3.small (메모리 2GB 이상이 필요함)
- 스토리지 : 10G (gp3)
- ami : Amazon Linux 2023
old_server 볼륨 언마운트
디스크 언마운트
docker의 Root Directory로 사용하고 있어서 docker를 먼저 종료해야 할 것 같다.
docker socket이 실행중이어서 docker 중지가 안됨
# systemctl disable docker.socket // docker socket 비활성화
# systemctl stop docker.socket // docker socket 중지
# systemctl stop docker.service // docker 서비스 중지
# systemctl status docker // docker 상태 확인
다시 언마운트
볼륨 언마운트가 잘 됐다.
볼륨 분리
AWS > 볼륨 > vol-LAB 볼륨 분리
인스턴스에서 스토리지 확인
new_server 볼륨 마운트
볼륨 연결
볼륨 > vol-LAB 우클릭 > 볼륨 연결
이럴수가.. 가용영역이 달라서 볼륨 연결이 안된다.. EC2를 볼륨의 가용영역에 맞춰서 다시 생성 해준다.
EC2 생성시 서브넷을 볼륨과 동일한 가용 영역으로 선택해준다.
짜잔!
볼륨 연결
인스턴스에서 확인
볼륨 마운트
디스크 확인
요상한 이름으로 디스크가 붙었다.
파일 타입 확인
xfs 파일 확인
/docker 디렉토리 생성
디스크 mount
/docker에 34G 데이터 확인
디렉토리 내용 확인
자동 마운트 설정
UUID 확인
/etc/fstab 파일에 UUID 추가
재마운트
Docker 설치
Docker 설치
# dnf install docker -y
Docker 버전 확인
docker.service Restart=no 설정
# vi /lib/systemd/system/docker.service
Docker 실행
docker-compose 설치
// docker-compose 최신 버전 설치
# curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
// 실행 권한 부여
# chmod +x /usr/local/bin/docker-compose
// link 생성
# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
// version 확인
# docker-compose -v
Docker Root Directory 변경
docker container, image, volume 확인
/docker 디렉토리 데이터 확인
containers, overlay2 의 용량이 많으므로 이 부분을 중점적으로 보면 될 것 같다.
Docker Root Directory 변경
docker default root directory 확인
/etc/docker/daemon.json 파일 수정
docker 재시작 및 변경 root directory 확인
/docker 디렉토리 확인
containers, overlay2 의 용량이 동일함
container, image, volume 확인
대박. 다 들어있다.
redmine, jenkins 접속 확인
docker root directory를 변경하고 docker 재시작을 했더니 container를 올렸던 docker-compose.yml 에서 restart:always 옵션으로 인해 모든 container가 재시작 됨.
완벽하게 복원됨 ^^
다행이도 docker root directory를 변경했을 때 해당 위치에 있는 데이터를 덮어쓰지 않고 우선 사용하는 것으로 보여진다. vol-LAB만 잘 유지하면 EC2에 문제가 생겨도 손쉽게 복구할 수 있을 것으로 보여진다.