들어가기에 앞서
해당 글은 OS Study 도중 생겼던 의구심을 해결하고자 자료를 수집하고 해석한 글이다.
1. Mac OS에서 Windwos Docker Image를 띄울 수 있을까?
먼저 Docker 즉, Container란 무엇인가 알아볼 필요가 있다.
실행 중인 컴퓨터의 커널에 라이브러리, 실행파일을 격리하고, 이 공간 내에 독립된 프로세스 및 네트워크를 실행시키는 기술과 이를 위한 소프트웨어 구성 일체를 이야기한다. 같은 버전 커널에서 동일한 동작을 보장한다. (출처 : 나무위키)
가상머신(VM)과 가장 큰 차이는 자원 사용 방식에 있다.
컨테이너는 Hpyervizor와 Guest OS를 포함하지 않는다. 즉, 컨테이너에는 OS가 포함되지 않는다.
우리가 사용하는 OS는 상당한 리소스(컴퓨터 자원)가 필요한데 VM방식은 Guest OS당 OS가 하나씩 필요한 반면에, Container는 OS Kernel를 공유하여 사용하기 때문에 비용을 적게 쓸 수 있다.
* Docker 같은 Host OS의 커널을 공유한다.
앞서 글을 보았듯이 Container는 기존 Host OS의 OS Kernel를 공유한다. 그렇다면 Mac OS에서 Windows OS Image를 배포할 수 있을까? 잠시 고민해 보면 쉽게 답을 도출해 낼 수 있다. 왜냐면 Mac OS와 Windwos OS의 Kernel를 각기 다르기 때문이다.
그렇기 때문에 Windows OS Image를 Mac OS에서 실행 할 수 없다.
하지만 VM를 사용해서 가능하다는 얘기들이 많다. 하지만 제약 사항이 많고 무거울 수 있기 때문이 직접 찾아보기를 권한다.
(누군가는 해낸다..)
그렇다면 Docker는 Linux로 개발되었는데 어떻게 Windows OS, Mac OS에서 사용 가능한 것일까?
먼저 우리는 Hpyervizor를 떠올려 볼 수 있다.
Docker는 Linux Kernel(Mac Drawin Kernel -> Linux, Windows Linux VM-> Linux)에서 실행되기 때문이다.
(각 OS는 Linux 가상 머신 제공) -> 결국 Docker Native 실행에 비해 성능 저하
2. 각OS가 Linux VM을 사용한다면 무엇이 더 빠를까?
Mac에서는 기본적으로 Linux를 사용하는 것처럼 느껴진다. 왜냐면 Mac OS는 Unix기반이기 때문이다.
당연히 mac이 더 친화적이라 빠를 거라 생각하지만..
Raddit에서 나온 의견을 보면 Linux > Windwos > macOS이다.
당연하게도 Linux에서는 1등을 차지하지만 Windwos > macOS가 상당히 신기하다.
먼저 Windows WSL2(Windwos Subsystem for Linux2)를 통해 Docker를 실행하며 성능적으로 MacOS보다 낫다는 의견이 많다. 또한, MacOS는 Docker Desktop에서 QEMU기반 VM을 사용하기 때문에 제한이 있다는 사실이다.
출처 : https://www.reddit.com/r/docker/comments/1c1b427/is_docker_in_macos_better_than_in_windows/
결론 (ChatGpt)
- 성능 관점:
- Linux > Windows(WSL2 최적화 시) > MacOS
- MacOS는 ARM/x86 호환성 이슈가 있는 경우 속도가 저하될 수 있습니다.
- 개발 편리성 관점:
- MacOS는 Unix 기반으로 개발 환경이 직관적입니다.
- 추천:
- 성능이 가장 중요하다면 Linux를 사용하는 것이 최선입니다.
- 개발 환경의 편의성과 Unix 친화성을 원한다면 MacOS도 적합한 선택입니다.
- Windows를 선택한다면 WSL2와 VMware 등을 조합하여 효율성을 높이는 방법이 필요합니다.
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 멀티프로세스 vs 멀티스레드 (0) | 2023.04.07 |
---|---|
프로세스간 채팅 구현해보기 (0) | 2022.11.25 |