Docker Volume (도커 볼륨)

-         도커 볼륨을 이용해서 데이터 공유하기

 

·         Version : Docker

 

Docker 컨테이너가 삭제(또는 재시작)되면 컨테이너의 변경된 데이터가 함께 삭제된다.  데이터를 영속적으로 보존하기위해 volume  옵션을 사용하여 호스트 저장소를 마운트하여 사용한다.

·         Docker Volume (호스트 볼륨 공유) : http://sqlmvp.kr/221449590567

·         Docker Volume (컨테이너 볼륨 공유) : http://sqlmvp.kr/221451346970

 

이번 포스트에서는 도커 자체에서 제공하는 볼륨 기능을 활용하는 방법에 대해서 알아본다. 볼륨을 생성할 플러그인을 사용하여 다양한 종류의 스토리지 백엔드를 있지만 이번 포스트에서는 기본적인 도커 엔진에서 제공되는 local 사용한다.

 

 도커 볼륨을 생성하는 명령어는docker volume create 사용한다. 생성된 볼륨을 확인하는 방법은 docker volume ls 이다.

docker volume create –name my-vol

docker volume ls

 


 

도커 볼륨은 실제 호스트의 어느 경로에 만들어 졌는지 확인하는 방법은 docker volume inspect 명령을 사용한다.

docker volume inspect my-vol

 

 

도커 볼륨을 삭제하는 명령어는docker volume rm 이다. 참고로 컨테이너를 삭제해도 볼륨은 자동으로 삭제되지 않는다.

docker volume rm my-vol

 

사용되지 않는 모든 볼륨을 삭제하려면 아래 명령을 실행 한다.

docker volume prune

 

도커 볼륨을 사용하는 컨테이너를 생성하기 위해서는 [볼륨이름]:[컨테이너 공유 디렉터리]  순으로 명령을 입력한다. 아래 예시는 my-vol이라는 볼륨을 컨테이너의 /app 디렉터리에 마운트 한다. /app 디렉터리에 파일을 쓰면 해당 파일이 볼륨에 저장된다.

docker run -d --name devtest -v my-vol:/app nginx:latest

 

도커 볼륨은 여러 컨테이너에서 사용할 있으므로 아래 그림처럼 파일을 쉐어하여 머신간에 데이터를 공유할 있다.

 


만약 여러 컨테이너가 있고 여러 볼륨이 있을 해당 컨테이너가 어떤 볼륨을 사용하는지 확인하는 명령은 docker container inspect 사용한다. 명령은 컨테이너의 상세한 정보를 나타낸다.

docker container inspect devtest

 

 

컨테이너가 아닌 외부에 데이터를 저장하고 컨테이너는 데이터로 동작하도록 설계하는 것을 스테이트리스(stateless)라고 하며 컨테이너 내부에 데이터를 저장하고 상태가 있는 경우 스테이트풀((stateful)하다고 한다.

 

 

[참고자료]

https://docs.docker.com/storage/volumes/

 

 

 

2019-02-02 / Sungwook Kang / http://sqlmvp.kr

 

Docker, docker volume, 도커 볼륨, 도커 명령어, 도커 파일 공유, 도커 호스트 디렉터리 공유

+ Recent posts