알게 된 것

[알게 된 것] 도커 사용 시 WSL, Hyper-V 필요한 이유

빗방울소리 2024. 10. 7. 00:16
목차
1. WSL, Hyper-V와 가상화 기술
2. 도커 등 컨테이너 기술 사용시 설치하는 이유

 

 

 

 

 

 

WSL, Hyper-V와 가상화 기술

 

리눅스용 윈도우 하위 시스템(Windows Subsystem for Linux, WSL)은 윈도우 10과 윈도우 11에서 네이티브로 리눅스 실행 파일(ELF)을 실행하기 위한 호환성 계층이다. - 위키백과

 

  • 정리하자면, 윈도우에서 리눅스 명령어 및 시스템 콜을 사용하기위한 환경을 제공하는 기술이다.

 

 

 

 

WSL과 VM은 대체 무슨 차이인가?

 

 

WSL은 기존의 VM방식과 달리 호스트OS에 가상의 OS를 띄우는 방식이 아니다. 그 차이를 정리하자면 아래와 같다.

 

 

 

 

  • VM은 리눅스 OS자체를 가상화 기술을 통해 호스트 OS와 별개의 Guest OS를 만들어 직접 리눅스 시스템 콜을 사용하는 방식이다.
  • WSL은 리눅스 OS자체를 실행하는 것이 아니라 리눅스 커널만을 실행한다. 리눅스 커널의 기저부분은 WSL에 연결되어 있으며, 리눅스 커널 위에서 실행하는 시스템 콜은 WSL에 의해 전부 윈도우 시스템 콜로 전환되어 호스트 OS(윈도우)의 시스템 콜로 변환되어 실행된다.

 

 

 

 

 

 

 

 

 

 

 

Hyper-V는 무엇인가?

 

 

 

 

 

Hyper-V는 MS에서 개발한 하이퍼바이저 기술이다. 여기서 하이버바이저란 하드웨어 위에 다르 VM을 돌아가게 해주는 기술을 의미한다. 모바일 게임을 PC에서 돌리기위해 에뮬레이터를 설치할때 Hyper-V관련 설정을 하는 이유도 PC에서 가상의 모바일(안드로이드)환경을 구성할 때 필요하기 때문이다.

 

 

 

 

 

 

 

 

 

 

호스트 OS와 커널을 공유하는가?

 

 

 

결국 WSL은 리눅스 OS자체를 실행하는 것이 아니라 결국 호스트 OS와 커널을 공유한다는 개념으로도 이해할 수 있을 것이다. '호스트 OS와 커널을 공유한다?' 이것은 어디서 들어본 경험이 있다. 우리는 도커를 처음 배울 때 이 개념을 똑같이 접했었다. 

 

 

 

 

 

 

 

 

 

 

도커 등 컨테이너 기술 사용시 WSL, Hyper-V 설치하는 이유

 

 

도커는 리눅스 기반의 컨테이너 기술이므로 리눅스 환경이 필수

 

 

 

 

 

 

도커 또한 마찬가지로 리눅스 기반 기술이므로 컨테이너 기술을 사용하기 위해서는 리눅스 환경이 필요하다. 그럼에도 불구하고 우리는 윈도우에서 도커 컨테이너를 쉽게 생성하고 운용할 수 있다. 우리는 도커 설치시에 딱히 VM을 설치한 적도 리눅스 관련한 내용을 본적이 없는것 같은데도 말이다.

 

 

 

 

 

 

사실 리눅스 관련 설정을 한적이 없는게 아니다. 설치 완료시에 위와 같이 WSL을 쓸 것인지 묻고있다. 도커에서는 WSL을 이용하여 컨테이너 기술을 사용할 수 있게 해주는 것이며, Docker Desktop에서는 Hyper-V를 통해 가상화를 수행하는 것도 자체적으로 지원하기에 위와같이 Hyper-V대신 WSL을 사용할 것이냐고도 묻고 있는 것이다.

 

 

 

 

 

마지막으로 정리하자면,

 

  • WSL은 호스트OS(윈도우)와 커널을 공유하며 시스템 콜을 번역해주는 기능을 제공하여 리눅스 명령어 및 시스템 콜을 사용할 수 있게 해준다.
  • Hyper-V는 MS에서 만든 하이퍼바이저(가상화 기술)이며 WSL 사용시에 활성화 해야한다.
  • 도커 컨테이너 기술을 사용하기위해 리눅스 환경이 필수적이며, 윈도우에서는 WSL 혹은 Hyper-V를 통해서 지원가능하다.