1) 볼륨컨테이너(amc) 만들고 테스트 파일을 생성한다.
docker run -it -v /DATA --name amc busybox /bin/sh
echo "test data by ...con" > /DATA/mmc.txt
exit
2) 1회성(--rm) 더미 컨테이너를 이용해 볼륨을 압축하고 더미컨테이너는 없앤다.
docker run --rm --volumes-from amc -v $(pwd):/back busybox tar cvf /back/backup.tar /DATA
3) 볼륨컨테이너를 일단 삭제한다.
docker rm amc
4) 복원할 신규 컨테이너(emc)를 만든다.
docker run -it -d -v /MYDATA --name emc busybox
5) 1회성 더미 컨테이너로 복원한다. (--strip-components는 불필요한 절대경로 벗겨내기) >> TAR명령 참조
docker run --rm --volumes-from emc -v $(pwd):/tempdir busybox tar xvf /tempdir/backup.tar -C /MYDATA --strip-components 1
※ 컨테이너 생성 (데이터 컨테이너 또는 그외 운영용 컨테이너)
$ docker run -it -v /DATA --name dcv001 busybox /bin/sh
dcv001 이라는 컨테이너와 그안에 볼륨디렉토리를 /DATA를 생성한다.
아래는 테스트용 데이터인 mmc.txt파일을 /DATA에 생성하고, 컨테이너를 빠져나온다.
컨테이너는 실행중 또는 정지중이든 상관 없다.
# echo "test data by ...con" > /DATA/mmc.txt
# exit
$ docker run --rm --volumes-from dcv001 -v $(pwd):/back busybox tar cvf /back/backup.tar /DATA
$ docker run --rm
컨테이너를 생성하는데 종료시 컨테이너를 삭제한다. 즉, 임시용 컨테이너
--volumes-from dcv001
dcv001 컨테이너를 임시컨테이너의 볼륨으로 연동시킨다.
-v $(pwd):/back
호스트머신의 현재 디렉토리를 임시컨테이너의 /back 디렉토리와 연동시킨다.
busybox tar cvf /back/backup.tar /DATA
베이스OS를 busybox로 사용해 tar명령어를 실행한다.
이는 임시 컨테이너 안에서 tar가 실행되는 것으로 /back폴더안에 backup.tar로 /DATA를 압축하라는 명령어이다
/DATA는 dcv001컨테이너에 연동된것이고, /back는 호스트머신의 현재폴더이므로, dcv001컨테이너의 /DATA디렉토리를 호스트머신의 현재 디렉토리에 backup.tar 파일로 압축된다.
※ 복원할 컨테이너를 선택한다. (임시로 생성)
$ docker run -it -d -v /MYDATA --name emc001 centos
※ 데이터를 복원한다.
복원대상 컨테이너는 실행중이든 정지중이든 상관없이 실행된다.
$ docker run --rm --volumes-from emc001 -v $(pwd):/tempdir busybox tar xvf /tempdir/backup.tar -C /MYDATA
$ docker run --rm --volumes-from emc001
끝나면 사라지는 임시컨테이너를 생성하는데 컨테이너 emc001의 볼륨을 연동해서 생성한다.
-v $(pwd):/tempdir
호스트머신의 현재 디렉토리를 임시컨테이너의 /tempdir에 매핑시킨다.
tar xvf /tempdir/backup.tar -C /MYDATA
압축을 해제하는데 /tempdir(호스트의 현재디렉토리) 폴더의 backup.tar을 압축해제하는데 임시컨테이너의 /MYDATA에 압축을 해제한다. /MYDATA는 복원대상 컨테이너와 동일