Docker

[Docker] 4. Volume? Mount?

김줘 2024. 11. 14. 20:16

Docker Volume?

  • 컨테이너의 데이터를 지속적으로 저장하기 위한 Docker의 저장소 메커니즘
  • Docker 엔진이 관리하는 독립적인 저장소이며, 컨테이너의 독립성 유지

Anonymous Volume

  • 별도의 이름이나 식별자 없이 Docker 엔진에 의해 자동으로 생성되는 볼륨
  • 컨테이너를 실행할 때 옵션을 사용하여 호스트 경로를 지정하지 않으면 자동 생성
  • 컨테이너 삭제 시 익명 볼륨에 저장된 데이터도 함께 삭제

Named Volume

  • 볼륨에 고유한 이름을 지정하여 생성하는 볼륨
  • 컨테이너를 삭제해도 삭제되지 않기에 데이터 보존 가능

예시

# Anonymous Volume
# 호스트 디렉토리를 지정하지 않고, 컨테이너 경로만 지정
# docker run -v [컨테이너 내부 경로] [이미지 이름]
docker run -v /container/path my-image

# Named Volume
# 볼륨 이름을 지정하여 생성
# docker run -v [볼륨 이름]:[컨테이너 내부 경로] [이미지 이름]
docker volume create my_named_volume
docker run -v my_named_volume:/container/path my-image

Mount

  • 호스트의 파일 시스템 경로를 컨테이너 내부에 연결
  • 호스트 머신의 디렉토리나 파일을 도커 컨테이너 내부에서 사용 가능
  • 마운트의 경로 변경은 호스트와 컨테이너 양쪽에 영향

Bind Mount == Host Volume

  • 호스트 파일 시스템 폴더를 Docker Container 파일 시스템의 폴더로 마운트 가능
  • 호스트에서 내용을 바꾸면 Docker Container에도 반영

예시

# 볼륨 이름을 지정하여 생성
# docker run -v [호스트 경로]:[컨테이너 내부 경로] [이미지 이름]
docker run -v /host/path:/container/path my-image

 

정리

  • Volume : 도커 내부에서 데이터를 관리하며 컨테이너 간의 데이터 공유 가능
  • Mount : 호스트의 파일 시스템과 컨테이너를 연결하여 호스트와 컨테이너 간의 데이터를 공유