imhamburger 님의 블로그

도커(Docker) - 가상화 기술과 컨테이너 이해하기 본문

도커(Docker)

도커(Docker) - 가상화 기술과 컨테이너 이해하기

imhamburger 2024. 7. 3. 15:49

도커는 무엇인가?

도커는 컨테이너 기술을 기반으로 한 가상화 기술을 누구나 이용할 수 있도록 만든 플랫폼이다.

 

컨테이너 기술? 가상화 기술?

먼저 컨테이너와 가상화 기술에 대해 알아보자.

 

A라는 회사가 여러 어플리케이션을 사람들에게 제공한다고 가정해보자. 과거에는 한 서버OS에 여러 어플리케이션을 연결하여 제공하였다. 아래 그림처럼 말이다.

 

 

여기서 서버OS는 개인용 컴퓨터 OS와는 달리 높은 성능, 안정성, 보안성 그리고 동시에 여러 사용자와의 통신을 지원한다.

위 그림처럼 서버를 돌리게 되었을 때 어떤 문제가 생길까?

한 어플리케이션이 문제가 생겼을 때, 서버를 공유하고 있기 때문에 다른 어플리케이션까지도 영향을 줄 수 있어 아주 치명적인 문제가 발생하게 된다.

 

그럼 서버OS만 따로 사용하면 되는거 아니야?

그래서 가상화 기술이 생겨났다. 가상화 기술은 서버OS를 독립적으로 사용할 수 있게 나눠줄 수 있다. 아래 그림처럼 말이다.



하지만 호스트OS와 게스트OS가 들어가 있는 가상화 공간을 이어주기 위해서는 하이퍼바이저라는 것이 필요하다. 하이퍼바이저는 단지 물리적 머신에서 여러 가상 머신을 실행하는 것을 도와주는 일종의 다리역할을 하는 소프트웨어이다. 이제 하이퍼바이저란 기술을 이용하여 가상화된 공간에 OS들을 독립적으로 사용할 수 있게 되었다.

 

와 그럼 이제 다 해결이 된건가?

라고 생각했지만, 이 구조에도 문제가 있다.

 

첫번째

회사가 어떠한 프로모션을 진행하여 어플리케이션 트래픽이 서버가 가지고 있는 CPU를 넘어선다면 서버는 과부하로 인해 터질 것이다. 그것을 방지하기 위해 회사는 또 다른 서버를 구매해야 한다. 구매했다고 가정하였을 때, 프로모션을 안하는 동안에는 새로 구매한 서버는 다시 필요가 없어진다. 이렇듯 불필요한 비용을 많이 초래한다.

 

두번째

무조건 하이퍼바이저를 거쳐야 하기 때문에 속도 저하가 일어난다. 또 가상머신은 해당 어플리케이션을 구동하는 데 모든 파일을 포함하고 있기 때문에 파일이 무겁다.

 

그.래.서 컨테이너 기술이 등장했다.

 

컨테이너 기술은 하이퍼바이저와는 달리 가상의 게스트OS를 만들지 않는다. 베이스 환경의 OS를 공유하면서 필요한 프로세스만 가져다가 쓰는 방식이다. 여기서 '필요한 프로세스'라는 말은 어플리케이션을 구동할 때 필요한 CPU 혹은 메모리 등을 베이스 환경의 서버OS로 부터 필요한 만큼만 가져다가 쓴다는 의미이다.  

 

그럼 어떤방식으로 어플리케이션들을 독립시킬 수 있는거지?

컨테이너는 독립시킬 어플리케이션과 어플리케이션을 구동시키기 위한 파일과 라이브러리 등을 이미지화한다. 따라서 하이퍼바이저보다 가볍고 하이퍼바이저를 거칠 필요도 없어 실행속도가 빠르다.

 

이미지화하면 수정할 때는 어떻게 해야하지?

이미지는 레이어 구조로 이루어져 있는데(포토샵의 레이어처럼 겹겹이), 수정할 부분이 생기면 새로운 레이어를 추가해서 수정하면 된다. 굳이 이미지 전체를 다운받을 필요가 없다.

 

이렇듯 컨테이너 기술이 기존의 기술보다 훨~씬 효율적이기 때문에 많이 사용되고 있다. 

 

이제 컨테이너 기술이 뭔지 가상화 기술이 뭔지 알게되었다.

 

그래서 도커가 뭔데?

앞서 말했듯이 도커는 컨테이너 기술을 기반으로 한 가상화 기술을 누구나 이용할 수 있도록 만든 플랫폼이다.

더 쉽게 표현하자면 컨테이너를 관리해주는 전문가라고 생각하면 된다.

 

다음엔 도커에 대해 더 자세히 정리해보도록 하겠다.