프로그래밍/Docker

Docker - Volume

Cian 2024. 5. 26. 00:43

▶ 도커 볼륨이란?

도커 컨테이너와 호스트 시스템 간에 데이터를 저장하고 공유하기 위한 특별한 디렉토리이다. 볼륨을 사용하면 컨테이너가 삭제되거나 재시작되어도 데이터가 유지되며, 이는 중요한 데이터를 영구적으로 보관해야 할 때 매우 유용하다. 그런데 데이터를 컨테이너 안에 저장하는 것이 아닌 호스트 시스템에 저장하는 이유는 다음과 같다.

 

 1. 데이터 영속성

컨테이너 자체는 일시적인 존재이다. 컨테이너를 삭제하거나 재시작하면 컨테이너 내부의 데이터는 사라질 수 있다. 그러나 볼륨을 사용하면 데이터가 호스트 시스템에 저장되어, 컨테이너가 삭제되거나 재시작되더라도 데이터는 유지된다. 예를 들어, 데이터베이스의 데이터나 사용자 파일 등을 영구적으로 저장할 수 있다.

 2. 데이터 공유

여러 컨테이너 간에 데이터를 쉽게 공유할 수 있다. 동일한 볼륨을 여러 컨테이너에서 마운트(호스트 시스템의 특정 디렉토리나 파일을 도커 컨테이너 내부의 특정 위치에 연결한다는 의미)하여 데이터를 공유하면, 컨테이너 간에 데이터를 복사하거나 이동할 필요 없이 바로 사용할 수 있다. 예를 들어, 웹 서버와 애플리케이션 서버가 동일한 데이터 파일을 공유하는 경우에 유용하다.

 3. 백업 및 복구 용이성

호스트 시스템에 저장된 데이터를 쉽게 백업하고 복구할 수 있다. 이는 데이터 보호와 복구에 매우 중요한데, 도커 볼륨을 사용하면 호스트 시스템의 파일 시스템을 통해 데이터를 간편하게 백업할 수 있다.

 4. 개발과 운영 환경의 일관성

개발 환경과 운영 환경 간에 데이터를 일관되게 유지할 수 있다. 개발자가 사용하는 데이터와 운영 환경에서 사용하는 데이터가 동일하게 유지되어, 일관된 테스트와 배포가 가능하다. 이는 CI/CD 파이프라인에서도 중요한 역할을 한다.

 5. 성능 향상

호스트 시스템의 파일 시스템을 사용하면, 특히 큰 데이터를 다루는 경우 컨테이너 내부에서만 데이터를 저장하는 것보다 성능이 향상될 수 있다. 이는 I/O(입출력) 성능에 영향을 미칠 수 있다.

 

 

▶ 적용

 

 - docker desktop

보여지는 이미지는 docker desktop를 사용하면 컨테이너를 생성 과정에서 볼 수 있는 옵션 설정 부분이다. 간략한 설명을 하자면,

 

 1. 호스트 패스: 호스트 시스템에서 데이터를 저장할 위치를 지정한다. 이 경로에 데이터가 저장되면 컨테이너가 삭제되더라도 데이터는 호스트 시스템에 남아 있다.

 2. 컨테이너 패스: 컨테이너 내부에서 데이터를 저장하거나 읽을 디렉토리를 지정한다. 이 경로를 통해 컨테이너는 호스트 시스템에 저장된 데이터를 사용할 수 있다.

 

이렇게 관리할 호스트의 경로와 컨테이너 내부 경로를 정하였다.

(docker의 워킹 디렉터리를 /app으로 설정했기 때문에 /app내부의 data 디렉터리에 넣었다. 참고로 /data파일은 미리 만들어진 것이 아닌 패스를 설정할 때 해당 디렉터리가 없으면 자동으로 생성된 것다.)

 

 

 - Console(PowerShell)

mkdir D:\docker\volume\example

 1. 호스트 시스템에서 디렉토리 생성

 

docker run -d --name your-container -v D:\docker\volume\example:/app/data your-image

 2. 도커 컨테이너 실행 및 디렉토리 마운트

 

이렇게 하면 호스트 시스템의 D:\docker\volume\example 디렉토리가 도커 컨테이너의 /app/data 디렉토리에 마운트된다. 컨테이너 내부에서 /app/data 경로에 접근하면 호스트 시스템의 해당 디렉토리에 저장된 데이터를 사용할 수 있다.