본문 바로가기
코딩/Docker

🐳 Docker Voluem(도커 볼륨)

by Leedius 2025. 5. 2.

1️⃣ 왜 Docker 볼륨이 필요한가?

Docker는 **변경이 불가능한 구조(Immutable)**를 기본 철학으로 함.
  • 컨테이너 에 직접 데이터를 저장하면 → 컨테이너가 삭제될 때 데이터도 사라짐
  • 예 : MySQL 컨테이너 삭제 → DB 데이터까지 같이 삭제됨 ❌
✅ 그래서 "데이터를 안전하게 보존"하려면 컨테이너 외부에 저장해야 함 → 그게 바로 Volume

 


2️⃣ Docker Volume이란?

도커에서 데이터를 영속적으로 저장하기 위한 공식적인 방법
  • 컨테이너 내부 디텍토리를 호스트(내 PC)의 디텍토리와 연결
  • 컨테이너를 삭제해도 데이터는 살아남음
  • 호스트와 컨테이너가 특정 디텍토리를 공유

📌 개념 그림

✅ 컨테이너 입장에선 외부 저장소처럼 보이지만, 실제로는 내 PC 디텍토리임

 


3️⃣ Volume 사용하는 기본 명령어

docker run -v [호스트 경로]:[컨테이너 경로] [이미지명]:[태그]

 

구분 설명
-v volume 옵션 (호스트: 컨테이너 디텍토리 연결)
예시 docker run -v /my/data:/var/lib/mysql mysql:latest

 


4️⃣ Volume 사용 시 동작 방식

🔹 A. 호스트 디텍토리가 존재할 경우

  • 해당 디텍토리가 컨테이너 디렉토리를 덮어씌움
  • 컨테이너 내부 디텍토리 내용은 보이지 않고 → 호스트 디렉토리의 내용만 보여짐

🧭 흐름:

/host/data (존재함) → /container/data
호스트 내용이 컨테이너 내용을 덮어씌움

 


🔹 B. 호스트 디렉토리가 존재하지 않을 경우

  • 호스트에 해당 디렉토리를 자동 생성
  • 컨테이너 내부 디렉토리 내용을 호스트 디렉토리로 복사

🧭 흐름:

/host/data (없음) → 새로 생성됨
→ 컨테이너 내부 파일들이 복사되어 들어감

 


✅ 요약 정리

상황 동작
호스트 디렉토리 있음 컨테이너 디렉토리 덮어씀
호스트 디렉토리 없음 새로 생성 + 컨테이너 디렉토리 내용 복사

 

댓글