인프런 커뮤니티 질문&답변

이승주님의 프로필 이미지
이승주

작성한 질문수

개발자를 위한 쉬운 도커

컨테이너 가상화

OS 관련질문

해결된 질문

작성

·

45

1

강의를 듣다가 문득 이런 질문이 떠오르더라고요.

지금 저희가 만약 하이퍼 바이저 가상화를 사용한다고 하면 지금 제가 현재 쓰고 있는 windows가 host os가 되고 guest OS의 요청들을 hypervisor를 통해서 system call들을 받게 되는거잖아요. 그럼 컨테이너 가상화에서는 제가 쓰고 있는 Windows(OS)는 아예 배제되는건가요?
HostOS가 Linux가 기본이라고 하셨는데 그럼 하이퍼바이저 가상화처럼 Linux라는 OS를 Windows가 host OS가 되어서 쓰는건가요? 조금 복잡하네요 ㅠ

답변 2

0

데브위키님의 프로필 이미지
데브위키
지식공유자

이승주님 안녕하세요. 데브위키입니다.

네 말씀해주신 내용이 맞습니다!

  1. 하이퍼바이저 가상화:

    • 현재 사용 중인 Windows가 호스트 OS가 되고, 하이퍼바이저를 통해 게스트 OS의 시스템 콜을 처리합니다.

  2. 컨테이너 가상화:

     

    • Windows에서 도커를 사용할 때는 보통 WSL2(Windows Subsystem for Linux 2)를 이용합니다.

    • WSL2는 경량화된 가상 머신으로, 그 안에서 Linux 커널이 실행됩니다.

    • 이 환경 위에서 도커가 실행되고, 그 위에 컨테이너들이 동작합니다.

따라서 Windows 환경에서 컨테이너를 사용할 때의 구조는 다음과 같습니다:

Windows (호스트 OS) -> WSL2 (경량 VM) -> Linux 커널 -> 컨테이너

 

정리하자면 윈도우에서 컨테이너를 사용할 때는 중간에 가상 리눅스 환경을 만들어서 컨테이너를 실행합니다!

그래서 일반적으로 컨테이너를 배포하는 환경에서는 윈도우를 잘 사용하지 않고 대부분 리눅스를 사용합니다.

 

더 궁금하신 부분이 있으면 편하게 질문해주세요!

0

안녕하세요, 인프런 AI 인턴입니다. 이승주님.

도커와 같은 컨테이너 가상화 기술과 하이퍼바이저 기반 가상화 기술은 그 방식과 목적에 있어 차이가 있습니다.

  1. 하이퍼바이저 가상화는 호스트 OS 위에서 독립적인 게스트 OS를 실행하는 방식입니다. 이 경우, 하이퍼바이저가 호스트 OS와 게스트 OS 사이에서 자원 관리를 담당하게 됩니다. 이로 인해 각 게스트 OS는 서로 독립적이며, 실제 하드웨어와 직접 상호작용할 수 있는 것처럼 보입니다.

  2. 컨테이너 가상화는 애플리케이션 및 그 종속성을 가상화하여 프로세스 수준에서 격리합니다. 컨테이너는 호스트 OS의 커널과 네임스페이스(프로세스, 네트워크 등)를 공유합니다. 따라서 컨테이너는 매우 가볍고 빠른 실행 환경을 제공합니다.

이제 질문에 대해 구체적으로 답변 드리겠습니다:

  • Windows에서 도커를 사용할 때, 실제로는 리눅스 가상 머신 위에서 도커가 실행됩니다. Windows가 호스트 OS가 되는 것이 맞지만, 도커는 기본적으로 리눅스 환경에서 운영되도록 설계되어 있기 때문에, 리눅스 VM을 통해 리눅스 커널을 사용합니다.

  • 따라서 Windows에서 도커를 사용할 때는 Docker Desktop이 내부적으로 Hyper-V 또는 WSL2를 사용하여 리눅스 환경을 제공합니다. 이 방법을 통해 Windows 사용자가 리눅스 기반 컨테이너를 실행할 수 있게 됩니다.

관련하여 궁금한 점이 더 있으시면, “docker os 에 관한 질문드립니다.” 포스트를 참고하시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이승주님의 프로필 이미지
이승주

작성한 질문수

질문하기