728x90
Docker 볼륨은 컨테이너의 데이터를 영구적으로 저장하고 관리하는 방법을 제공합니다.
상세한 사용법을 알아보겠습니다.
1. Docker 볼륨의 종류
1) Volume (도커 관리 볼륨)
- Docker가 관리하는 호스트 파일시스템의 일부에 저장 (/var/lib/docker/volumes/)
- 가장 권장되는 방식
2) Bind Mount (바인드 마운트)
- 호스트의 파일 시스템을 직접 마운트
- 호스트의 어느 경로든 사용 가능
3) tmpfs Mount (임시 파일시스템)
- 메모리에만 저장되는 임시 데이터
- 컨테이너가 중지되면 데이터 삭제
2. Volume 명령어
볼륨 생성
# 기본 볼륨 생성
docker volume create my-vol
# 옵션을 지정하여 생성
docker volume create --driver local \
--opt type=none \
--opt device=/home/user/data \
--opt o=bind \
my-custom-vol
볼륨 조회
# 모든 볼륨 목록 확인
docker volume ls
# 특정 볼륨 상세 정보 확인
docker volume inspect my-vol
볼륨 삭제
# 특정 볼륨 삭제
docker volume rm my-vol
# 사용하지 않는 모든 볼륨 삭제
docker volume prune
3. 컨테이너에 볼륨 연결
Volume 마운트
# 볼륨 생성과 동시에 마운트
docker run -d \
--name my-container \
-v my-vol:/app/data \
nginx
# 읽기 전용으로 마운트
docker run -d \
--name my-container \
-v my-vol:/app/data:ro \
nginx
Bind Mount 사용
# 호스트 디렉토리 마운트
docker run -d \
--name my-container \
-v /host/path:/container/path \
nginx
# 현재 디렉토리 마운트
docker run -d \
--name my-container \
-v $(pwd):/app \
nginx
tmpfs 마운트
# 메모리에 임시 저장소 생성
docker run -d \
--name my-container \
--tmpfs /app/temp \
nginx
4. 볼륨 사용 예시
MySQL 데이터 저장
# 볼륨 생성
docker volume create mysql_data
# MySQL 컨테이너 실행
docker run -d \
--name mysql \
-v mysql_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=password \
mysql:8.0
웹 애플리케이션 개발
# 소스 코드 마운트
docker run -d \
--name web-app \
-v $(pwd):/usr/src/app \
-v node_modules:/usr/src/app/node_modules \
node:14
5. Docker Compose에서의 볼륨 사용
version: '3.8'
services:
web:
image: nginx
volumes:
- web-data:/usr/share/nginx/html
- ./config:/etc/nginx/conf.d
- /var/log/nginx:/var/log/nginx
volumes:
web-data:
driver: local
6. 볼륨 백업과 복구
볼륨 백업
# 볼륨 데이터 백업
docker run --rm \
-v my-vol:/source \
-v $(pwd):/backup \
ubuntu tar cvf /backup/backup.tar /source
볼륨 복구
# 백업된 데이터 복구
docker run --rm \
-v my-vol:/source \
-v $(pwd):/backup \
ubuntu tar xvf /backup/backup.tar -C /
7. 볼륨 관련 모범 사례
1) 명명 규칙
Copy# 프로젝트명_용도
docker volume create myapp_db_data
2) 볼륨 라벨링
# 라벨을 사용한 볼륨 생성
docker volume create \
--label project=myapp \
--label environment=production \
myapp_data
3) 주기적인 정리
# 사용하지 않는 볼륨 정리
docker volume prune --filter "label!=environment=production"
8. 자주 발생하는 문제와 해결방법
1) 권한 문제
# 권한 설정을 위한 볼륨 마운트
docker run -d \
-v my-vol:/app/data \
--user $(id -u):$(id -g) \
nginx
2) 볼륨 삭제 오류
# 강제 삭제 (주의 필요)
docker volume rm -f my-vol
# 연결된 컨테이너 확인
docker ps -a --filter volume=my-vol
정리
Docker 볼륨의 주요 명령어:
- 생성: docker volume create
- 조회: docker volume ls
- 상세정보: docker volume inspect
- 삭제: docker volume rm
- 정리: docker volume prune
참고사항
- 중요한 데이터는 반드시 볼륨을 사용하여 저장하세요.
- 개발 환경에서는 Bind Mount가 유용할 수 있습니다.
- 프로덕션 환경에서는 Named Volume 사용을 권장합니다.
- 정기적인 볼륨 백업 계획을 수립하세요.
- 불필요한 볼륨은 주기적으로 정리하여 디스크 공간을 관리하세요.
728x90
'IT 개발 > 클라우드' 카테고리의 다른 글
[도커] 도커의 역사 (5) | 2025.02.01 |
---|---|
[도커] 도커 - 현대 애플리케이션 개발의 혁명 (3) | 2025.02.01 |
[도커] Docker 네트워크 완벽 가이드 (2) | 2025.02.01 |
[도커] Docker 컨테이너 명령어 완벽 가이드 (1) | 2025.02.01 |
[도커] Docker 이미지 명령어 완벽 가이드 (0) | 2025.02.01 |