1. 개요

<Docker 가상 환경 구축 입문>의 <Chapter 7-1. Docker 파일 관리 개요>를 읽고 정리한 내용으로,

이번 문서의 주된 내용은 Docker의 마운트 타입 종류에 대한 설명입니다.

 

2. Docker의 마운트 기능

  • 컨테이너 기동 후 작성, 수정된 파일은 컨테이너 레이어 위에 존재하므로 컨테이너가 삭제되는 시점에 함께 사라지게 됨
  • Docker의 마운트 기능을 사용하여 컨테이너를 삭제한 후에도 데이터를 보존할 수 있음
  • 해당 기능을 사용하여 컨테이너 외부 영역에 파일을 저장하면, 컨테이너 간 데이터 공유를 할 수 있음
  • Docker의 마운트 타입은 volume, Bind Mount, tmpfs가 있음

 

3. volume

  • Docker 호스트 상에 특정 영역을 생성하여, 해당 영역을 컨테이너에 마운트하는 형식
  • 생성된 volume은 이름을 정해서 관리할 수 있으며 여러 대의 컨테이너에 동일한 볼륨을 마운트하여 공통 파일을 읽거나 쓸 수 있음
  • volume은 컨테이너가 삭제되어도 함께 삭제되지 않고, 명시적으로 삭제할 때까지는 Docker 호스트 상에 보존됨
  • volume에 해당하는 영역을 Docker 호스트 상에서 직접 편집하는 것은 권장하지 않으며 컨테이너 측에서 해당 영역을 사용하는 방식을 권장
  • 컨테이너에서 생성하는 파일 중 영구적으로 보관하고자 하는 파일(중요 로그 파일 등)을 저장할 경우에 사용

 

4. Bind Mount

  • volume과 달리 Docker 호스트 상에서 유저가 관리하고 있는 파일이나 디렉토리를 컨테이너에 마운트하는 형식
  • volume과 마찬가지로 동일한 파일 혹은 디렉토리를 여러 대의 컨테이너에 마운트할 수 있음 
  • 마운트할 파일, 디렉토리 등을 사전에 준비한 후 해당 경로를 지정하여 컨테이너에 마운트하는 방식
  • Docker 호스트 상의 디렉토리나 파일을 컨테이너에서 공유하여 사용하고자 하는 경우
    예시) PC 상에서 소스 코드를 수정하고 컨테이너에서 애플리케이션 동작 확인을 하는 경우

 

5. tmpfs

  • Docker 호스트의 메모리 영역을 컨테이너에 마운트하여 사용 
  • Docker 호스트가 shutdown되거나 컨테이너가 정지했을 때는 데이터가 삭제됨
  • 영구적으로 유지되어야 하는 데이터보다는 일시적으로 보관할 필요가 있는 데이터를 사용할 때 유리
  • 위의 두개 방식에 비해 사용빈도는 적은 편이지만 캐시 혹은 OTP 등을 일시적으로 보관할 때 사용