프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

 

 

Docker 컨테이너들의 대부분은 리눅스 컨테이너로 만들어졌다. 

하지만 AWS의 ECS(Docker engine base) 세팅에서 알 수 있듯이, Windows OS인 EC2 상에서도 리눅스 컨테이너는 동작할 수 있다.

Windows에서는 리눅스 컨테이너가 어떤식으로 동작하는지 알아보자.

 

 

 

 

 

WSL(Windows Subsystem for Linux)

Windows OS를 사용한다면, 리눅스 환경을 위해 타입 1 혹은 2의 하이퍼바이저를 통해 리눅스 가상머신을 실행해야 한다.

하지만 WSL을 사용하면, 별도의 가상머신 없이도 Windows OS에서도 리눅스 환경을 제공받아 리눅스 명령어를 실행할 수 있게 된다.

WSL 1과 2는 구조적 차이가 존재한다.

 

 

WSL 1

1버전에서는  Linux 커널 요청인 System call을 translation layer가 Windows NT 커널과 호환되는 호출로 변환해 준다.

변환 과정은 당연하게 오버헤드가 발생하고, Windows NT 커널이 제공할 수 없는 기능(linux 커널에 종속적인 기능)에 대해서는 명령을 변환할 수 없다. 이는 Type2 하이퍼바이저에서 발생하는 문제점과 유사하다.

 

따라서 WSL2에서는 구조적인 변화가 이루어졌다.

 

 

WSL2

문제를 해결하기 위해서 WSL2는 Hyper-V를 통해 리눅스 커널을 가상화한다.

 

https://www.tenforums.com/virtualization/119469-hypervisor-type-1-type-2-a.html

 

Hyper-V는 하드웨어 위에 Host OS 없이 하이퍼바이저가 설치되는 Type 1이므로, 변환 과정의 오버헤드가 없이 system call을 제공할 수 있고 리눅스 System call의 모든 호환성을 가진다.

 

 

 

 

 

 

Docker Desktop의 세팅

이처럼 window에서도 Hyper-V를 통해 리눅스 커널 기능을 제공할 수 있으므로 리눅스 컨테이너를 실행할 수 있다.

실제로 windows에 Docker Desktop을 설치하면, WSL2를 사용하도록 세팅할 수 있다.

https://learn.microsoft.com/ko-kr/windows/wsl/tutorials/wsl-containers

 

 

Docker Desktop은 레거시로 제공되는 Hyper-V와 새로운 WSL2 중에 어떤 것을 격리 기술로 사용할지 선택할 수 있다.

 

 

 

 

 

 

 

참조

https://learn.microsoft.com/ko-kr/windows/wsl/tutorials/wsl-containers

https://www.tenforums.com/virtualization/119469-hypervisor-type-1-type-2-a.html

https://dev.to/akionsight/the-underlying-architecture-of-wsl-and-why-is-wsl-2-better-ba0

https://docs.docker.com/desktop/wsl/

https://learn.microsoft.com/ko-kr/windows/wsl/about

https://learn.microsoft.com/ko-kr/windows/wsl/compare-versions

https://mulmandu17.tistory.com/53

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함