본문 바로가기
Web/Infra

도커와 가상머신, 그리고 OS

by EricJeong 2020. 8. 29.

 

개요

도커와 가상 머신이란?

도커 컨테이너와 가상 머신은 애플리케이션에 독립적인 리소스를 할당하고, 격리된 프로세스를 실행할 수 있다는 장점이 있어서 널리 쓰이는 기술입니다. 가상머신과 컨테이너 모두 어떤 서버 환경에서 구동하더라도 독립적인 리소스로 구동되기 때문에 서버에 대한 모든 종속성을 제거할 수 있다는 장점이 있습니다. 한번 구성해놓은 환경으로 다른 서버에서 구동시키더라도 이동한 서버에서 다시 환경 세팅을 해주지 않아도 된다는 편리함을 가지고 있습니다.

 

가상머신

가상 머신은 Host OS위에 하이퍼바이저를 이용하여 물리적인 장치를 가상화합니다. 가상화된 머신에는 그에 맞는 OS를 설치해주어야 하며 이때문에 아주 작은 애플리케이션을 가상화하더라도 OS로 인해 큰 용량을 가지고 있는 무거운 가상 머신을 만들 수 밖에 없었습니다.

 

OS를 포함하여 무거워진 가상머신 파일은 배포를 위해 전송하기에도 부담스럽습니다. 무거운 용량을 감수하고 보낸 가상머신을 서버 위에서 구동하더라도 하이퍼바이저를 통하여 구동되기 때문에 Host OS 바로 위에서 구동되는 것에 비해 성능 손실을 감수해야 했습니다.

 

도커

도커 엔진은 OS를 가상화하지 않습니다. 논리적으로 자신만의 독립된 자원과 공간을 확보할 수 있고 OS는 Host의 OS를 같이 사용합니다. HOST의 커널을 공유하며 도커 내부에서 애플리케이션을 위한 환경설정, 실행 파일, 라이브러리, 환경 변수들만 해당 도커 이미지 내부적으로 사용하도록 만듭니다.

 

OS를 포함하지 않은 이미지는 굉장히 가벼워졌고 하이퍼바이저를 사용하지 않기 때문에 성능적인 손실 또한 최소화되었습니다. 가상 머신에 비해 훨씬 가벼운 이미지 용량을 가지고 있어 배포를 할 때 더 적은 용량의 파일을 전송하도록 만들 수 있었습니다.

 

 

도커와 OS

도커는 리눅스 OS위에서 작동하도록 설계되어있습니다. 리눅스의 chroot jail이라는 기능을 기반으로 컨테이너 내부에서는 외부 Host OS의 존재를 인식할 수 없지만, 외부 Host OS에서는 컨테이너를 그저 하나의 프로세스로 보고 있습니다.

 

이러한 기능은 윈도우즈나 mac os에서는 직접적으로 구현하기 어렵기 때문에 도커를 윈도우 또는 mac에서 사용할 때에는 가상 머신 위에 리눅스를 설치한 후 그 위에 도커를 올리거나, OS의 자체적인 가상화 기술을 사용하여 도커를 리눅스 위에 설치하게 됩니다. 즉 리눅스를 제외한 OS에서 도커를 사용하면, 결국 리눅스를 가상화한 후 도커를 설치하게 됩니다.

 

Docker toolbox는 리눅스 가상 머신을 우선 생성합니다. 이후 해당 리눅스가 설치된 가상 머신에 도커를 설치하는 방식을 채용합니다. 도커를 사용하지만 결과적으로 봤을 때 가상 머신과 다를 게 없습니다.

 

Docker for Windows/Mac은 리눅스 가상 환경을 생성하기 위하여 Linuxkit을 사용했습니다. Linuxkit은 리눅스의 커널을 최소한으로 경량화하여 필요한 작업만 컨테이너 기반의 서비스로 정의해 사용합니다. Mac, Windows 모두 이 Linuxkit을 사용하여 리눅스 가상 환경을 만듭니다.

 

2020년 5월 도커는 윈도우즈에 새로 업데이트된 WSL2 기능을 사용하여 가상화를 하기 시작했습니다. Docker for Windows를 설치할 때 기본적으로 체크된 상태로 설치가 진행됩니다.

 

 

이처럼 도커는 여러 업데이트를 통해 윈도우나 맥에서도 도커의 사용을 조금 더 최적화하고 있습니다. 물론 최적화된 사용을 원한다면 리눅스 OS 위에서 도커를 운용하는 것이 가장 좋은 방법입니다.

 

 

References

https://www.docker.com/blog/

 

Docker Blog - News, Education & Version Updates

Read the Docker Blog to stay up to date on Docker news and updates. New version launches will be announced here. Learn from experts to get the most out of Docker.

www.docker.com

http://www.yes24.com/Product/Goods/84927385

 

시작하세요! 도커/쿠버네티스

본서는 도커를 처음 접하는 개발자를 위한 도커 컨테이너와 이미지의 기본적인 개념을 먼저 설명한 뒤, 도커 컴포즈와 스웜 모드를 통해 컨테이너 애플리케이션을 YAML 파일로 작성하고 클러스��

www.yes24.com

 

댓글