MEMO

도커 데이터볼륨이란 ? (데이터 볼륨 컨테이너) 본문

Docker

도커 데이터볼륨이란 ? (데이터 볼륨 컨테이너)

by_dev 2019. 11. 20. 15:58

데이터 볼륨

도커 컨테이너가 실행 중에 작성 혹은 수정된 파일은 호스트 쪽 파일 시스템에 마운트되지 않는 한 컨테이너가 파기될 때 호스에서 함께 삭제 된다. 컨테이너를 사용해서 애플리케이션을 운영하다 보면 새로운 버전의 컨테이너가 배포돼더라도 이전 버전의 컨테이너에서 사용하던 파일들을 그대로 사용할 수 있어야 한다. 이런 경우에 사용되는 것이 데이터 볼륨 이다.

 

데이터 볼륨 생성

데이터 볼륨을 생성하려면 docker container run 명령에 -v 옵션을 사용하면 된다.

docker container run [options] -v 호스트_디렉터리:컨테이너_디렉터리 리포지토리명[:태그] [명령] [명령인자]

 

데이터 볼륨 컨테이너

데이터 볼륨 컨테이너를 사용하는 경우는 데이터 저장을 컨테이너를 통해 하는것을 말한다. --volumes-from [컨테이너명] 옵션을 이용해 데이터를 저장할 컨테이너를 설정할 수 있다. 데이터를 저장할 데이터 볼륨 컨테이너에 -v 를 이용한 데이터 볼륨 설정이 되어 있다면, --volumes-from 을 지정해 생성한 컨테이너1 에서 데이터를 저장할 데이터 볼륨 컨테이너에 데이터를 저장하게되고, 데이터 볼륨 컨테이너는 로컬호스트에 저장하게 되면서 컨테이너와 로컬호스트 모두 저장되는것을 확인할 수 있다.

docker container run [options] --volumes-from 컨테이너명 이미지[:태그]

 

 

데이터 볼륨에 MySQL 데이터 저장

데이터 볼륨 컨테이너 역할을 할 이미지를 생성하기 위해 Dockerfile 을 작성후 빌드한다.

FROM busybox #경량운영체제

VOLUME /var/lib/mysql

CMD ["bin/true"]

생성된 이미지를 이용해 컨테이너를 실행하여 볼륨 컨테이너를 생성한다. mysql-volume 컨테이너의 경우 CMD 셸을 실행하고 바로 종료된다.

docker image build -t mysql-volume
docker container run -d --name mysql-volume mysql-volume:latest

이제 생성된 mysql-volume 을 데이터 볼륨 컨테이너로 가지는 mysql 컨테이너를 생성한다.

docker container run -d --rm --name mysql \
-e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" \
--volumes-from mysql-volume \ # --volumes-from 을 이용해 mysql-volume 컨테이너와 연결
mysql:latest

 

이렇게 생성한 mysql 을 지우고 새로운 new-mysql 컨테이너를 생성해 --volumes-from 에 연결해 주면 이전에 저장된 데이터들이 그대로 연결되는것을 확인할 수 있다. 이렇게 데이터 볼륨 컨테이너를 생성해 퍼시스턴스 데이터를 관리할 수 있다.

Comments