목차
🤔 Docker Volume 이 왜 필요한가?
컨테이너내 데이터는 휘발성입니다.
Docker 와 컨테이너 기술이 막 떠오를때 PC 에 깔아서 개발을 하고 있는데 Docker 내에서 설정한 값들이 재실행할때 마다 초기화 되는 현상들을 겪었습니다. 당시 너무 화가나서 여러 책들을 읽어봤는데 생각해보니 컨테이너의 특성을 제대로 이해하지 못해 생기는 문제였었습니다.
컨테이너는 기본적으로 휘발성 이기 때문에 컨테이너가 종료되거나 삭제되면 내부 데이터도 함께 사라집니다. 쉽게 생각해서 격리돼 있는 컨테이너의 특성상 컨테이너가 생성한 모든 파일들은 결국 컨테이너내에서만 존재하고 컨테이너 삭제시에는 컨테이너와 함께 데이터도 삭제가 되는 것입니다.
Docker 에서는 Docker Volume 을 통해 컨테이너 내에서의 데이터 휘발성 문제를 해결하고 영구적으로 저장할 수 있는 방법을 제공합니다.
✅ Docker Volume 이란?
Docker Volume 은 컨테이너 외부 에 데이터를 저장할 수 있는 공간입니다. 컨테이너와는 별도로 존재하기 때문에, 컨테이너를 삭제하더라도 데이터는 유지되며 데이터 영속성이 보장됩니다.
또한, Docker Volume 은 컨테이너와 호스트 시스템 간에 데이터를 공유하거나 컨테이너 간 데이터를 공유할 때 사용할 수 있습니다.
호스트 PC 에서 Docker Volume 접근
호스트에서 Docker Volume 으로 접근하기 위한 경로는 운영체제 마다 상이합니다. 일단, Linux 환경에서는 Docker Volume 이 기본적으로 /var/lib/docker/volumes
경로 아래에 저장되며, Volume 이름별로 /var/lib/docker/volumes/<volume_name>/_data
에 데이터가 생성돼 해당 경로로 이동하면 접근이 가능합니다. 하지만 윈도우나 맥 환경에서 가상화된 Linux 환경을 띄우고 그 안에서 Docker 를 운영하기 때문에 접근이 어렵습니다.
✅ Docker Volume 사용
1 Volume 생성
Docker Volume은 다음과 같은 명령어로 생성할 수 있습니다. 생성된 Volume은 Docker 호스트의 특정 디렉토리에 저장되며, 이를 통해 데이터가 외부에 안전하게 보관됩니다.
docker volume create my_volume |
3.2 컨테이너에 Volume 마운트하기
생성한 Volume을 컨테이너에 마운트하는 방법은 다음과 같습니다.
docker run -d \ |
3 Volume 리스트 및 삭제
현재 생성된 Volume 목록을 확인하려면 다음 명령어를 사용합니다.
docker volume ls |
Docker Volume 을 명시적으로 생성하지 않을 경우 생성된 Volume 목록 확인시 해시된 이름으로 보여져 파악하기가 어렵습니다.
DRIVER VOLUME NAME |
사용하지 않는 Volume은 다음과 같이 삭제할 수 있습니다.
docker volume rm my_volume |
전체 사용하지 않는 Volume을 한꺼번에 삭제하려면 prune
명령어를 사용하면 됩니다.
docker volume prune |
✅ Docker Volume 사용 예제
컨테이너로 구성된 데이터 베이스의 데이터를 영속적으로 저장하기 위해 Docker Volume 을 이용합니다. 해당 명령어로 MySQL 데이터 베이스를 실행하게 되면 실행되는 컨테이너는 다를지라도 항상 같은 Volume 을 바라보게 됩니다.
docker run -d \ |