[Docker] 도커 스토리지 종류와 사용법 1: 볼륨(Volume) 생성, 설정, 삭제

728x90
반응형

1. 도커 스토리지가 필요한 이유

도커 컨테이너는 일종의 프로세스로, 기본적으로 메모리에 데이터를 저장하고 사용한다.

파일 시스템에 데이터를 저장하는 것도 가능하지만, 컨테이너가 삭제되면 그에 속한 모든 데이터도 함께 사라진다.

즉, 데이터의 영속성을 유지할 수 없다.

이러한 문제를 해결하기 위해 도커 스토리지 기능을 사용하며, 이를 통해 데이터를 영구적으로 저장하고 관리할 수 있다.


2. 도커 스토리지 타입

  • `bind mount`: 호스트 컴퓨터의 파일 시스템과 직접 연결하는 방식
  • `volume`: 도커 엔진의 파일 시스템과 연결하는 방식
  • `tmpfs mount`: 메모리에 일시적으로 저장하는 방식. 휘발성 메모리 저장소로, 컨테이너가 종료되면 데이터가 사라진다.

Volume - Bind Mount - tmpfs mount

 


3. 볼륨

볼륨은 도커에서 데이터를 영구적으로 저장하기 위한 디렉터리이다.

볼륨을 사용하면, 도커 컨테이너의 데이터가 호스트 시스템의 파일 시스템에 저장되어, 컨테이너가 삭제되더라도 데이터가 사라지지 않는다.

또한, 볼륨은 컨테이너 간에 데이터를 공유할 때도 유용하게 사용된다.
도커 엔진이 관리하기 때문에 일반 파일 시스템 경로보다 안전하게 데이터를 유지할 수 있으며, 컨테이너와 호스트 간의 독립성도 보장한다.

Volume

 

도커 볼륨의 장점

  • 백업 및 마이그레이션: 볼륨은 바인드 마운트보다 백업과 마이그레이션이 용이하다.
  • 관리: 도커 CLI나 API로 쉽게 관리 가능하다.
  • 호환성: 리눅스와 윈도우 컨테이너에서 모두 사용 가능하다.
  • 안전한 공유: 여러 컨테이너 간 안전하게 공유할 수 있다.
  • 볼륨 드라이버: 원격 저장소, 클라우드 저장, 내용 암호화 등의 기능을 지원한다.
  • 미리 채우기: 새로운 볼륨은 컨테이너로 미리 내용을 채울 수 있다.
  • 성능: Docker Desktop에서 볼륨은 바인드 마운트보다 성능이 뛰어나다.

4. 볼륨 생성

생성

볼륨을 생성하려면 `docker volume create` 명령을 사용한다.

docker volume create 이름
docker volume create my-appvol-1

조회

생성된 볼륨을 조회하려면 `docker volume ls`를 사용한다.

docker volume ls

상세보기

볼륨의 상세 정보를 확인하려면 `docker volume inspect` 명령어를 사용한다.

docker volume inspect my-appvol-1

 


5. 볼륨 설정

  • `--mount` 옵션을 이용해서 source와 target을 설정
docker run --mount source=볼륨이름, target=연결할디렉토리 이미지이름

docker run -d --name vol-test1 --mount source=my-appvol-1,target=/app ubuntu:20.04
  • `-v` 옵션을 이용해서 직접 매핑
docker run -d --name vol-test2 -v my-appvol-1:/var/log ubuntu:20.04
  • 만약 지정한 볼륨 이름이 없으면 도커가 자동으로 생성해준다.
docker run -d --name vol-test3 -v my-appvol-2:/var/log ubuntu:20.04

 


6. 볼륨 삭제

볼륨을 삭제하려면 `docker volume rm` 명령을 사용한다. 단, 컨테이너에 연결된 볼륨은 삭제할 수 없다.

이를 해결하려면 먼저 컨테이너를 중지하고 삭제해야 한다.

docker volume rm 볼륨이름

 

예시:

docker volume rm my-appvol-1

위 명령어를 실행했을 때, 해당 볼륨이 아직 컨테이너에 연결된 상태라면, 아래와 같은 에러 메시지가 출력된다:

Error response from daemon: remove my-appvol-1: volume is in use - [container name]

 

이 경우, 다음과 같은 단계를 통해 문제를 해결할 수 있다:

 

1. 연결된 컨테이너 중지 및 삭제:

볼륨이 연결된 컨테이너를 먼저 중지하고 삭제해야 한다. (중지만 하면 안 된다. 삭제까지 해야 한다.)

docker stop 컨테이너이름
docker rm 컨테이너이름

 

예시:

docker stop vol-test1 vol-test2 vol-test3
docker rm vol-test1 vol-test2 vol-test3

 

2. 볼륨 삭제:

연결된 컨테이너가 모두 삭제되면, 이제 안전하게 볼륨을 삭제할 수 있다:

docker volume rm my-appvol-1 my-appvol-2

이제 해당 볼륨은 삭제된다.


 

이번 글에서는 도커 스토리지의 핵심인 볼륨의 개념과 사용 방법에 대해 알아보았다.

도커 컨테이너의 데이터를 안전하게 저장하고, 컨테이너가 삭제되더라도 데이터를 유지하는 방법을 이해하는 것이 매우 중요하다. 볼륨을 사용하면 이러한 문제를 해결하고, 컨테이너의 수명과 관계없이 데이터를 영구적으로 보존할 수 있다.

다음 글에서는 도커의 또 다른 스토리지 방식인 bind mount와 tmpfs mount에 대해 다루며, 두 방식의 차이점과 활용 방법을 살펴보겠다.

 

2024.10.16 - [클라우드 스쿨/도커(Docker)] - [Docker] 도커 스토리지 사용법 2: bind mount, tmpfs

 

[Docker] 도커 스토리지 사용법 2: bind mount, tmpfs

지난 글에 이어서, 도커 스토리지의 종류 중 bind mount와 tmpfs에 대해 다뤄보겠다.2024.10.16 - [클라우드 스쿨/도커(Docker)] - [Docker] 도커 스토리지 종류와 사용법 1: 볼륨(Volume) 생성, 설정, 삭제1. bind mo

ynslee627.tistory.com

 

 

[참고] Docker 공식 홈페이지 Documentation

https://docs.docker.com/engine/storage/bind-mounts/

https://docs.docker.com/engine/storage/volumes/

https://docs.docker.com/engine/storage/tmpfs/

728x90
반응형