Docker

버츄얼 머신으로 해결할 수 있지 않나요?

Eppo:) 2023. 8. 13. 00:45

호스트 운영 체제에 독립적인 자체 셀(shell)을 지닌

캡슐화된 가상 운영 체제,  버츄얼 머신을 설치하면 되는 것이 아닌가??

 

#버츄얼 머신을 사용하여 독립적인 환경을 구축할 때 

App A App B App C
앱을 실행할 때 필요한
라이브러리와 디펜던시 Tools
앱을 실행할 때 필요한
라이브러리와 디펜던시 Tools
앱을 실행할 때 필요한
라이브러리와 디펜던시 Tools
가상의 운영체제 가상의 운영체제 가상의 운영체제
운영체제

 

버츄얼 머신을 사용한다는 건 호스트 운영체제 위에 버츄얼 머신을 설치한다는 것이다.

말하자면 컴퓨터 내부의 컴퓨터 

 

이 버츄얼 머신에는 그 버츄얼 머신 내부에서 실행되는 자체 운영 체제인 가상 운영 체제가 있다.  

우리는 거기에 원하는 무엇이든 설치하고 운영할수 있다. 

ex ) 필요한 모든 라이브러리, 종속성 및 도구를 설치한 다음 소스 코드를 그 위치로 이동하여 운영 ok

프로그램을 실행하기 위해 필요한 모든 것과 거기에 설치되는 모든 도구가 포함된 캡슐화된 버츄얼 머신이기 때문에 

이러한 버츄얼 머신은 서로 다른 프로젝트에 대해 이러한 여러 개를 만들어서 운영할 수 있고, 버츄얼 머신 구성을 동료와 공유하여 

동일한 환경을 제공하고 작업하면서 공유도 가능하다. 

도커, 컨테이너와 동일하게 사용할 수 있잖아 ㅇ_ㅇ? 라고 생각할 수 있지만. 이런 동작 방식에는 몇가지 문제가 있다. 

 

가장 큰 문제는 가상 운영체제를 지닌 여러 버츄얼 머신에서 발생하는 오버헤드 

모든 버츄얼 머신은 실제로 하나의 컴퓨터 위해서  실행되는 또다른 독립적인 스탠드 얼론 컴퓨터와 같다. 

가상머신이 여러대 있는 경우에는, 하나의 물리적인 컴퓨터 안의 메모리 /CPU를 사용하게 되니 성능이 저하되고 

동일 운영체제를 가진 가상 머신을 여러대 구성한다면 가상운영체제와 같이 항상 동일하게 복제되는 것들이 많아져  실제 컴퓨터 하드드라이브의 공간도 낭비하게 된다. 

 

버츄얼 머신의 장점 버츄얼 머신의 단점 
- 분리된 환경을 생성할 수 있음 
- 그 안에서 각각 환경을 구성하여 운영할 수 있으며
- 구성된 모든것을 안정적으로 공유하고 재생산할 수있음 
- 중복 복제를 통해 낭비되는 공간이 발생 
- 호스트 시스템 위에 추가 시스템이 실행되기에
   성능이 나빠질 수 있음 
- 이러한 시스템이 여러개가 있을 경우 앱 실행시 성능이 저하됨 
- 재생산 및 공유가 가능하더라도
   원하는 버츄얼 머신에 동일 방식으로 재구성이 필요하여 까다로움

 

컨테이너를 사용하면 여전히 호스트 운영 체제는 존재하지만 하나의 머신에 몇대의 머신을 설치하지 않는다. 

 

#컨테이너/ 도커를 사용하여 독립적인 환경을 구축할 때 

App A App B App C
앱을 실행할 때 필요한
라이브러리와 디펜던시 Tools
앱을 실행할 때 필요한
라이브러리와 디펜던시 Tools
앱을 실행할 때 필요한
라이브러리와 디펜던시 Tools
도커 엔진 
운영체제가 기본적으로 내장하고 있는 컨테이너 or 컨테이너를 지원하는 에뮬레이터
운영체제

 

운영체제에 기본적으로 내재하고 있는 컨테이너 또는  컨테이너를 사용할 수 있도록 지원하는 컨테이너 에뮬레이터를 활용, 

그리고 그 위에 도커엔진이 실행되며 이것이 작동하도록 처리한다. 

컨테이너의 작동 뿐만아니라 컨테이너의 설치도 도커에 의해 결정된다. 

 

도커를 통해 생성된 컨테이너에는 부풀려진 운영체제, 수많은 추가 도구 또는 이와 유사한 것을 포함하지 않아 가볍다. 

컨테이너 내부에 작은 운영체제 레이어가 있을 수 있지만  버츄얼머신에 설치하는 것 보다 훨씬 작은 매우 가벼운 버전의 운영체제 

 

컨테이너의 또다른 장점은 이러한 환경을 파일로 구성할 수 있다는 것, 이러한 파일을 다른 사람들과 공유해서 그들이 컨테이너를  만들 수 있도록 하거나, 컨테이너 자체를 이미지로 빌드할 수도 있어 이미지를 다른사람과 공유하여 동일한 컨테이너를 시작할 수 있도록 할수 있다. 

 

#정리

버츄얼머신 도커 컨테이너
- 운영체제에 많은 영향을 끼친다
- 속도가 느리고 디스크 공간을 더 많이 차지하는 경향이 있다. 
- 공유 재구축 및 배포가 가능하지만 컨테이너와 도커보다 까다롭다.
- 앱을 실행하기 위한 환경을 캡슐화하지만 필요한 것만 캡슐화 
   하는 것이 아닌 컴퓨터 전체를 캡슐화한다. 
- 운영체제와 시스템에 미치는 영향이 적다
- 빠르다 
- 최소한의 디스크 공간을 사용하며
- 컨테이너 구성파일 또는 이미지 파일이 있기 때문에 공유 재구축 및 
   배포하는 것이 매우 쉽다. 
- 앱을 실행하기 위한 모든 것을 캡슐화하여 환경을 보유하지만
   그 외의 부가적인 것은 담지 않는다(가상 운영체제와 같은)

 

# 결론

버츄얼 머신은 드물게 유용할 수 있지만 반드시 필수적이지 않은 거품이 낀 완전히 별도의 머신을 갖는 것과 같으니

도커를 사용합시다 ㅇ_ㅇ