Docker Volume

문제상황 

Docker Container가 실행되었다가 중단되면 데이터 유실됨

도커 컨테이너를 통해 동작할 때 일회성이 아니고 계속 사용한다면 데이터가 유지되기를 원한다

데이터가 영구적으로 보관 필요 Data persistence

≫ Docker Volumes ! 

 

Docker Volume?

Docker Container내의 가상 파일 시스템과 호스트 시스템의 파일 시스템을 맵핑(마운트)

 

(예) 호스트 파일 시스템의 /logs 나 /dags 폴더를 Docker Container의 var/lib/airflow/logs 폴더로 맵핑(마운트)

→ 컨테이너가 사라져도 데이터는 남는다

 

파일시스템에서 마운트 mount 란?
디스크와 같은 물리적인 장치를 파일 시스템의 특정 위치(폴더)에 연결해주는 것
↔ unmount

 

Docker Volume 타입

1. Host Volumes docker run -v를 실행할 때 페어로 지정

$ docker run -v 호스트파일시스템패스:컨테이너파일시스템패스

 

2. Anonymous Volumes docker run -v를 실행할 때 컨테이너 패스만 지정

$ docker run -v 컨테이너파일시스템패스

docker engine이 알아서 호스트파일시스템패스 지정

 

3. Named Volumes docker run -v를 실행할 때 이름과 컨테이너 패스를 지정

$ docker run -v name:컨테이너파일시스템패스

가장 많이 쓰는 방식. 패스 이름(별칭)을 내가 지어줌. 관리가 쉬움

 

* Volume을 Readonly로 지정하기 위해서 ro 사용

$ name:/var/lib/mysql/data:ro 

defalut는 rw(read-write) ro로 지정해두면 컨테이너에서는 수정 못함

 

Docker Volume 사용법

1. Dockerfile을 통해서 VOLUME 명령을 통해 사용가능 하지만, Anonymous Volumes만 지정 가능

2. Docker-compose 로 관리 ⭐️⭐️