본문 바로가기
프로그램 활용/클라우드 가상화 도커

[도커] 볼륨이란

by 3604 2023. 10. 15.
728x90

출처: https://velog.io/@ksh9409255/%EB%8F%84%EC%BB%A4-%EB%B3%BC%EB%A5%A8%EC%9D%B4%EB%9E%80

 

문제상황

컨테이너 삭제의 경우에만 자체 파일 시스템이 사라지게 되는 특성 때문에, 코드 수정 이후 코드를 실행을 위한 이미지 리빌딩, 컨테이너 리빌딩의 경우 데이터를 저장할 수 없는 상황이 발생하게 된다.

해결법 = 볼륨

볼륨이란 호스트 머신의 폴더이다.(로컬 컴퓨터 폴더라는 뜻)
즉, 도커가 인식하는 호스트 머신이다.
볼륨은 도커 컨테이너 내부의 폴더에 매핑된다.

볼륨이 가지는 의미

볼륨의 가지는 의미는 컨테이너 내부 폴더와 컨테이너 외부 폴더를 연결하는 것이다.(로컬폴더와 내부 폴더는 격리되어 있으나 볼륨을 이용해 연결이 가능하도록 만들 수 있다는 의미)

볼륨 종류

볼륨에는 2가지 종류가 있다.

  • 익명 볼륨
  • 명명 볼륨

익명 볼륨

익명 볼륨이란 컨테이너가 존재하는 동안에만 실제로 존재하는 볼륨을 의미한다.

명명 볼륨

명명 볼륨이란 컨테이너가 컨테이너가 종료된 후에도 볼륨이 유지가 되는 것을 의미한다.

마운트란?

마운트란 물리적인 장치를 특정 디렉터리에 연결시켜주는 것을 말한다.

마운트의 종류

도커는 크게 3가지의 마운트 방식을 제공한다.

  • 볼륨 마운트 = 이 방식이 가장 베스트 방식
  • 바인드 마운트
  • tmfs 마운트

볼륨 마운트

도커가 생성하고 관리하는 방식이다.
즉, 도커에 의해 볼륨이 생성되고 도커에 의해 관리되는 방식으로 볼륨이 로컬 디렉터리에 마운트 될 경우 바인드 마운트와 유사하게 동작한다.
볼륨을 생성하면 자동으로 아래의 경로에 볼륨이 마운트 되어진다. 해당 경로를 마운트 포인트 라고 부른다.(이때, 도커프로세스가 아닌 non-docker프로세스가 해당 경로에 접근하여 수정하면 안된다.)
아래의 디렉터리에서 볼륨이 생성되고 관리된다.
(즉, 볼륨마운트는 아래의 경로에 볼륨이 생성되고 해당 볼륨을 도커와 연결시켜 관리하는 것이다.)
/var/lib/docker/volumes/

바인드 마운트

바인드 마운트의 경우 호스트의 로컬경로를 직접 지정하여 볼륨을 마운트하는 방식이다. 해당 방식은 도커가 아니기 때문에, 도커프로세스와 non-도커프로세스 간의 차이가 발생할 수 있기 때문에 권장하지 않는 방식이다.

tmfs 마운트

파일시스템 대신 메모리에 데이터를 저장하는 방식을 의미한다.(해당 방식은 리눅스 환경에서만 가능하다.)

볼륨 생성하기

  1. 명령어 생성 : docker volume create 볼륨명
  2. 컨테이너 실행하면서 생성 : docker run –v <볼륨명>:<컨테이너 내 경로> <이미지> (명명볼륨)(익명볼륨을 생성할 경우 볼륨명을 안쓰면 됨)
    참고로 바인드 마운트를 할 경우 볼륨명 대신 로컬 경로를 넣어주면 된다.

참고 : https://medium.com/dtevangelist/docker-%EA%B8%B0%EB%B3%B8-5-8-volume%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-data-%EA%B4%80%EB%A6%AC-9a9ac1db978c

728x90