도커(Docker) Volume이란?
▪도커(Docker)는 container 안의 파일 변경 사항을 UnionFS을 통해 관리
▪UnionFS은 이미지 layer와 write layer를 합쳐 container의 데이터를 관리하는 데, container 삭제 시 write layer도 삭제 됨
-> write layer에는 이미지 layer의 데이터에서 변경된 사항을 저장하므로 write layer 삭제 시 데이터가 사라짐(데이터 휘발성)
▪container의 데이터 휘발성 때문에 데이터를 container가 아닌 호스트에 저장할 때,
▪또는 container끼리 데이터를 공유할 때 Volume를 사용
도커(Docker) Volume 사용법 1
▪이 방법은 container의 데이터를 호스트에 유지할 때 사용할 수 있음
▪하지만 Volume이 /var/lib/docker/volumes/에 생기며 이름이 docker에서 자동으로 생성한 hash값을 사용
▪container가 삭제되면 데이터를 찾기 힘들기 때문에 추천하지 않음
$ docker run -it -v /data centos /bin/bash
$ docker run -it -v (컨테이너의 volume 디렉토리) (이미지) /bin/bash
이를 통해 컨테이너를 생성 시
/var/lib/docker/volumes에 hash값을 가지는 디렉토리가 생성되고, _data 디렉토리 안에 컨테이너의 /data 디렉토리가 매핑
즉, 컨테이너에서 /data 디렉토리에 파일을 생성/삭제/변경 등의 작업을 하게되면, 호스트의 /var/lib/docker/volumes/xxxx 디렉토리에 같은 내용이 있음
도커(Docker) Volume 사용법 2 - 1
▪이 방법을 사용하면 호스트의 특정 디렉토리(or 파일)을 container와 매핑
▪Volume의 위치를 사용자가 정할 수 있으므로 데이터를 찾기 쉬움
$ docker run -it -v /root/data:/data centos /bin/bash
$ docker run -it -v (호스트 디렉토리):(컨테이너의 volume 디렉토리) (이미지) /bin/bash
위의 명령어는 호스트의 /root/data 디렉토리를 container의 volume 디렉토리로 사용할 수 있도록 한다.
호스트에서 /root/data 디렉토리에 파일을 생성하게 된다면, container에서도 파일이 존재하고 사용할 수 있다.
반대의 경우(container에서 파일을 생성)에도 호스트에서 파일이 존재
도커(Docker) Volume 사용법 2 - 1
▪여러개의 container에서 파일을 공유하고자 할때에도 사용 가능
▪호스트의 같은 디렉토리(파일)을 -v옵션으로 Volume로 지정하면 같은 디렉토리(파일)를 공유
$ docker run -it --name container1 -v /root/data:/data centos /bin/bash
$ docker run -it --name container2 -v /root/data:/data centos /bin/bash
container1의 /data 디렉토리와 container2의 /data 디렉토리를 호스트의 /root/data 디렉토리와 매핑 함으로써
각 각의 container에서 호스트의 디렉토리(파일)을 공유 가능
도커(Docker) Volume 사용법 3 (파일 하나를 컨테이너에 연결)
▪디렉토리 뿐만 아니라 호스트의 파일 하나도 container와 매핑 가능
$ docker run -it -v /root/test.txt:/root/test.txt centos /bin/bash
$ docker run -it -v (호스트 파일):(컨테이너의 파일) centos /bin/bash
'Docker' 카테고리의 다른 글
도커(Docker)의 핵심기술 (4) | 2019.05.26 |
---|---|
도커(Docker) storage driver 변경 (0) | 2018.08.23 |
도커(Docker) 사용법 (0) | 2018.08.21 |
도커(Docker) 설치 (1) | 2018.08.20 |