티스토리 뷰

CS/Cloud, Intra

[Docker] Volume

앤오엔 2025. 2. 24. 23:02
Udemy Docker & Kubernetes : 실전 가이드 정리

 

2025.02.10 - [CS/Cloud, Intra] - Docker: 컨테이너를 왜 쓰는가?, Image & Container

2025.02.17 - [CS/Cloud, Intra] - Docker: Image & Container 관리 (2)

 

 

Volume

이미지 : 읽기 적용, 스냅샷 형태

특징

이미지 위에 read-write 레이어를 통해 읽고 쓰기 가능

컨테이너 내부에 자체 파일 시스템을 가져 독립적인 환경 가능함

 

컨테이너 볼륨

데이터를 읽고 쓰기, 저장용으로 사용할 수 있음

호스트 머신의 폴더 컨테이너 내부 머신의 폴더와 매핑되어 컨테이너 삭제하더라도 사라지지 않고 데이터가 보존됨

컨테이너 외부의 특정 폴더/파일에 연결된 컨테이너 내부의 폴더/파일

Docker 에서 관리하여 호스트 폴더(컨테이너 내부 파일 경로)가 반드시 어디에 있는지 알 필요 없음 -> 익명 볼륨

 

 

볼륨 종류

익명 볼륨

컨테이너에 연결되어 컨테이너를 삭제하면 데이터가 사라짐

run 으로 실행할 때 --rm 옵션을 주지 않으면 계속 남아있음

컨테이너가 생성될 때마다 새로운 익명 볼륨이 생성됨

Dockerfile의 VOLUME 명령이나 '-v'로 생성된 익명 볼륨은 컨테이너에 이미 존재하는 데이터 잠글 때 유용

기존 데이터가 덮어쓰이는 걸 방지, 컨테이너 내부 경로 우선순위 높이는데 도움 줌

컨테이너가 실행되는 동안 호스트 머신의 파일 시스템을 적극 활용하면서 성능과 효율성에 도움됨

 

명명된 볼륨

컨테이너가 제거되어도 영구적으로 데이터가 남아있음

영구 데이터 읽기만 가능

여러 컨테이너 간 데이터 공유 가능하고 데이터 저장하는데 유용함

Dockerfile로 생성할 수 없음

 

바인드 마운트

Docker 가 관리하지 않고 컨테이너에 직접 상호작용 가능하기 때문에 영구적이고 편집 가능한 데이터에 쓰임

호스트 머신 상에 매핑될, 내부 컨테이너의 경로를 설정하여 최신 데이터를 유지할 수 있음

(데이터가 미러링되는 호스트 머신의 경로를 로컬 경로에 복사하여 연결, 스냅샷 x)

컨테이너에 라이브 데이터를 제공하여 이미지를 재빌드 하지 않아도 됨

 

+ 읽기 전용 볼륨

- 바인드 마운트 볼륨 설정할 때 :ro (read-only) 붙이면 됨

 


.dockerignore

COPY 명령을 실행할 때 제외(무시)됨

 

빌드 인수 (ARG) & 런타임 환경 변수 (ENV)

빌드하거나 컨테이너 실행할 때 외부에서 데이터 주입이 가능

 

 

Cheat Sheet

# 익명 볼륨
docker run -v /app/data/ ...

# 명명된 볼륨
docker run -v data:/app/data/ ...     

# 바인드 마운트
docker run -v /path/to/code:/app/code ...


# 모든 볼륨 조회
docker volume ls

# 볼륨 생성
docker volume create <named-volume>

# 볼륨 검사
docker volume inspect <volume-name>

# 볼륨 삭제
docker volume rm <VOL_NAME>

# 사용하지 않는 모든 볼륨 삭제
docker volume prune

 

 

Tip. 바운드 마운트에서 항상 전체경로 사용하지 않을 때, 바로가기

macOS / Linux: -v $(pwd):/app
Windows: -v "%cd%":/app

'CS > Cloud, Intra' 카테고리의 다른 글

[Docker] Network  (0) 2025.03.03
[Docker] Image & Container 관리 (2)  (0) 2025.02.17
[Docker] 컨테이너를 왜 쓰는가? / Image & Container (1)  (0) 2025.02.10
댓글