인프라 & 클라우드 · 중급
Docker에서 데이터를 영속적으로 저장하기 위해 사용되는 Volume과 Bind Mount의 차이점을 설명하고, 각각 어떤 시나리오에서 더 적합한지 구체적인 사용 사례를 들어 비교해 주세요.
힌트 · 데이터의 관리 주체, 이식성, 성능, 그리고 컨테이너 라이프사이클과의 독립성을 고려하여 비교 설명합니다.
VolumeBind Mount데이터 영속성컨테이너 격리개발 환경
모범답안
네, Docker에서 데이터를 영속적으로 저장하는 Volume과 Bind Mount는 모두 유용한 방법이지만, 데이터 관리 방식과 사용 시나리오에서 차이가 있습니다.
Bind Mount는 호스트 파일 시스템의 특정 디렉토리를 컨테이너에 마운트하는 방식입니다. 간단하고 빠르지만, 컨테이너와 호스트 시스템 간의 의존성이 높아져 이식성이 떨어집니다. 예를 들어, 개발 환경에서 소스 코드를 컨테이너에 바로 마운트하여 실시간으로 변경 사항을 반영할 때 유용합니다.
반면, Volume은 Docker가 관리하는 별도의 저장 공간을 사용합니다. 컨테이너와 호스트 파일 시스템 간의 의존성이 낮고, 컨테이너가 삭제되어도 데이터가 유지됩니다. 또한, 여러 컨테이너 간에 데이터를 공유하기에도 용이합니다. 데이터베이스와 같이 컨테이너의 라이프사이클과 독립적으로 유지되어야 하는 데이터를 저장할 때 적합합니다. Volume은 Docker에게 데이터 관리를 맡기고 싶을 때, Bind Mount는 호스트 시스템의 파일을 직접 공유하고 싶을 때 선택하는 것이 좋습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Docker / Kubernetes 면접 질문
- Kubernetes에서 Pod의 역할은 무엇이며, 왜 Pod가 컨테이너의 최소 배포 단위가 되나요?
- Docker 이미지 빌드 시 멀티스테이지 빌드를 사용하는 주된 목적과 이점을 설명하고, 실제 프로젝트에서 어떻게 활용할 수 있는지 구체적인 예를 들어 설명해 주세요.
- Docker 컨테이너의 다양한 네트워크 모드(bridge, host, none, overlay 등)에 대해 설명하고, 각각의 모드가 어떤 상황에 적합하며 어떤 제약사항을 가지는지 비교하여 설명해 주세요.
- 단일 호스트에서 여러 Docker 컨테이너로 구성된 애플리케이션을 관리할 때 Docker Compose를 사용합니다. Docker Compose 파일(`docker-compose.yml`)에서 `depends_on`, `networks`, `volumes`와 같은 고급 옵션을 사용하여 서비스 간 의존성 관리 및 네트워크 구성을 어떻게 할 수 있는지 설명해 주세요.
- Kubernetes Pod의 라이프사이클(Pending, Running, Succeeded, Failed, Unknown)을 단계별로 설명하고, 각 단계에서 Pod가 어떤 상태에 있으며 어떤 이벤트가 발생하는지 구체적으로 설명해 주세요.
- Kubernetes에서 Deployment와 ReplicaSet은 Pod를 관리하는 데 사용됩니다. 이 둘의 관계를 설명하고, Deployment가 ReplicaSet 위에 추상화된 계층으로서 어떤 이점을 제공하는지 구체적인 사용 사례(예: 롤링 업데이트, 롤백)를 들어 설명해 주세요.