바인드 마운트와 볼륨 마운트는 둘 다 컨테이너와 호스트 간에 데이터를 공유하는 기능이다.
하지만 저장 방식과 관리 방법에서 차이점이 있다.
바인드 마운트(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)
반응형
'Stack > Docker' 카테고리의 다른 글
기본 브릿지 네트워크(Brideg Network)가 DNS를 제공하지 않는 이유 (0) | 2025.04.04 |
---|---|
웹서버(Web Server)란? (1) | 2025.04.02 |
도커(Docker) 볼륨(Volume) (0) | 2025.04.01 |
도커(Docker)를 사용하는 이유 (0) | 2025.03.31 |
도커(Docker), 컨테이너(Container), 이미지(Image) (0) | 2025.03.30 |