스토리지
스토리지
Docker 스토리지는 크게 두 가지 개념으로 나눌 수 있어요. 하나는 컨테이너 데이터 영속성, 즉 애플리케이션 데이터를 컨테이너 밖에 저장하는 방법이고, 다른 하나는 데몬 스토리지 백엔드, 즉 데몬이 이미지 레이어와 컨테이너 쓰기 가능 레이어를 디스크에 저장하는 방식이에요. 이 페이지에서는 전자인 컨테이너 데이터 영속성에 초점을 맞출게요. Docker가 이미지와 컨테이너 레이어를 저장하는 방식이 궁금하다면 containerd image store나 Storage drivers 문서를 확인해 보세요.
출처: 공식문서
본문
컨테이너 레이어 기초
기본적으로 컨테이너 안에서 만들어지는 모든 파일은 읽기 전용이라 변경할 수 없는 이미지 레이어 위에 얹혀 있는, 쓰기 가능한 컨테이너 레이어에 저장돼요.
컨테이너 레이어에 기록된 데이터는 컨테이너가 삭제되면 사라져요. 그래서 다른 프로세스가 그 데이터를 필요로 할 때 컨테이너 밖으로 꺼내기가 어려울 수 있어요.
쓰기 가능한 레이어는 컨테이너마다 고유해요. 이 레이어에서 호스트나 다른 컨테이너로 데이터를 쉽게 추출할 수 없어요.
스토리지 마운트 옵션
Docker는 컨테이너의 쓰기 가능한 레이어 밖에 데이터를 저장하기 위해 다음과 같은 유형의 스토리지 마운트를 지원해요:
어떤 유형의 마운트를 선택하든 컨테이너 내부에서 데이터는 동일하게 보여요. 컨테이너 파일시스템에서 디렉토리나 개별 파일로 노출되거든요.
볼륨 마운트
볼륨은 Docker 데몬이 관리하는 영속적인 저장 메커니즘이에요. 볼륨을 사용하는 컨테이너가 제거된 후에도 데이터는 유지돼요. 볼륨 데이터는 호스트의 파일시스템에 저장되지만, 볼륨의 데이터와 상호작용하려면 볼륨을 컨테이너에 마운트해야 해요. 볼륨 데이터에 직접 접근하거나 상호작용하는 것은 지원되지 않고, 정의되지 않은 동작이며, 볼륨이나 데이터가 예기치 않게 손상될 수 있어요.
볼륨은 성능에 민감한 데이터 처리와 장기 보관 요구에 이상적이에요. 저장 위치가 데몬 호스트에서 관리되기 때문에 볼륨은 호스트 파일시스템에 직접 접근하는 것과 동일한 원시 파일 성능을 제공해요.
바인드 마운트
바인드 마운트는 호스트 시스템 경로와 컨테이너 사이에 직접적인 연결을 만들어서 호스트 어디에 있든 파일이나 디렉토리에 접근할 수 있게 해줘요. Docker에 의해 격리되지 않기 때문에 호스트의 비-Docker 프로세스와 컨테이너 프로세스가 동시에 마운트된 파일을 수정할 수 있어요.
컨테이너와 호스트 양쪽에서 파일에 접근해야 할 때 바인드 마운트를 사용하세요.
tmpfs 마운트
tmpfs 마운트는 파일을 호스트 머신의 메모리에 직접 저장해서 데이터가 디스크에 기록되지 않도록 해줘요. 이 스토리지는 임시적이에요. 컨테이너가 중지되거나 재시작되거나 호스트가 재부팅되면 데이터는 사라져요. tmpfs 마운트는 Docker 호스트나 컨테이너의 파일시스템 어디에도 데이터를 영속화하지 않아요.
이 마운트는 임시 메모리 저장이 필요한 시나리오, 예를 들어 중간 데이터 캐싱, 자격 증명 같은 민감한 정보 처리, 디스크 I/O 줄이기 등에 적합해요. tmpfs 마운트는 데이터가 현재 컨테이너 세션을 넘어서 유지될 필요가 없을 때만 사용하세요.
이미지 마운트
이미지 마운트는 다른 이미지의 내용을 컨테이너 안의 원하는 경로에서 사용할 수 있게 해줘요. 마운트된 이미지는 읽기 전용이고 컨테이너 자체 이미지의 일부가 아니에요. 그래서 다른 이미지를 다시 빌드하지 않고도 한 이미지에서 도구나 자산을 가져올 수 있어요.
이미지 마운트는 이미지로 패키징된 파일을 사용해야 할 때, 예를 들어 도구가 풍부한 이미지를 마운트해서 최소 컨테이너를 디버깅하거나, 다른 이미지를 실행하는 컨테이너 간에 읽기 전용 자산을 공유할 때 사용하세요. 이미지 마운트는 containerd image store가 필요해요.
네임드 파이프
네임드 파이프는 Docker 호스트와 컨테이너 간의 통신에 사용될 수 있어요. 일반적인 사용 사례는 컨테이너 안에서 서드파티 도구를 실행하고 네임드 파이프를 사용해 Docker Engine API에 연결하는 거예요.
더 알아보기 (Learn more)
컨테이너 데이터 영속성에 대해 더 알아보기:
데몬 스토리지 백엔드에 대해 더 알아보기: