도커 볼륨 마운트 개요

728x90
💡
Today I Learned 요약 (37회차) - 도커 컨테이너는 휘발성이기 때문에 데이터를 보존하기 위해 별도의 볼륨을 두고 컨테이너가 외부의 데이터를 다루게 할 수 있다.

도커 볼륨 마운트 개요

볼륨은 스토리지의 한 영역을 분할한 것을 의미한다. 그리고 도커 컨테이너는 휘발성이기 때문에 종료가 되면 기존 데이터는 소멸된다. 이러한 상황에서 컨테이너 외부의 별도 볼륨을 두고 마운트시켜서 컨테이너가 외부의 데이터를 다룰 수 있게 할 필요가 있다.

 

  • 볼륨 마운트
    • 도커 엔진이 관리하는 영역 내 만들어진 볼륨을 컨테이너에 디스크 형태로 마운트 (임시용이나 지우면 안되는 파일을 두는 목적으로 많이 사용)
  • 바인드 마운트
    • 도커가 설치된 컴퓨터의 디렉토리(폴더) 등 도커 엔진에서 관리하지 않는 외부 영역의 기존 데이터를 컨테이너에 마운트하여 연결하는 방식이다 (자주 사용하는 파일을 두는 데 사용)
  • tmpfs 마운트
    • 주 메모리 영역을 마운트해서 사용하고, 속도가 높지만 도커가 정지되거나 호스트가 재부팅하면 소멸

 

볼륨과 바인드 마운트 방식의 차이점는 아래와 같다.

  • 볼륨 마운트는 처음엔 접근이 어렵지만 익숙해진다면 경로 설정 등의 부담이 줄어들어서 권장.
  • 바인드 마운트는 외부의 어떠한 폴더라도 파일을 둘 수 있으며 기존과 동일하게 사용할 수 있기에 외부 프로그램으로 편집도 가능하지만 외부의 변화(삭제, 편집) 등의 영향을 받을 수 있다.

 

어떠한 방식을 사용하든 스토리지 마운트는 run 커맨드로 실행한다.

볼륨 마운트의 경우, 스토리지 영역을 우선 생성한다.

 

# 볼륨 생성, 삭제 방법 docker volumne create {볼륨이름} docker volume rm {볼륨이름}  # 스토리지, 볼륨 마운트 방법 docker run ... -v 스토리지_실제_경로:컨테이너_마운트_경로 ... docker run ... -v 볼륨_이름:컨테이너_마운트_경로 ...  # 아파치 컨테이너 기반 예제 (로컬경로는 e:\docker_volume으로 지정) docker run --name apa000ex20 -d -p 8090:80 -v {e:\docker_volume}:/usr/local/apache2/htdocs httpd  # --------------------  # 볼륨 마운트해보기 docker volume create apa000vol1  # 아파치 컨테이너 실행 docker run --name apa000ex21 -d -p 8091:90 -v apa000vol1:/usr/local/apache2/htdocs httpd  # volume Inspect 커맨드로 볼륨 상세 정보 확인 docker volume inspect apa000vol1  # 아래와 같이 출력됨 [     {         "CreatedAt": "2022-12-11T22:13:04Z",         "Driver": "local",         "Labels": {},         "Mountpoint": "/var/lib/docker/volumes/apa000vol1/_data",         "Name": "apa000vol1",         "Options": {},         "Scope": "local"     } ]  # 컨테이너 Insepct 명령어 docker container inspect apa000ex21  # 도커 볼륨 삭제 docker volume rm apa000vol1
728x90