컨테이너를 사용하여 다양한 작업을 할 수 있습니다. 여러 작업 중 컨테이너 내부에서 생성한 정보, 파일들이 컨테이너가 종료되고 난 이후에 손실되어 찾을 수 없습니다. 기본적으로 컨테이너 내부에 생성되는 모든 파일들은 쓰기가능한 컨테이너 레이에어 저장되어 집니다. 이렇게 저장된다는 것은 아래와 같은 의미를 포함합니다.
여러분들이 겪는 불편함을 해소하기 위해 도커는 스토리지를 지원하고 있습니다. 여러분들은 2가지 중 하나를 선택할 수 있습니다. 호스트에 직접 파일을 저장하여 컨테이너가 종료되더라도 파일을 유지할 수 있는 방법과 tmpfs 마운트를 이용하는 방법입니다.
도커 스토리지의 종류는 3가지가 있습니다. Volume, bind mount, tmpfs mount입니다. 각 방식을 가장 잘 나타내는 표는 docker docs 페이지에 나와있는 아래 그림입니다.
Storage 종류 | 설명 |
---|---|
Volume | Volume은 도커에 의해 관리되는 호스트 파일시스템의 일부분에 저장하는 방법입니다. 호스트 내의 도커 프로세스가 아닌 다른 프로세스들은 Volume 관련 파일시스템을 수정할 수 없습니다. |
Bind mounts | 호스트 시스템 내의 어디든 저장할 수 있습니다. 도커 내의 모든 프로세스가 접근 수정할 수 있다. |
tmpfs mounts | 호스트 시스탬의 메모리에 저장하는 방식으로 시스템의 파일시스템에 정보를 저장하는 방식과는 차이가 있다. |
volume은 도커 컨테이너 내의 데이터를 유지시키는데 가장 선호되는 방법입니다. 몇 가지 사용되는 경우는 아래와 같습니다.
일반적으로 가능하다면 volume을 사용하는 것을 추천합니다. 하지만 특정 경우에 한 해 bind mount를 사용하는 경우가 있습니다. 몇몇 유스케이스는 아래와 같습니다.
tmpfs 마운트는 데이터가 호스트 시스템이나 컨테이너 내에서 유지되지 않도록 하려는 경우에 가장 적합합니다. 이는 보안성 향상 로 또는 응용 프로그램이 많은 양의 비영구 상태 데이터를 써야 할 때 컨테이너의 성능을 위함입니다. 파일시스템에 저장된 데이터에 접근하는 것보다 메모리에 저장된 데이터를 접근하는 것이 성능 상 큰 이점이 있긴 때문입니다.