본문 바로가기

Docker

[Docker] 도커의 데이터 공유 - named volume, bind mount

 

컨테이너와 호스트 간 데이터를 공유하는데 사용하는 두 가지 방법인 named volume과 bind mount

 

 

1. Named Volume

  • 도커에서 지원하는 데이터 저장 및 공유를 위한 메커니즘 중 하나
  • 도커가 데이터를 저장하는 별도의 볼륨을 생성하며, 이 볼륨의 이름은 사용자가 정의함
  • 볼륨은 도커 엔진에 의해 관리되며, 컨테이너와 볼륨 사이에는 경로가 있지만 호스트 파일 시스템과는 직접적으로 연결되지 않음
  • 도커 엔진이 데이터를 보다 안전하게 관리할 수 있고 여러 컨테이너 간에 데이터를 쉽게 공유할 수 있음

 

1) named volume 생성

docker volume create {볼륨명}

// 예시
docker volume create myvolume

 

2) named volume 정보 보기

docker volume inspect {볼륨명}

//예시
docker volume inspect myvolume

 

3) named volume 연결하기

docker run -v {볼륨명}:{경로} {이미지명}

// 예시
docker run -v myvolume:/path/in/container myimage

 

 

2. bind mount

  • 호스트 파일 시스템의 특정 경로와 컨테이너의 경로를 직접적으로 연결하는 방식
  • 호스트의 파일이나 디렉토리를 컨테이너 내부에 마운트하여 컨테이너 내부와 호스트 간에 데이터를 공유할 수 있음
  • 호스트 파일 시스템에 직접 접근할 수 있어 편리하지만, 도커 엔진에 의해 관리되지 않음

 

1) 호스트 파일 시스템과 직접 연결하기

docker run -v {host_path}:{container_path} {docker_image}

// 예시
docker run -v "$(pwd)/templates:/templates" -p 80:5000 haneulkim/docker-memo:version1

 

 

{host_path}: pwd 명령어로 호스트 경로 확인

 

{container_path}: Dockerfile에서 컨테이너 경로 확인