컨테이너란? 일반적인 가상화의 차이점

작성자 이경미 수정일 2022-12-23 13:32

이 글을 읽으면

  • 제품의 기반인 컨테이너의 의미에 대해 이해할 수 있습니다.



내용

Docker를 사용하게 되면 가장 처음 접근하게 되는 것이 container와 가상화입니다. 

등장하게 된 배경은 향상된 컴퓨터의 성능을 더욱 효율적으로 관리하기 위해서 가상화 기술이 많이 등장하였습니다. 

 

서버 가상화란 사용되지않는 리소스들을 효율적으로 관리하여 낭비를 줄이고, 한 서버에 많은 서비스를 올리는 것 보다 독립적으로 분리시켜 안정적으로 관리할 수 있도록 하기위해 나타나게 되었습니다. 

대표적인 가상화 플랫폼으로 VM이 존재하고 VM 의 단점을 보완하여 나타난 컨테이너에 대해 알아보겠습니다. 

 

컨테이너란? 


 

컨테이너란 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 애플리케이션을 각 독립된 환경에서 실행시켜주는 기술입니다. 

VM 과 달리 커널을 공유하는 방식으로 실행속도가 빠르기 때문에 빠른 배포와 높은 확장성을 가지고 있습니다. 

커널을 공유해도 리눅스 네임스페이스컨트롤 그룹루트 디렉토리 등 커널 기능을 활용하여 독립적으로 실행됩니다프로세스로 인식되지만 컨테이너 관점에서는 독립적으로 실행되는 것은 가상머신처럼 사용되고 있는 것처럼 사용되는 것을 볼 수 있습니다. 

 

사용 환경 

VM 과 컨테이너는 확장방식과 이식성에 차이점을 가지고있으므로 쉽게 이동이 가능한 컨테이너가 필요한지사용자가 정의한 IT 자원의 반영구적 할당이 필요한지에 따라서 구분하여 사용해야합니다. 

 

VM 

VM 은 Hypervisor가 최적화된 운영체제입니다 

그렇기 때문에 단일 컨테이너보다 훨씬 더 많은 작업을 수행할 수 있습니다하지만 이러한 확장된 기능으로 인해서 OS, 애플리케이션라이브러리에 의존하여 이식성이 컨테이너보다 떨어지게 됩니다. 

VM 은 다음과 같은 환경에서 적합합니다. 

  • 기존레거시 및 모놀리식 워크로드 수용 
  • 위험한 개발 사이클 분리 
  • 인프라 리소스(예: 네트워크서버데이터프로비저닝 
  • 다른 OS에서 또 다른 OS 실행(예: Linux에서 Unix 실행) 


 

컨테이너 

컨테이너는 빠른 이식성과 배포독립된 운영에 최적화된 기술입니다. 

각 컨테이너 애플리케이션이 작동하며 웹서버 기반으로 동작시키므로 가볍습니다. 

독립된 공간에서 실행되어 서로에게 영향을 미치지않고 동작하는 가상머신의 특성을 가지고 있으며 빠르게 확장하고 빠르게 배포되어 이상적인 환경을 구축하고 있습니다. 

컨테이너는 다음과 같은 환경에서 적합합니다. 

  • 클라우드 네이티브 애플리케이션 빌드 
  • 마이크로서비스 패키징 
  • DevOps 또는 CI/CD 프랙티스 촉진 
  • 동일한 OS를 공유하는 다양한 IT 설치 공간에서 확장 가능한 IT 프로젝트로 전환 

 

 

작동원리 

App 
App 
App 
App 
Bin/ Library 
rating System 
Virtual Machine 
Bin/ Library 
Operating 
Virtual Machine 
App 
App 
Libraw Bin/ Library 
Container 
Container 
App 
Bin/ Libra 
Container 
Hyperviso 
Hardware 
Virtualized Deployment 
Container Runtime 
rati S tem 
Hardware 
Container Deployment

VM 작동원리 

하드웨어 인프라에 Hypervisor를 설치하게 되면 소프트웨어적인 기술을 이용하여 가상의 머신을 만들어 줍니다이때 생성된 하드웨어 (메모리, CPU, network, disk..) 에서 OS를 설치하고 애플리케이션을 동작시킵니다. 

애플리케이션이 웹서버일 때는 리소스를 요청했을 때 그만큼의 하드웨어 용량을 할당하여 가상머신을 동작시키고리소스를 추가하는 경우 서비스가 원활하게 동작할 수 있도록 늘려주기도 합니다. 

이를통해 VM 은 실제 인프라에 있는 하드웨어를 효율적으로 관리할 수 있다는 것을 알 수 있습니다. 

 

컨테이너 작동원리 

컨테이너는 LXC를 활용한 기술로독립적인 환경을 구축합니다컨테이너는 호스트 OS 커널을 공유하며 단순히 하나의 격리되어 있는 프로세스로서 동작하고 이 때, 커널을 공유하면서 io처리가 쉽게 되어 성능의 효율을 높일 수 있습니다독립된 공간으로 실행되어 서로에게 영향을 미치지않는 가상머신처럼 동작합니다. 

 

즉, VM 은 커널을 공유하지 않는 만큼 멀티 OS가 가능합니다커널을 공유하지 않아 멀티 OS가 불가능 하다는 것은 Linux위에 Window를 올릴 수 없다는 단점이도 존재합니다그럼에도 컨테이너 방식을 쓰는 이유는 성능향상뛰어난 이식성쉽게 Scale Out을 할 수 있는 유연성으로 사용할 수 있다는 것을 알 수 있습니다. 

 

 

## Scale Out? 

‘Scale-Out(수평증설)’ 이란 필요할 때마다필요한 용량만큼을 늘려가는 방식입니다. 이 경우 각각 분산된 장비들 사이에 같은 정보를 공유하고적정한 업무를 할당하도록 중재해주는 기능을 추가로 구성해 주어야 합니다. 



아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300