인프라 & 클라우드 · 중급
단일 호스트에서 여러 Docker 컨테이너로 구성된 애플리케이션을 관리할 때 Docker Compose를 사용합니다. Docker Compose 파일(`docker-compose.yml`)에서 `depends_on`, `networks`, `volumes`와 같은 고급 옵션을 사용하여 서비스 간 의존성 관리 및 네트워크 구성을 어떻게 할 수 있는지 설명해 주세요.
힌트 · 서비스 시작 순서 제어, 사용자 정의 네트워크 생성, 그리고 영속적 데이터 저장을 위한 볼륨 설정을 중심으로 설명합니다.
컨테이너 오케스트레이션서비스 의존성네트워킹볼륨 공유선언적 구성
모범답안
Docker Compose에서 depends_on, networks, volumes는 컨테이너 오케스트레이션의 핵심입니다.
depends_on은 서비스 시작 순서를 제어합니다. 예를 들어, 웹 애플리케이션이 데이터베이스에 의존한다면, depends_on을 사용하여 데이터베이스 컨테이너가 먼저 시작되도록 보장할 수 있습니다.
networks는 컨테이너 간 통신을 위한 사용자 정의 네트워크를 생성합니다. 이를 통해 컨테이너들은 IP 주소 대신 서비스 이름으로 서로를 참조하며, 격리된 네트워크 환경을 구축할 수 있습니다.
volumes는 컨테이너의 데이터를 영속적으로 저장하거나 컨테이너 간에 데이터를 공유할 때 사용됩니다. 호스트 머신의 디렉토리를 컨테이너에 마운트하여 데이터 유실을 방지하고, 여러 컨테이너가 동일한 데이터를 사용할 수 있게 합니다. 이 옵션들을 통해 복잡한 애플리케이션의 배포와 관리를 효율적으로 할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Docker / Kubernetes 면접 질문
- Docker 이미지 빌드 시 멀티스테이지 빌드를 사용하는 주된 목적과 이점을 설명하고, 실제 프로젝트에서 어떻게 활용할 수 있는지 구체적인 예를 들어 설명해 주세요.
- Docker 컨테이너의 다양한 네트워크 모드(bridge, host, none, overlay 등)에 대해 설명하고, 각각의 모드가 어떤 상황에 적합하며 어떤 제약사항을 가지는지 비교하여 설명해 주세요.
- Docker에서 데이터를 영속적으로 저장하기 위해 사용되는 Volume과 Bind Mount의 차이점을 설명하고, 각각 어떤 시나리오에서 더 적합한지 구체적인 사용 사례를 들어 비교해 주세요.
- Kubernetes Pod의 라이프사이클(Pending, Running, Succeeded, Failed, Unknown)을 단계별로 설명하고, 각 단계에서 Pod가 어떤 상태에 있으며 어떤 이벤트가 발생하는지 구체적으로 설명해 주세요.
- Kubernetes에서 Deployment와 ReplicaSet은 Pod를 관리하는 데 사용됩니다. 이 둘의 관계를 설명하고, Deployment가 ReplicaSet 위에 추상화된 계층으로서 어떤 이점을 제공하는지 구체적인 사용 사례(예: 롤링 업데이트, 롤백)를 들어 설명해 주세요.
- Kubernetes Service의 주요 타입(ClusterIP, NodePort, LoadBalancer)을 설명하고, 각각의 타입이 어떤 방식으로 외부 트래픽을 Pod로 라우팅하며, 어떤 상황에 적합한지 비교하여 설명해 주세요.