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를 통해 리눅스 커널을 가상화한다.
Hyper-V는 하드웨어 위에 Host OS 없이 하이퍼바이저가 설치되는 Type 1이므로, 변환 과정의 오버헤드가 없이 system call을 제공할 수 있고 리눅스 System call의 모든 호환성을 가진다.
Docker Desktop의 세팅
이처럼 window에서도 Hyper-V를 통해 리눅스 커널 기능을 제공할 수 있으므로 리눅스 컨테이너를 실행할 수 있다.
실제로 windows에 Docker Desktop을 설치하면, WSL2를 사용하도록 세팅할 수 있다.
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
'개발 > Docker' 카테고리의 다른 글
[Docker] Host OS와 Container OS가 다른 경우 어떻게 될까? (0) | 2024.07.17 |
---|---|
Docker로 구현하는 3-Tier 웹 서비스 (0) | 2024.03.01 |
WordPress로 Docker 2tier 구현하기 (with DNS) (0) | 2024.03.01 |
Docker Image Backup 전략 (Docker Registry container) (0) | 2024.03.01 |
Docker container storage (docker run -v), 볼륨과 마운트 차이 (0) | 2024.02.28 |