Storage - Docker의 Storage Driver vs Volume Driver

2026. 1. 3. 19:46·CKA

이전 글에서 정리했던 것처럼 Docker에는 크게 두 종류의 “스토리지 관련 컴포넌트”가 있습니다.

  • Storage Driver(스토리지 드라이버): 이미지/컨테이너의 레이어 파일 시스템을 관리
  • Volume Driver(볼륨 드라이버, 플러그인): 컨테이너의 영구 데이터(Volume) 를 관리

여기서 중요한 포인트는 이겁니다.

컨테이너 레이어(overlay2 등)와 볼륨(/var/lib/docker/volumes 아래 데이터)은 같은 담당자가 아니다.
컨테이너 레이어는 Storage Driver, 볼륨은 Volume Driver가 맡는다.


1) Storage Driver가 하는 일 (이미지/컨테이너 레이어)

Storage Driver는 Docker의 “계층형(레이어) 구조”를 가능하게 해줍니다.

  • 이미지 레이어(읽기 전용) 관리
  • 컨테이너 실행 시 writable layer 생성
  • Copy-on-Write(파일 수정 시 copy-up) 처리
  • 여러 레이어를 합쳐 하나의 파일 시스템처럼 보이게 구성

대표적으로 리눅스에서 많이 보는 값이:

docker info | grep -i "Storage Driver"
# Storage Driver: overlay2

2) Volume Driver가 하는 일 (영구 데이터)

컨테이너는 삭제하면 writable layer가 날아가므로, DB 데이터 같은 것은 컨테이너 레이어에 두면 안 됩니다.
이때 쓰는 게 Volume이고, 이 Volume을 실제로 생성/연결/관리하는 주체가 Volume Driver(플러그인) 입니다.

기본 볼륨 드라이버: local

Docker 설치 직후 기본으로 제공되는 드라이버는 보통 local이고, 이 경우 볼륨 데이터는 호스트의 아래 경로에 저장됩니다.

  • /var/lib/docker/volumes/<볼륨이름>/_data

확인:

docker volume create mysql_data

docker volume inspect mysql_data
# Mountpoint: /var/lib/docker/volumes/mysql_data/_data

컨테이너에 붙이면:

docker run -d --name mysql \
  --mount type=volume,src=mysql_data,dst=/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=pass \
  mysql:8

여기서 src=mysql_data는 “VM 디스크 볼륨 이름”이 아니라 Docker가 관리하는 named volume 이름입니다.


3) 3rd-party Volume Driver(플러그인)로 “외부 스토리지” 붙이기

강의에서 말한 Azure File, DigitalOcean Block Storage, Google Persistent Disk, GlusterFS, NetApp, Portworx, VMware vSphere 등은 “개념적으로” 이런 그림입니다.

  • local은 Docker 호스트 내부 디렉터리에 저장
  • 3rd-party 드라이버는 클라우드/스토리지 시스템(EBS, NFS, SAN, vSphere Datastore 등) 에 저장

즉, 컨테이너가 종료/재시작/재배치되어도 데이터는 외부에 남습니다.

Docker에서 볼륨 드라이버를 지정하는 형태(개념)

docker volume create --driver <driver_name> <volume_name>
docker run --mount type=volume,src=<volume_name>,dst=<path> ...

실제로는 플러그인마다 설치 방식/드라이버 이름/옵션이 다릅니다.
(어떤 건 Docker plugin 형태, 어떤 건 데몬/에이전트 형태로 동작)


4) “클라우드 볼륨을 Docker가 자동으로 프로비저닝한다”는 의미

강의에서 “예: 특정 볼륨 드라이버로 AWS에 EBS를 프로비저닝하고 컨테이너에 연결한다”는 흐름은 이런 동작을 말합니다.

  1. 컨테이너 실행(또는 볼륨 생성) 요청
  2. 볼륨 드라이버가 외부 스토리지 API 호출 (예: EBS 생성/attach)
  3. 컨테이너의 dst=/var/lib/mysql 같은 경로에 마운트
  4. 컨테이너가 종료되어도 외부 스토리지는 남음(정책에 따라 삭제/유지)

5) Storage Driver vs Volume Driver 한눈에 비교

구분 Storage Driver Volume Driver
목적 이미지/컨테이너 레이어 관리 영구 데이터(볼륨) 관리
주요 대상 레이어, CoW, writable layer /var/lib/docker/volumes 및 외부 스토리지
컨테이너 삭제 시 writable layer 삭제됨 볼륨은 유지(명시적으로 삭제하지 않는 한)
예시 overlay2, btrfs, zfs 등 local, 그리고 각종 외부 스토리지 플러그인

6) Kubernetes로 넘어가기 전 연결 포인트

이 강의의 마지막 문장처럼, 다음에 Kubernetes 볼륨으로 넘어가면 “역할 분리”가 더 명확해집니다.

  • Docker의 Volume Driver 플러그인 개념 ↔ Kubernetes의 CSI(Container Storage Interface) 드라이버
  • “파드가 떠있는 노드”와 상관없이 데이터를 유지하려면, 결국 외부 스토리지 + 드라이버가 필요

'CKA' 카테고리의 다른 글

Storage - Volume  (0) 2026.01.03
Storage - Kubernetes CSI(Container Storage Interface)  (0) 2026.01.03
Storage - Docker의 Storage  (0) 2026.01.03
Security - 정리(2)  (1) 2026.01.02
Security - Custom Controller & Operator  (0) 2026.01.02
'CKA' 카테고리의 다른 글
  • Storage - Volume
  • Storage - Kubernetes CSI(Container Storage Interface)
  • Storage - Docker의 Storage
  • Security - 정리(2)
5jyan5
5jyan5
  • 5jyan5
    jyan
    5jyan5
  • 전체
    오늘
    어제
    • 분류 전체보기 (243)
      • 김영한의 스프링 핵심 원리(기본편) (8)
      • 김영한의 스프링 핵심 원리 - 고급편 (11)
      • 김영한의 스프링 MVC 1편 (1)
      • 김영한의 스프링 DB 1편 (3)
      • 김영한의 스프링 MVC 2편 (3)
      • 김영한의 ORM 표준 JPA 프로그래밍(기본편) (9)
      • 김영한의 스프링 부트와 JPA 활용2 (2)
      • 김영한의 실전 자바 - 중급 1편 (1)
      • 김영한의 실전 자바 - 고급 1편 (9)
      • 김영한의 실전 자바 - 고급 2편 (9)
      • Readable Code: 읽기 좋은 코드를 작성.. (2)
      • 김영한의 실전 자바 - 고급 3편 (9)
      • CKA (119)
      • 개발 (37)
      • 경제 (4)
      • 리뷰 (1)
      • 정보 (2)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      WAS
      고급
      버퍼
      gesingleresult
      jpq
      @within
      typequery
      JPQL
      cglib
      김영한
      jdk 동적 프록시
      스레드
      프록시 팩토리
      프록시
      @discriminatorcolumn
      @args
      자바
      reentarantlock
      페치 조인
      hibernate5module
      단방향 맵핑
      빈 후처리기
      조회 성능 최적화
      @discriminatorvalue
      log trace
      requset scope
      Thread
      양방향 맵핑
      락
      Target
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.2
    5jyan5
    Storage - Docker의 Storage Driver vs Volume Driver
    상단으로

    티스토리툴바