Docker 볼륨과 데이터 관리
KUKJIN LEE • 3개월 전 작성
Docker 볼륨은 데이터를 효율적으로 관리할 수 있는 방법을 제공합니다.
1. Docker 볼륨이란?
Docker 볼륨은 Docker 컨테이너 외부에서 데이터를 저장하고 공유할 수 있는 메커니즘입니다. 이는 컨테이너가 삭제되더라도 데이터가 유지될 수 있도록 도와줍니다.
2. Docker 볼륨의 종류
-
명명된 볼륨(Named Volumes): Docker가 관리하는 볼륨으로, 사용자가 직접 지정한 이름으로 생성됩니다.
-
바인드 마운트(Bind Mounts): 호스트의 특정 디렉토리를 컨테이너에 마운트합니다. 유연성이 뛰어나지만 관리가 까다로울 수 있습니다.
-
템프FS 볼륨(TempFS Volumes): 메모리에 저장되며, 주로 임시 데이터 저장에 사용됩니다.
3. Docker 볼륨 생성 및 사용법
Docker 볼륨을 생성하고 사용하는 방법은 간단합니다. 다음은 기본적인 사용법입니다.
-
볼륨 생성
docker volume create my_volume
-
볼륨을 컨테이너에 마운트
docker run -d --name my_container -v my_volume:/app/data my_image
-
볼륨 확인
docker volume ls
-
볼륨 삭제
docker volume rm my_volume
4. Docker 볼륨을 활용한 데이터 관리
Docker 볼륨은 다음과 같은 이점을 제공합니다:
-
데이터 지속성: 컨테이너가 삭제되어도 데이터는 유지됩니다.
-
컨테이너 간 데이터 공유: 여러 컨테이너에서 동일한 데이터를 쉽게 공유할 수 있습니다.
-
백업 및 복원 용이성: 볼륨을 쉽게 백업하고 복원할 수 있습니다.
가장 이해하기 힘들었던 Docker 볼륨과 데이터베이스의 관계에 대한 설명입니다.
Docker 볼륨은 MySQL, MongoDB 등 데이터베이스의 데이터 파일을 안전하게 저장할 때 사용됩니다. Docker 볼륨을 사용해 데이터베이스의 데이터를 컨테이너 외부의 안전한 저장소에 보관할 수 있습니다. 이를 통해 컨테이너가 삭제되거나 재시작되어도 데이터는 유지됩니다.
예시: MySQL 컨테이너에서의 데이터 저장
-
볼륨 생성
docker volume create mysql_data
-
MySQL 컨테이너 실행
docker run -d --name mysql_with_volume -e MYSQL_ROOT_PASSWORD=my-secret-pw -v mysql_data:/var/lib/mysql mysql:latest
mysql_data
볼륨은 MySQL 데이터가 저장되는 /var/lib/mysql
디렉토리에 연결됩니다. MySQL 데이터는 컨테이너 내부와 mysql_data
볼륨에 모두 저장됩니다.
-
컨테이너 삭제 후 재시작
docker rm -f mysql_with_volume
docker run -d --name mysql_with_volume -e MYSQL_ROOT_PASSWORD=my-secret-pw -v mysql_data:/var/lib/mysql mysql:latest
컨테이너를 삭제하고 다시 실행해도 mysql_data
볼륨에 저장된 데이터는 유지됩니다.
즉 Docker 볼륨은 데이터를 백업 드라이브처럼 저장하여 컨테이너가 삭제되더라도 데이터를 안전하게 유지할 수 있습니다. 이를 통해 MySQL
, MongoDB
와 같은 데이터베이스 데이터를 Docker 볼륨에도 저장하면서 데이터의 지속성을 보장할 수 있습니다.