카테고리 없음

docker 볼륨마운트,바인드마운트

당근개발자 2022. 6. 1. 00:05

앞서서  볼륨이란! 스토리지의 한 영역을 분할한것을 말한다.

ssd를 분할한것이라고 생각하면 쉽다.

 

마운트란 

-> 연결한다 라는 의미 그대로 대상을 연결해 운영체제 또는 소프트웨어의 관리하에 두는 일을 말한다.

 

마운트를 해야하는 이유??.

  • 실제로 컨테이너를 사용하려면 스토리지 영역을 마운트해야한다. 왜냐하면 데이터가 이 스토리지에 있기 때문이다
  • 컨테이너가 종료되거나 삭제된다면, 컨테이너 속의 데이터가 같이 소멸한다. 
  • 그렇기 때문에, 컨테이너의 데이터를 외부로 대피시켜야한다.
  • 단, 컨테이너는 생성 및 폐기가 매우 빈번하기 때문에, 매번 데이터를 옮기는 대신 처음부터 컨테이너 외부에 둔 데이터에 접근해 사용하는것이 일반적이다.  이를 데이터 퍼시스턴시 라고 한다. 이 때 데이터를 두는 장소가 마운트된 스토리지 영역이다

스토리지 마운트의 종류

 

1) 볼륨마운트

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

2) 바인드 마운트

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

 

3) 차이점

고려해야할 3가지

  • 복잡성
  • 호스트 컴퓨터에서 파일을 다룰 필요가 있는지
  • 환경의 의존성을 배제해야 하는지

 

  • 볼륨 마운트는 도커 엔진의 관리하에 있으므로, 사용자가 파일 위치를 신경 쓸 필요가 없다.
  • 또한 운영체제에 따라 명령어가 달라지는, 의존성의 문제도 일어나지않는다. 예를 들어 윈도우와 mac Os ,리눅스의 경로를 기재하는 방식이 제가각 다르다. 따라서 리눅스 사용자가 만든 컨테이너를 윈도우 사용자가 사용하려면 기재된 경로를 수정해야한다.
  • 그래서 만약 볼륨 마운트를 사용한다면 이러한 작업이 필요없다.
  • 제일 중요한 포인트는, 도커 제작사에서도  볼륨마운트 사용을 권장한다.
항목 볼륨마운트 바인드마운트
스토리지 영역 볼륨 디렉터리 , 파일
물리적 위치 도커 엔진의 관리영역 어디든지 가능
마운트 절차 볼륨을 생성한 후 마운트 기존파일 또는 폴더를 마운트
내용 편집 도커 컨테이너늘 통해서 일반적인 파일과 같이
백업  절차가 복잡함 일반적인 파일과 같이

 

-> 볼륨 마운트해보기

 

항목
컨테이너이름 apa000ex21
이미지이름 nginx
볼륨이름 apa000vol1
포트번호 8081

볼륨 생성

docker volume create apa000vol1

볼륨 상세정보 확인

docker volume inspect apa000vol1

볼륨 삭제

docker volume rm apa000vol1

 

볼륨 마운트할 컨테이너 생성

docker run --name apa000ex21 -d -p 8081:80 -v apa000vol1:/usr/local/apache2/htdocs httpd