SW Engineering/DevOps, SRE

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

SungWookKang 2019. 3. 26. 03:50
반응형

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, 도커 볼륨, 도커 명령어, 도커 파일 공유, 도커 호스트 디렉터리 공유

반응형