Docker 스토리지와 볼륨 관리

 

1. 마운트 포인트의 개념

  • 리눅스 파일 시스템은 여러 저장소를 단일 트리로 통합.
  • 마운트 포인트는 특정 위치에 데이터를 연결하며, 컨테이너가 고유한 파일 트리를 가짐.

2. 컨테이너 스토리지 유형

  1. Bind Mounts
    • 호스트 파일 시스템의 특정 위치를 컨테이너 내부와 공유.
    • 단점: 컨테이너 휴대성 저하 및 경로 충돌 위험.
    • 명령어 예시:
      docker run --mount type=bind,src=/host/path,dst=/container/path image_name
  2. In-Memory Storage (tmpfs)
    • RAM 기반 임시 저장소.
    • 컨테이너 종료 시 데이터 삭제.
    • 민감 데이터나 임시 데이터 저장에 유용.
    • 명령어 예시:
      docker run --mount type=tmpfs,dst=/tmp image_name
  3. Docker Volumes
    • Docker가 관리하는 스토리지.
    • 바인드 마운트보다 이식성과 관리 용이성이 높음.
    • 명령어 예시:
      docker volume create my_volume
      docker run --mount type=volume,src=my_volume,dst=/data image_name

3. 볼륨 관리의 장점

  • 컨테이너 독립적 데이터 관리 가능.
  • 볼륨 데이터는 컨테이너의 수명과 별개로 유지.
  • 여러 컨테이너 간 안전한 데이터 공유.
  • 데이터 백업 및 복구 용이.

4. 공유 및 고급 볼륨 활용

  1. 공유 마운트 포인트
    • 여러 컨테이너에서 동일 데이터 접근.
    • Bind Mount보다 Docker Volumes를 사용 권장.
    • 명령어 예시:
      docker run --name container1 --mount type=volume,src=my_volume,dst=/shared
      docker run --name container2 --mount type=volume,src=my_volume,dst=/shared
  2. 익명 볼륨 및 Volumes-From 플래그
    • 익명 볼륨: 컨테이너 종료 시 제거.
    • Volumes-From: 다른 컨테이너의 마운트 정의 상속.
    • 명령어 예시:
      docker run --name source_container --mount type=volume,dst=/data image_name
      docker run --volumes-from source_container image_name
  3. 읽기 전용 마운트
    • 보안 강화를 위해 특정 볼륨을 읽기 전용으로 설정.
    • 명령어 예시:
      docker run --mount type=bind,src=/host/path,dst=/container/path,readonly image_name

5. 데이터 지속성과 복구 예시

  • Cassandra 예제:
    • 볼륨에 데이터 저장 후 삭제/복구 테스트.
    • 명령어 흐름:
      1. 볼륨 생성:
        docker volume create cass-shared
      2. 컨테이너 실행 및 데이터 수정:
        docker run --volume cass-shared:/var/lib/cassandra/data cassandra:4.0.7
      3. 복구 확인:
        docker run --volume cass-shared:/var/lib/cassandra/data cassandra:4.0.7

6. 볼륨 정리 및 유지보수

  • 불필요한 볼륨 삭제:
    docker volume prune --force
  • 특정 라벨 기준 볼륨 삭제:
    docker volume prune --filter label=example=value --force

7. 고급 스토리지와 플러그인

  • Docker는 다양한 스토리지 플러그인 지원.
  • 외부 스토리지 연동 및 클라우드 솔루션 사용 가능.
  • 예: AWS, Azure, Ceph 등과 통합.

8. 핵심 요약

  • Docker 볼륨은 컨테이너와 데이터의 관심사를 분리하며 데이터의 지속성을 보장.
  • 다양한 스토리지 옵션을 통해 요구사항에 맞는 유연한 데이터 관리 가능.
  • 프로덕션 환경에서는 Docker Volumes와 플러그인을 활용하여 안전하고 효율적인 데이터 관리를 구현.

'Docker' 카테고리의 다른 글

도커 인 액션 5장  (0) 2024.12.04
볼륨(Volume)  (0) 2024.12.04
도커 인 액션 2장  (0) 2024.12.04
도커 인 액션 1장  (0) 2024.12.04
도커 인 액션 3장  (0) 2024.12.04

+ Recent posts