본문으로 바로가기

Docker volume

category Docker 2021. 6. 2. 01:13
반응형

컨테이너는 여러개의 레이어로 구성 되어있다. 컨테이너 레이어의 데이터는 컨테이너 를 삭제할 경우 레이어까지 함께 삭제되어 복구가 불가능 하기 때문에. 따로 볼륨을 구성해서 컨테이너가 삭제 되더라도, 그 데이터는 볼륨안에 따로 저장해놓는 것이 바람직 하다. 볼륨을 호스트 pc에 생성하고 그것을 공유한다거나, 하나의 볼륨 컨테이너를 만들고 그것들을 공유하거나, docker 자체에서 제공하는 볼륨 기능을 활용하는 기능이 있다.

 

볼륨을 활용하는 방법에는 

(1) 호스트 볼륨 공유

호스트와 저장장소를 공유한다.

사용법 : -v 옵션

docker run -it --name [컨테이너이름] -v [호스트pc 공유 디렉토리]:[생성할 컨테이너에서 마운트할 디렉토리(생성)] [이미지:버전] 

ex) centos7 컨테이너를 만들고 호스트 pc의 /vol1 디렉토리를 호스트pc와 공유하는 볼륨으로 지정한다. 컨테이너 생성시 컨테이너 에서도 vol1이라는 디렉토리를 공유 디렉토리로 사용.

새롭게 컨테이너를 생성하고 it 옵션을 사용해 bash로 실행했다. vol1이라는 디렉토리가 자동으로 생성 됐다.

컨테이너 볼륨 디렉토리인 vol1에 test라는 파일을 생성해 주었고, 그대로 컨테이너를 종료한 후 호스트 pc의 볼륨 디렉토리인 vol1에서 ls-li 옵션을 사용해 파일의 inode를 확인 하였다. 컨테이너에서 확인한 파일과 같은 inode의 같은 파일인 것이 확인 됐다.

(2) 볼륨 컨테이너

사용법 : -v 옵션으로 볼륨을 사용하여 생성한 컨테이너의 볼륨을 다른 컨테이너와 공유

--volumes-from 옵션 사용

ex) docker run -it --name [컨테이너 이름] --volumes-from [-v 옵션 사용하여 생성한 컨테이너]  [이미지] bash

-1. -v옵션을 사용해 볼륨을 사용하는 컨테이너 생성

docker run -it --name sharevol2 -v /sharevol centos:7 bash  # 최상위 디렉토리에 sharevol 디렉토리 생성

도커 볼륨 리스트에 하나가 늘어났다.

-2. sharevol2 컨테이너의 볼륨을 공유 하는 컨테이너 생성

docker run -it --name test2 --volumes-from sharevol2 centos:7 bash

test2 컨테이너에 sharevol 디렉토리가 생긴것을 알 수 있다. 저 디렉토리에 test란 파일을 생성해보고 inode를 확인

-3. sharevol2 컨테이너 에서 확인.

inode 번호 일치.

확인 끝

 

(3) 도커가 관리하는 볼륨

docker volume 명령어를 이용하여, 도커 자체에서 제공하는 볼륨 기능을 활용해 데이터를 보존 가능.

-1 docker volume create --name [볼륨이름]  생성 && docker volume ls로 확인

이제 생성한 저 볼륨을 사용해서 컨테이너 생성 및 실행

docker run -it --name [컨테이너이름]  -v [볼륨이름]:[컨테이너에서 마운트할 디렉토리] [이미지:태그] bash

test3의 볼륨 디렉토리는 /test이며 kkk 라는 파일 생성 inode 확인

똑같이 volume을 myvolume으로 지정해서 컨테이너 하나 생성. test4로

test3의 컨테이너의 file과 똑같은 inode이다.

이제 저 두 컨테이너를 삭제하고, myvolume을 사용하는 새로운 컨테이너를 생성한다면 저 파일은 남아있을까?를 확인해본다.

rm -f 명령어를 사용해 test3,4 컨테이너 삭제

볼륨을 사용하지 않았을 경우 컨테이너를 삭제할시 그 컨테이너가 갖고있는 데이터또한 전부 삭제가 되지만 test3,4는 d내가 생성한 myvolume을 사용하였기 때문에 내가 생성해준 myvolume 안에는 저 두 컨테이너가 삭제 됐더라도. 저장했던 kkk파일이 그대로 있을것이다. 새로운 컨테이너 test5 의 볼륨을 myvolume으로 지정해서 생성해주고 그 디렉토리 안에 kkk 파일이 그대로 있는지 확인해 보자.

확인이 완료 됐다. 컨테이너의 볼륨 옵션을 활용해서 컨테이너끼리 자료 공유 및, 데이터 보관을 잘 할수 있도록 더더욱 좋게 활용하는것을 생각해 봐야겟다.

반응형

'Docker' 카테고리의 다른 글

Docker Swarm  (0) 2021.06.02
Docker 컨테이너 관리 명령어 (이론)  (0) 2021.06.01
Docker 컨테이너 기본조작 명령어  (0) 2021.05.31
Docker Repositry 운영  (0) 2021.05.30
컨테이너 보관 창고 - 이론  (0) 2021.05.30