Docker데이터와 네트워크

bind mount와 volume 차이

개발 편의성과 데이터 영속성 요구에 따라 bind mount와 volume 중 무엇을 고를지 판단하는 카드입니다.

마지막 수정 2026년 3월 19일

기본 패턴

bash
# bind mount
docker run -v "$(pwd)":/app node:22-alpine

# named volume
docker run -v pgdata:/var/lib/postgresql/data postgres:16

설명

  • bind mount는 호스트의 특정 경로를 컨테이너 안에 직접 연결하는 방식입니다.
  • volume은 Docker가 관리하는 별도 저장소를 마운트하는 방식입니다.
  • 소스 코드를 바로 공유하며 개발할 때는 bind mount가 편하고, 데이터베이스처럼 컨테이너 수명과 분리된 영속 데이터는 volume이 더 적합합니다.
  • bind mount는 호스트 디렉터리 구조에 강하게 묶이므로 환경 이식성이 떨어질 수 있습니다.
  • volume은 백업과 재사용, 다중 컨테이너 공유, 호스트 의존성 감소 측면에서 더 안정적입니다.

짧은 예제

text
개발 서버:
- 소스 코드를 바로 반영하고 싶다
- bind mount: ./src -> /app/src

데이터베이스:
- 컨테이너를 지워도 데이터는 남아야 한다
- volume: pgdata -> /var/lib/postgresql/data

빠른 정리

기준bind mountvolume
원본 위치호스트 파일 시스템 경로Docker가 관리하는 저장소
개발 편의성높음상대적으로 낮음
이식성호스트 경로에 의존더 안정적
영속 데이터가능하지만 관리가 번거로움일반적으로 더 적합
대표 사용처소스 코드, 설정 파일DB 데이터, 앱 영속 데이터

주의할 점

bind mount는 호스트 파일을 컨테이너가 직접 건드릴 수 있게 하므로 편하지만 위험도도 큽니다. 특히 운영 환경에서는 경로 의존성과 쓰기 권한 범위를 함께 따져 보는 편이 좋습니다.

참고 링크

2 sources