볼륨 vs 바인드마운트
| 항목 | 볼륨 | 바인드마운트 |
|---|---|---|
| 위치 | Docker 관리 (/var/lib/docker/volumes) | 호스트 지정 경로 |
| 이식성 | 높음 | 낮음 (경로 의존) |
| 권한 관리 | Docker가 처리 | 호스트 권한 그대로 |
| 백업 | docker volume 명령 | 호스트 파일 시스템 |
| 개발 환경 | 부적합 | 적합 (파일 변경 즉시 반영) |
| 운영 환경 | 적합 | 조건부 적합 |
볼륨 관리
Bash
# 볼륨 생성
docker volume create mydata
# 볼륨 목록
docker volume ls
# 볼륨 상세 정보
docker volume inspect mydata
# 볼륨 마운트
docker run -d \
-v mydata:/var/lib/postgresql/data \
--name postgres \
postgres:16
# 사용 안 하는 볼륨 정리
docker volume prune바인드마운트
Bash
# 기본 바인드마운트
docker run -d \
-v /host/path:/container/path \
nginx
# 읽기 전용 마운트
docker run -d \
-v /etc/nginx/conf.d:/etc/nginx/conf.d:ro \
nginx
# 현재 디렉터리 마운트 (개발용)
docker run -it \
-v $(pwd):/app \
-w /app \
node:20 bashtmpfs 마운트 (메모리, 민감 데이터)
Bash
docker run -d \
--tmpfs /run:rw,noexec,nosuid,size=64m \
--tmpfs /tmp \
nginx볼륨 백업·복원
Bash
# 백업 — 볼륨을 tar로 추출
docker run --rm \
-v mydata:/data \
-v $(pwd):/backup \
alpine tar czf /backup/mydata-$(date +%Y%m%d).tar.gz -C /data .
# 복원
docker run --rm \
-v mydata:/data \
-v $(pwd):/backup \
alpine tar xzf /backup/mydata-20250101.tar.gz -C /data
# 볼륨 간 복사
docker run --rm \
-v source_vol:/from \
-v dest_vol:/to \
alpine cp -a /from/. /to/권한 문제 해결
Bash
# 컨테이너 내부 UID 확인
docker run --rm nginx id
# 호스트 UID와 맞추기
docker run -d \
--user 1000:1000 \
-v $(pwd)/data:/app/data \
myapp
# Dockerfile에서 권한 설정
# RUN chown -R node:node /app
# USER nodeDocker Compose에서 볼륨
YAML
version: '3.8'
services:
db:
image: postgres:16
volumes:
- pgdata:/var/lib/postgresql/data # named volume
- ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro # bind mount
app:
image: myapp
volumes:
- ./src:/app/src # 개발용 바인드마운트
volumes:
pgdata: # 볼륨 선언
driver: local편집 안내 · Editorial Note
이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.
관련 공식 문서Docker 공식 문서 ↗
질문 & 답변 (Q&A)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.