Development/Docker
도커 기초 가이드 - Docker Basic Guide (3)
Barcy
2024. 8. 22. 16:25
1. 볼륨이란?
먼저, 볼륨이 무엇인지 간단히 알아보겠습니다. 컨테이너는 본질적으로 일시적이고 휘발성이기 때문에, 컨테이너가 종료되거나 삭제되면 그 안에 저장된 데이터도 사라집니다. Docker에서 볼륨은 컨테이너가 종료되거나 삭제되더라도 데이터를 유지할 수 있는 방법을 제공합니다. 예를 들어, 데이터베이스와 같은 상태 저장 서비스는 데이터를 영구적으로 유지하기 위해 볼륨을 사용해야 합니다.
2. Compose 파일에서 볼륨 추가하기
Docker Compose에서 볼륨을 추가하려면 compose.yaml
파일을 수정해야 합니다. 이 파일은 애플리케이션의 여러 서비스들을 정의하는 곳으로, 각 서비스의 설정을 지정할 수 있습니다.
volumes
설정을 언급된 대로 수정하기
다음은 compose.yaml
파일에서 볼륨을 추가하는 예시입니다. 프로젝트의 특정 부분에서 주석 처리가 되어 있는 volumes
설정을 언주석(uncomment)하여 활성화하면 됩니다.
git clone https://github.com/docker/multi-container-app
먼저 repository를 복사해 파일들을 클론합니다.
todo-database:
# ...
volumes:
- database:/data/db
# ...
volumes:
database:
위의 예에서, volumes
설정을 활성화하기 위해 주석(#)을 제거합니다. 이 설정은 todo-database
서비스에 볼륨을 추가하여 데이터를 영구적으로 저장하도록 구성합니다.
볼륨 설정의 의미
- todo-database 서비스 내부의
volumes
요소는 Compose에게/data/db
경로에 볼륨을 마운트하라는 지시를 내립니다. 이 예에서database
라는 이름의 볼륨이 사용되며, 이는 컨테이너 내의/data/db
디렉토리에 연결됩니다. - 최상위
volumes
요소는 이 프로젝트 내에서 사용할 수 있는database
라는 볼륨을 정의합니다. 이 볼륨은 Compose 파일 내의 모든 서비스에서 참조할 수 있으며, 다양한 서비스 간에 데이터를 공유할 수도 있습니다.
더 깊이 들어가기
이제 volumes
설정이 실제로 어떻게 작동하는지 조금 더 깊이 살펴보겠습니다.
- todo-database 서비스에서의
volumes
: 이 설정은 데이터베이스 서비스가 데이터를 저장할 때 컨테이너 내에서/data/db
경로를 사용할 수 있도록 합니다. 즉, 컨테이너가 종료되더라도 데이터는 사라지지 않고, 볼륨에 안전하게 저장됩니다. - 최상위
volumes
정의: 이 부분은 실제로 볼륨을 생성하고, 이 볼륨을 Compose 파일 내에서 재사용할 수 있도록 설정합니다. 여러 서비스가 동일한 볼륨을 참조하면, 그 서비스들 간에 데이터를 공유할 수 있게 됩니다.
3. 볼륨 설정의 장점
Docker Compose에서 볼륨을 설정하는 것은 여러 가지 장점을 제공합니다:
- 데이터 영속성: 컨테이너가 삭제되거나 재시작되더라도 데이터는 유지됩니다.
- 데이터 공유: 여러 컨테이너 간에 데이터를 쉽게 공유할 수 있습니다.
- 환경 분리: 로컬 개발 환경과 프로덕션 환경에서 동일한 볼륨 설정을 사용할 수 있어 일관성을 유지할 수 있습니다.