서론

우리는 Container의 Writable Layer에 Data를 저장할 수 있다는 것을 알고 있습니다. 하지만, 여기에는 몇 가지 문제점이 존재합니다.

  1. Container가 삭제되면 Data도 같이 삭제됩니다. 또한, 다른 프로세스에서 Container에 저장된 Data를 사용하기 어렵습니다.
  2. Container의 Writable Layer에는 Container가 실행 중인 Host Machine과 밀접하게 연결됩니다. 따라서, Data를 다른 곳으로 쉽게 옮길 수 없습니다.
  3. Container의 Writable Layer에 Data를 저장하기 위해서는 File System을 관리하는 Storage Driver가 필요합니다. Storage Driver는 Linux 커널을 사용하여 공용 File System을 제공합니다. 이 기능은 Host File System에 직접 쓰는 **data volume**보다 성능이 떨어집니다.

Docker는 Data를 안전하게 존속시킬 수 있는 방식으로 **volume, bind mounts, tmpfs**의 3가지 방식을 제공합니다(어떤 것을 사용해야할 지 모를 때는 **volume**를 사용하시기 바랍니다). 아래는 Container의 Data 관리 방식들과 사용 사례에 대해서 자세히 살펴보도록 하겠습니다.

Mount 유형

어떤 유형의 Mount를 사용하든, Data는 Container 내에서 동일하게 보이며, Container File System의 폴더나 개별적인 파일들로 표시됩니다. 올바른 Mount유형을 선택할 때 기준이 될 **volume, bind mounts, tmpfs mount**간의 가장 큰 차이점은, Data가 Docker Host내에서 어디에 존재하는지 입니다.

https://miro.medium.com/v2/resize:fit:628/0*s0FGzALBYPez4hbP.png

volume

bind mount