본문 바로가기
docker & kubernetes

컨테이너 사용법 2 | Docker&Kubernetes 학습 25

by 그갸거겨 2024. 11. 28.
728x90
반응형
볼륨을 마운트하면 컨테이너의 일부를 호스트 컴퓨터의 일부와 같이 다룰 수 있어 편리하다.

볼륨과 마운트

  • 볼륨: 스토리지의 한 영역을 분할한 것, 기다란 카스테라를 자른 한 조각이라 생각해도 된다.
  • 마운트: 연결하다는 의미로, 대상을 연결해 OS 또는 SW의 관리 하에 두는 일을 말한다.
    • USB 메모리를 PC에 연결하면 폴더가 열리는 게, PC에 USB 메모리가 마운트 됐기 때문
  • 실제로 컨테이너를 사용할 땐, SSD나 하드 디스크의 일부 영역을 컨테이너의 데이터 저장용으로 마운트한다.
    • 마운트 된 스토리지가 아닌 컨테이너에 데이터가 저장되면, 컨테이너 삭제와 같이 데이터도 삭제되기 때문
  • 휴대폰 변경 시, 외장하드나 클라우드에 데이터를 저장 후 새로운 폰에서 데이터를 받는다.
  • 하지만 컨테이너는 생성과 폐기가 빈번하여, 매번 데이터를 옮기지 않는다.
  • 대신, 처음부터 컨테이너 외부에 데이터를 저장해놓고, 외부에 접근하여 사용한다.
    • 이를 데이터 퍼시스턴시(data persistency) 라고 한다.
    • 이때 데이터가 저장되는 외부 장소가 마운트 된 스토리지 영역이다.
    • 마운트 대상이 되는 스토리지는 볼륨 외에도 디렉터리나 파일, 메모리가 될 수 있다.

스토리지 마운트의 종류

  1. 볼륨 마운트(=스토리지 마운트)

    • 도커 엔진이 관리하는 영역 내에 만들어진 볼륨을 컨테이너에 디스크 형태로 마운트한다.
    • 이름만으로 관리가 가능하여 다루기 쉽지만, 볼륨에 비해 직접 조작하기 어려움
    • 따라서, '임시 목적의 사용', '자주 쓰지는 않지만 지우면 안되는 파일'을 두는 목적으로 많이 사용한다.
  2. 바인드 마운트

    • 도커 엔진에서 관리하지 않는 영역의 기존 디렉터리를 컨테이너에 마운트 하는 방식이다.
      • 도커가 설치된 컴퓨터의 문서 폴더 또는 바탕화면 폴더 등을 마운트 한다는 의미
      • 디렉터리가 아닌 파일 단위로도 마운트 가능
    • 자주 사용하는 파일을 두는데 사용한다.

 

두 가지 마운트 방식의 차이점

  • 차이점의 3가지 포인트
    1. 조작법이 간단한가, 복잡한가
    2. 호스트 컴퓨터에서 파일을 다루어야 하는가, 아닌가
    3. 환경의 의존성을 배제해야 하는가, 아닌가
  • 볼륨 마운트는 익숙해지면 손쉽게 사용할 수 있고, 도커 제작사에서도 볼륨 마운트 사용을 권장한다.
  • 바인드 마운트는 GUI에서와 동일한 방식으로 파일을 사용할 수 있다.
  • 파일을 직접 편집해야 할 일이 많다면 바인드 마운트, 그렇지 않다면 볼륨 마운트를 사용하면 된다.
  • 볼륨 마운트의 볼륨은 미리 만들어 두는 것이 좋다.
항목 볼륨 마운트 바인드 마운트
스토리지 영역 볼륨 디렉터리 또는 파일
물리적 위치 도커 엔진의 관리 영역 어디든지 가능
마운트 절차 볼륨을 생성한 후 마운트 기존 파일 또는 폴더를 마운트
내용 편집 도커 컨테이너를 통해서 일반적인 파일과 같이
백업 절차가 복잡함 일반적인 파일과 같이

 

스토리지 영역을 마운트하는 명령어

  • 어느 방식의 마운트든, run 명령어를 사용한다.
  • 마운트 하려는 스토리지의 경로가 컨테이너 속 특정 경로와 연결되도록 설정하는 형태이다.
    • 바탕화면의 바로가기처럼, 실제 실행될 파일의 위치와 다르게 바탕화면에 있는 것처럼 사용하는 것과 비슷하다.
  • 마운트 되는 스토리지는 본래 별도의 장소에 있지만, 마치 컨테이너 안에 있는 것처럼 설정하는 것이다..
    • 바탕화면에 비유하면, 컨테이너에 스토리지를 가리키는 단축 아이콘을 만드는 것과 같다.

스토리지를 마운트하는 절차

  • 스토리지 영역 생성 → 컨테이너 생성 및 마운트

스토리지 영역을 만드는 방법

  • 볼륨 마운트는, 볼륨 상위 명령어를 사용해, 먼저 볼륨을 생성한다.
  • 바인트 마운트는, 원본이 될 폴더나 파일을 먼저 생성한다.
  • 볼륨 생성( 볼륨 마운트 ): docker volume create 볼륨_이름
  • 볼륨 삭제( 볼륨 마운트 ): dockr volume rm 볼륨_이름
주요 하위 명령어 내용 생략형 주요 옵션
create 볼륨을 생성 X 거의 사용하지 않음
inspect 볼륨의 상세 정보를 출력 X 거의 사용하지 않음
ls 볼륨의 목록을 출력 X 거의 사용하지 않음
prune 현재 마운트되지 않은 볼륨을 모두 삭제 X 거의 사용하지 않음
rm 지정한 볼륨을 삭제 X 거의 사용하지 않음

스토리지를 마운트하는 명령어

  • -v 옵션 뒤에 '스토리지 실제 경로' 또는 '볼륨 이름', '컨테이너 마운트 경로' 순서대로 기재한다. 구분은 콜론(:)으로.
  • 바인드 마운트는 볼륨을 마운트하지 않지만, 볼륨 마운트와 마찬가지로 -v 옵션을 사용한다.
  • 바인드 마운트 명령어 예: docker run (생략) -v 스토리지_실제_경로:컨테이너_마운트_경로 (생략)
  • 볼륨 마운트 명령어 예: docker run (생략) -v 볼륨_이름:컨테이너_마운트_경로 (생략)

 

728x90