이것저것 기록

[Docker] 도커 볼륨과 마운트 본문

Data Science/New Tech

[Docker] 도커 볼륨과 마운트

anweh 2021. 7. 4. 00:03

0. 도커 환경에서 볼륨이란? 

도커는 기본적으로 각 컨테이너마다 독자적인 저장소를 가지고 있다. 하지만 컨테이너 내부에 저장되는 데이터는 컨테이너가 삭제되었을 경우 함께 사라진다. 

예를 들어 내가 '딥러닝 모델 학습'을 위한 도커 컨테이너를 만들었다고 생각해보자. 

만약 내가 해당 컨테이너를 삭제하면, 학습된 모델 파라미터와 아웃풋이 모두 함께 삭제되는 것이다... 

때문에 컨테이너 내부에 중요한 데이터를 두는 것은 그닥 안전한 방법은 아니다. 

 

>> 이러한 이슈 때문에 도커는 데이터의 영속성을 보장하기 위해 여러 방법을 지원하고 있는데, 그 중 하나가 바로 도커 볼륨이다. 

 

 

 

1. 볼륨의 종류 

볼륨의 종류에는 크게 세 가지가 있다. 

 

위 그림은 볼륨의 세 가지 종류를 나타낸다. 

  • Bind Mount: 호스트 환경의 특정 경로를 컨테이너 내부 볼륨 경로와 연결하여 마운트한다. 이 방법은 보안에 영향을 미칠 수도 있다고, 홈페이지에서 경고하고 있긴 하다... 흠. 
  • Volume (가장 일반적): 도커 볼륨은 도커 컨테이너에서 도커 내부에 도커 엔진이 관리하는 볼륨을 생성하는 것이다. 생성된 볼륨은 호스트 디렉터리의 /var/lib/docker/volumes 경로에 저장되며, 도커를 사용하여 관리가 용이하다. 
  • tmpfs Mount: 이 방법은 리눅스에서 도커를 실행하는 경우에만 사용할 수 있는 기능이라고 한다. 호스트의 파일 시스템이 아닌, 메모리에 저장하는 방식을 사용한다.

여기서 나는 가장 일반적인 도커 볼륨에 대해 조금 더 자세히 알아보려고 한다. 

 

 

 

2. 볼륨 생성하기 

  • docker volume create <volume name>: 도커 볼륨 생성
  • docker volume ls: 볼륨 목록 리스트 확인 
  • docker volume inspect <volume name>: 도커 볼륨 정보 확인 
    • 보다시피 마운트 포인트가 var/lib/docker/volumes 인 것을 확인할 수 있다.  

>> 이렇게 생성된 볼륨은 컨테이너 시작 시 -v 옵션을 통해 마운트 할 수 있다. 

>> Dockerfile 작성 시 VOLUME 명령어를 통해 설정할 수도 있음! 

 

 

 

오늘은 간단하게 도커 환경에서 '볼륨'의 개념에 대해 정리해봤다. 

다음 번에는 복잡한 볼륨도 추가하는 도커파일을 작성해봐야겠다! 

Comments