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 (없음) → 새로 생성됨
→ 컨테이너 내부 파일들이 복사되어 들어감
✅ 요약 정리
상황 | 동작 |
호스트 디렉토리 있음 | 컨테이너 디렉토리 덮어씀 |
호스트 디렉토리 없음 | 새로 생성 + 컨테이너 디렉토리 내용 복사 |
'코딩 > Docker' 카테고리의 다른 글
🐳 Docker로 MySQL 실행해보기 - 2 (Volume 활용) (3) | 2025.05.09 |
---|---|
🐳 Docker로 MySQL 실행해보기 - 1 (0) | 2025.05.07 |
🐳 [실습 ] Docker로 Redis 실행해보기 (0) | 2025.04.30 |
🐳 실행 중인 Docker 컨테이너 내부 접속하기 (exec -it) (0) | 2025.04.30 |
🐳 Docker 컨테이너 로그 조회 (0) | 2025.04.28 |
댓글