Docker / / 2024. 12. 4. 14:17

도커 볼륨 (Docker Volumes)

도커 볼륨 (Docker Volumes)

도커 볼륨은 컨테이너 간 데이터를 공유하거나, 컨테이너가 종료되어도 데이터를 유지하기 위해 사용하는 도커의 데이터 관리 메커니즘 중 하나입니다. 도커 볼륨은 호스트 파일 시스템의 디렉토리와 컨테이너의 디렉토리를 연결하여 데이터를 저장하고, 컨테이너 재생성 시에도 데이터를 유지합니다.

주요 특징

  • 데이터의 영속성: 컨테이너가 종료되거나 삭제되더라도 데이터를 유지합니다.
  • 컨테이너 간 데이터 공유: 여러 컨테이너에서 동일한 볼륨을 마운트하여 데이터를 공유할 수 있습니다.
  • 호스트 독립성: 볼륨은 도커가 관리하므로 호스트 파일 시스템의 특정 경로에 의존하지 않습니다.
  • 백업 및 복원 용이성: 볼륨 데이터를 별도로 백업하고 복원할 수 있습니다.

볼륨의 종류

1. 익명 볼륨 (Anonymous Volumes)

컨테이너 실행 시 별도의 이름 없이 자동으로 생성되는 볼륨입니다. 컨테이너 삭제 시 볼륨도 삭제될 수 있습니다.

docker run -v /data busybox

2. 명명된 볼륨 (Named Volumes)

사용자가 직접 이름을 지정하여 생성한 볼륨으로, 컨테이너 종료 후에도 관리와 재사용이 가능합니다.

docker volume create myvolume
docker run -v myvolume:/data busybox

3. 바인드 마운트 (Bind Mount)

호스트 파일 시스템의 특정 경로를 컨테이너와 연결합니다. 파일 경로를 명시적으로 지정해야 합니다.

docker run -v /host/data:/container/data busybox

볼륨 관리 명령어

1. 볼륨 생성

docker volume create <volume_name>

2. 볼륨 목록 확인

docker volume ls

3. 볼륨 상세 정보 확인

docker volume inspect <volume_name>

4. 볼륨 삭제

docker volume rm <volume_name>

5. 사용하지 않는 볼륨 정리

docker volume prune

볼륨의 동작 원리

  1. 호스트 디렉토리: 볼륨은 도커가 관리하는 디렉토리(/var/lib/docker/volumes/)에 생성됩니다.
  2. 컨테이너 연결: 컨테이너의 특정 경로에 볼륨을 마운트하여 데이터를 사용할 수 있습니다.
  3. 데이터 공유: 동일한 볼륨을 여러 컨테이너에 마운트하면, 컨테이너 간 데이터를 실시간으로 공유할 수 있습니다.

활용 사례

  • 데이터베이스 데이터 저장: MySQL, PostgreSQL 등 데이터베이스 컨테이너에서 데이터를 영구적으로 저장하기 위해 사용.
  • 애플리케이션 로그 관리: 애플리케이션 로그 파일을 호스트에 저장하여 분석.
  • 컨테이너 간 공유 데이터: 여러 컨테이너가 동일한 데이터를 필요로 할 때 활용.

예제: MySQL 데이터 저장소 설정

볼륨 생성 및 컨테이너 실행

docker volume create mysql_data
docker run -d   --name mysql   -e MYSQL_ROOT_PASSWORD=rootpassword   -v mysql_data:/var/lib/mysql   mysql:latest

데이터 유지 확인

  1. MySQL 컨테이너를 삭제:
     docker rm -f mysql
  2. 동일한 볼륨으로 컨테이너 재생성:
     docker run -d       --name mysql       -e MYSQL_ROOT_PASSWORD=rootpassword       -v mysql_data:/var/lib/mysql       mysql:latest
  3. 데이터가 유지되는지 확인.

볼륨과 바인드 마운트의 차이

특징 볼륨 (Volume) 바인드 마운트 (Bind Mount)
관리 주체 도커가 관리 사용자가 관리
경로 /var/lib/docker/volumes/ 경로에 저장 사용자가 지정한 호스트 경로
데이터 영속성 컨테이너 종료/삭제 시에도 유지 컨테이너 종료와 관계없이 유지
사용 사례 데이터베이스 저장소, 로그 관리 특정 파일 접근, 개발 환경에서 소스 코드 공유

주의사항

  1. 권한 문제: 볼륨에 마운트된 디렉토리는 컨테이너 내 애플리케이션의 권한과 일치해야 합니다.
  2. 볼륨 삭제: 사용 중인 볼륨은 삭제할 수 없습니다. 볼륨이 사용 중이지 않은지 확인 후 삭제하세요.

결론

도커 볼륨은 데이터를 안전하게 보관하고 공유할 수 있는 강력한 도구입니다. 이를 적절히 활용하면 컨테이너화된 애플리케이션의 데이터 관리가 훨씬 쉬워집니다.

'Docker' 카테고리의 다른 글

Docker in Action Chapter 1  (0) 2024.12.09
Docker 컨테이너 네트워킹  (1) 2024.12.04
Surface Area  (0) 2024.12.04
Docker 이미지 레이어  (0) 2024.12.04
Makefile  (0) 2024.12.03
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유