컨테이너 볼륨과 마운트

2023. 10. 23. 00:45쿠버네티스/Docker

728x90
반응형

볼륨이란 스토리지의 한 영역을 분할한 것, 간단히 말하면 하드디스크나 SSD를 분할한 하나의 영역이다. 기다란 카스테라를 자른 한 조각이라고 생각하면 이해하기가 쉽습니다.

마운트는 '연결하다'라는 의미 그대로 대상을 연결해 운영체제 또는 소프트웨어의 관리하에 두는 일을 말합니다. 이해하기 쉬운 예로 USB 메모리를 컴퓨터에 꽂으면 소리가 난 다음 폴더가 열리는데, 이것도 USB 메모리가 컴퓨터에 마운트됐기 때문입니다.

 

컨테이너를 사용하려면 스토리지 영역을 마운트해야 합니다. 왜냐하면 데이터가 이 스토리지에 있기 때문입니다. 컨테이너의 데이터는 컴퓨터나 스마트폰을 새로 샀을 때 데이터 이전이 안 된다면 곤란합니다. 그래서 USB 메모리나 SD카드, 외장 하드에 저장한 후 옮겨서 사용합니다.

 

이와 마찬가지로 컨테이너 역시 외부로 데이터를 대피시킵니다. 다만 컨테이너는 생성 및 폐기가 매우 빈번하기 때문에 매번 데이터를 옮기는 대신 처음부터 컨테이너 외부에 둔 데이터에 접근해 사용하는 것이 일반적입니다. 이를 "데이터 퍼시스턴세"라고 합니다. 이때 데이터를 두는 장소가 마운트된 스토리지 영역입니다.

 

스토리지 마운트라고 하면 의미가 모호하기 때문에 '볼륨 마운트'라는 용어를 사용하는데, 마운트 대상이 되는 스토리지는 볼륨 외에도 디렉터리나 파일, 메모리가 될 수 있습니다.


스토리지 마운트의 종류

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

어느 마운트 방식을 사용하든 스토리지 마운트는 run 커맨드의 옵션 형태로 지정합니다.

 

데이터가 위치하는 경로는 도커 이미지의 참조 문서 등을 보면 알 수 있습니다.

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

마운트될 스토리지를 생성

볼륨 마운트의 경우는 마운트와 동시에 볼륨(스토리지 영역)을 만들 수도 있지만 이 방법은 권장하지 않습니다. 마운트 전에 별도로 볼륨을 먼저 생성하는 것이 좋습니다.

 


바인드 마운트 연습

1. 마운트 원본이 될 폴더/디렉터리 만들기

apa_folder라는 이름으로 마운트 원본이 될 폴더/디렉터리를 생성

 

2. run 커맨드로 아파치 컨테이너 실행

docker run --name apa000ex20 -d -p 8090:80 -v /home/사용자명/apa_folder:/usr/local/apache2/htdocs httpd

3. 웹 브라우저를 통해 아파치에 접근해 초기 화면 확인

웹 브라우저에 접근해 아파치 초기 화면을 확인합니다. 현재는 아무 파일도 배치하지 않았으므로 "Index of/"라는 메시지가 출력됩니다. 아무 파일도 없다면 'It Works'라고 적힌 초기 화면이 출력되지만 폴더가 있기 때문에 'Index of /" 메시지가 출력됩니다.

4. 마운트된 폴더/디렉터리에 index.html 파일을 배치

apa_folder 디렉터리 속에 index.html 파일을 넣습니다. 

5. index.html 파일이 변경됐는지 확인

다시 웹 브라우저에 접속해서 내용이 바뀌었는지 확인하고 바뀌었따면 성공입니다.


볼륨 마운트해보기

볼륨 생성

docker volume create apavol

볼륨 상세 정보 확인

docker volume inspect apavol

볼륨 삭제

docker volume rm apavol

-v 옵션

-v apavol:/usr/local/apache2/htdocs

 

1. 마운트할 볼륨 생성

docker volume create apavol

2. run  커맨드로 아파치 컨테이너 실행

docker run --name apa2 -d -p 8091:80 -v apavol:/usr/local/apache2/htdocs httpd

3. volume inspect 커맨드로 볼륨의 상세 정보 확인

docker volume inspect apavol

docker container inspect apa2


볼륨 마운트를 확인하는 방법

첫 번째 컨테이너를 데이터를 수정 후 삭제 한다음 두 번째 컨테이너를 볼륨 마운트해서 두 번째 컨테이너가 ㅅ정된 데이터가 그대로 나타나는지 확인하면 됩니다.

하나의 볼륨을 워드프레스  컨테이너, 리눅스  컨테이너가 같이 마운트하고 워드프레스 컨테이너에서 수정 후 리눅스 컨테이너에서 변경됬는지 확인하는 방법이 있습니다.

볼륨 마운트 백업

볼륨 자체를 복사할 수 없으므로 볼륨을 확인할 때처럼 별도의 리눅스 컨테이너를 연결해 볼륨의 내용을 압축해 저장합니다. 다만 주의할 점은 컨테이너 생성과 함께 tar 명령어로 백업을 수행한다는 점입니다. 거기다 압축한 파일을 컨테이너 밖에 저장해야 합니다. 

 

docker run --rm -v 볼륨명:/source -v 백업_저장_폴더명:/target busybox tar cvzf /sake/백업파일이름.tar.gz -C /source .

run 커맨드로 리눅스 운영체제(busybox) 컨테이너를 실행 후 바로 삭제할 예정이므로 --rm을 추가합니다. 

도커파일 명령어

 

출처 : 그림과 실습으로 배우는 도커 & 쿠버네티스

반응형

'쿠버네티스 > Docker' 카테고리의 다른 글

도커 볼륨  (1) 2023.10.23
컨테이너와 호스트 간에 파일 복사  (0) 2023.10.22
Redmine / MaraDB  (0) 2023.10.22
컨테이너로 워드프레스 사이트 구성 및 구축  (0) 2023.10.22
도커 명령어 모음  (0) 2023.10.22