도커에서 볼륨(Volume)은 컨테이너와 호스트 시스템 간의 데이터 공유를 위해 사용되는 스토리지 방식입니다. 도커 컨테이너의 파일 시스템은 기본적으로 휘발성이기 때문에, 컨테이너가 삭제되거나 중단되면 그 안의 데이터도 사라집니다. 이런 문제를 해결하기 위해 볼륨을 사용합니다.
도커 볼륨의 특징
- 데이터 영속성:
- 컨테이너가 삭제되더라도 데이터는 유지됩니다.
- 호스트-컨테이너 간 공유:
- 볼륨을 통해 호스트 시스템의 파일을 컨테이너 안에서 사용할 수 있습니다.
- 컨테이너 간 데이터 공유:
- 여러 컨테이너가 같은 볼륨을 공유하여 데이터를 주고받을 수 있습니다.
- 관리 용이:
- 도커 명령어를 통해 볼륨을 쉽게 생성, 삭제, 관리할 수 있습니다.
볼륨의 사용 목적
데이터 보존:
- 컨테이너가 삭제되더라도 데이터를 유지해야 할 때.
- 예: 데이터베이스 컨테이너(MySQL, PostgreSQL 등)의 데이터 보존.
호스트 파일 접근:
- 컨테이너가 호스트의 파일을 읽거나 수정해야 할 때.
- 예: 개발 중 애플리케이션 코드 공유.
컨테이너 간 데이터 공유:
- 여러 컨테이너가 동일한 데이터를 사용할 때.
- 예: 웹 서버 컨테이너와 애플리케이션 컨테이너 간 데이터 공유.
볼륨의 종류
도커 관리 볼륨:
- 도커가 생성하고 관리하는 볼륨.
- 사용자가 경로를 지정하지 않아도 자동으로 도커 내부에서 관리됩니다.
- 예:
docker run -v my-volume:/data my-container
바인드 마운트(Bind Mount):
- 호스트의 특정 디렉터리를 컨테이너에 마운트합니다.
- 더 많은 제어를 제공하지만, 경로를 직접 지정해야 합니다.
- 예:
docker run --mount type=bind,src=/path/on/host,dst=/path/in/container my-container
tmpfs 볼륨:
- 컨테이너의 메모리에만 데이터를 저장하며, 휘발성 데이터를 처리할 때 사용.
- 컨테이너가 중단되면 데이터가 삭제됩니다.
- 예:
docker run --mount type=tmpfs,tmpfs-size=64m,dst=/path/in/container my-container
볼륨 사용 방법
도커 볼륨 생성
docker volume create my-volume
컨테이너에서 볼륨 사용
docker run -d --name my-container -v my-volume:/data my-image
바인드 마운트 사용
docker run -d --name my-container --mount type=bind,src=/host/path,dst=/container/path my-image
볼륨 확인
docker volume ls
볼륨 삭제
docker volume rm my-volume
언제 볼륨을 사용하는가
- 컨테이너 데이터를 보존해야 하는 경우.
- 개발 환경에서 호스트의 코드를 컨테이너 안에서 실시간으로 사용해야 할 때.
- 여러 컨테이너가 동일한 데이터에 접근해야 할 때.
- 민감한 데이터를 컨테이너 외부로 백업하려는 경우.
예제
1. 도커 관리 볼륨
docker run -d --name my-nginx -v my-data:/usr/share/nginx/html nginx:latest
- 도커가
my-data
라는 볼륨을 생성하고, 이를 컨테이너의/usr/share/nginx/html
에 마운트.
2. 바인드 마운트
docker run -d --name my-nginx --mount type=bind,src=/host/path,dst=/usr/share/nginx/html nginx:latest
- 호스트의
/host/path
디렉터리를 컨테이너의/usr/share/nginx/html
에 마운트.
3. tmpfs 볼륨
docker run -d --mount type=tmpfs,tmpfs-size=64m,dst=/app tmpfs-container
- 컨테이너의
/app
경로에 휘발성 데이터를 저장.
요약
- 도커 볼륨은 데이터를 영속적으로 저장하거나 컨테이너와 호스트/다른 컨테이너 간의 데이터 공유를 위해 사용됩니다.
도커 관리 볼륨
은 자동화된 관리,바인드 마운트
는 유연한 제어가 장점입니다.- 볼륨은 데이터베이스, 로그 관리, 개발 환경에서 주로 사용됩니다.
'Docker' 카테고리의 다른 글
도커 인 액션 6장 (0) | 2024.12.05 |
---|---|
도커 인 액션 5장 (0) | 2024.12.04 |
도커 인 액션 4장 (0) | 2024.12.04 |
도커 인 액션 2장 (0) | 2024.12.04 |
도커 인 액션 1장 (0) | 2024.12.04 |