Stack/Docker

바인드 마운트(Bind Mount) vs 볼륨 마운트(Volume Mount)

annovation 2025. 4. 3. 08:50

바인드 마운트와 볼륨 마운트는 둘 다 컨테이너와 호스트 간에 데이터를 공유하는 기능이다.

하지만 저장 방식과 관리 방법에서 차이점이 있다.


바인드 마운트(Bind Mount)

📌 특징

  • 호스트의 특정 디렉토리를 컨테이너 내부에 연결하는 방식
  • 호스트의 디렉토리를 직접 사용하므로 도커가 데이터를 관리하지 않음
  • 컨테이너를 삭제해도 호스트의 원본 데이터는 유지됨
  • 단점 : 컨테이너 실행 중에는 마운트 경로를 변경할 수 없고, 호스트 시스템에 의존성이 생김

📌 바인드 마운트 사용 예제

docker run -d --name my-nginx -p 8080:80 \
-v $(pwd)/mydata:/usr/share/nginx/html nginx
  • $(pwd)/mydata → 호스트의 mydata 디렉토리를 사용
  • /usr/share/nginx/html → 컨테이너 내부에서 접근할 경로
  • 호스트 폴더를 기준으로 생성되기 때문에, 컨테이너 폴더에 있던 내용이 사라질 수 있음

➡️ 결과 : 호스트의 mydata 폴더를 수정하면 컨테이너에서도 변경 사항이 즉시 반영됨


볼륨 마운트(Volume Mount)

📌 특징

  • 도커가 직접 데이터를 관리하는 방식 (/var/lib/docker/volumes/에 저장됨)
  • 호스트의 특정 디렉토리를 지정할 필요 없이 도커가 자동으로 볼륨을 생성하고 관리
  • 여러 컨테이너에서 동일한 볼륨을 공유할 수 있음
  • 권장되는 방식: 데이터가 영구적으로 저장되어야 하는 경우 사용 (ex. 데이터베이스, 로그 저장)

📌 볼륨 마운트 사용 예제

docker volume create my-volume
docker run -d --name my-nginx -p 8080:80 \
-v my-volume:/usr/share/nginx/html nginx
  • docker volume create my-volume → 도커 볼륨 생성
  • -v my-volume:/usr/share/nginx/html → 볼륨을 컨테이너 내부로 연결

➡️ 결과

  • 컨테이너를 삭제해도 데이터(my-volume)는 남아 있음
  • 여러 컨테이너가 my-volume을 공유할 수도 있음

바인드 마운트(Bind Mount) vs 볼륨 마운트(Volume Mount)

비교 항목 바인드 마운트 (Bind Mount) 볼륨 마운트 (Volume Mount)
데이터 저장 위치 호스트의 특정 디렉토리 /var/lib/docker/volumes/ (도커가 관리)
도커가 관리하는가? ❌ 직접 관리해야 함 ✅ 도커가 자동 관리
컨테이너 독립성 호스트 디렉토리에 의존 컨테이너와 독립적
데이터 보존 여부 호스트 파일을 유지하면 가능 컨테이너 삭제 후에도 유지됨
보안성 호스트 파일을 직접 접근 (보안 위험) 도커 내부에서 안전하게 관리
사용 용도 개발 환경에서 코드 공유 데이터 저장, DB 등 지속적 관리가 필요한 경우

요약

바인드 마운트 : 호스트의 특정 폴더를 컨테이너와 공유할 때 사용. 개발 환경에서 유용!
볼륨 마운트 : 도커가 데이터를 직접 관리하며, 영구 저장이 필요할 때 사용. 데이터베이스, 로그 저장 등에 추천!

 

💡 즉, 단순한 개발 환경에서는 바인드 마운트를, 운영 환경에서는 볼륨 마운트를 사용하는 것이 일반적! 🚀


출처

OpenAI ChatGPT (https://openai.com)

반응형