컨테이너란?
컨테이너란?
가상머신의 생성없이 호스트 운영체제에 애플리케이션을 같이 수행하면 애플리케이션들이 디스크, 네트워크 ,CPU,메모리 등을
같이 공유하게 되어 자원의 활용과 보안 문제를 야기합니다.
애플리케이션의 실행환경을 가상화하기 위해서는 애플리케이션이 사용하는 CPU, 메모리 등의 자원에 대한
쿼터를 설정하고 관리할수있어야 하며, 서로 실행환경이 격리되어있어야 합니다.
가상 머신을 사용하는경우엔 하드웨어들이 가상화되어있기때문에 실행환경이 격리되고 각가상 하드웨어를 제공할떄
쿼터를 제공할수있어 간단하다는 장점이있습니다.
컨테이너는 호스트 운영체제의 커널을 공유하면서 격리된 컴퓨팅 자원을 제공하는 가상화 기술입니다.
Hypervisor 같은 소프트웨어로 하드웨어를 에뮬레이팅 하고, 그위에 게스트 운영체제를 설치하는 가상머신과는 달리
컨테이너는 호스트 운영체제만 필요하고 커널을 공유하여 동작합니다.
컨테이너 기술의 장점
1. 부팅이 빠릅니다.
가상머신은 가상의 하드웨어를 준비하고 그위에 게스트운영체제를 부팅합니다. 따라서 부팅시간이 느립니다.
반면 컨테이너는 게스트 운영체제라는 개념이없고 단지 컨테이너 플랫폼위에 프로세스를 띄우는 정도만 수행하면 됩니다.
가상머신에 비해 컨테이너의 서비스 부팅시간은 비교할수없을정도로 차이가 큽니다.
2. 메모리 사용량이 적습니다.
가상머신은 게스트 운영체제가 별도로 실행되어야합니다. 이 운영체제를 위한 시스템 메모리만 수백MB 를 소모하는데,
단순히 애플리 케이션을 수행하기위해 그정도의 메모리를 소모해야하는것은 심각한 오버헤드입니다.
컨테이너는 게스트 운영체제를 띄우지 않기땜누에 딱 애플리케이션과 그 애플리케이션이 수행을 할때 필요로 하는 라이브러리 , 환경구성
정도의 추가메모리만 소모할뿐입니다.
단점
1. 자원의 격리와 쿼터제한이 어렵습니다.
가상머신은 가상하드웨어를 직접 제어할수있기때문에 높은 수준의 자원격리와 쿼터제한을 수행할수있습니다.
컨테이너의 경우 가상 하드웨어를 두고있지 않기때문에 격리 수준과 쿼터 제한이 가상머신에 비해 떨어질수밖에없습니다.
하지만 컨테이너 서비스 플랫폼들의 격리 기술과 쿼터 제한 기술이 발전하고있기는 합니다.
2. 호스트 운영체제에 실행환경이 묶입니다.
컨테이너는 호스트 운영체제의 커널을 공유하기때문에 호스트 운영체제 환경을 그대로 가져갈수밖에없습니다.
예를 들어 리눅스에 컨테이너를 띄워서 윈도우즈 실행환경을 만들수는없습니다.
컨테이너 서비스에 여러 단점들이있지만 클라우드서비스 환경에서 컨테이너 기술을 사용하는것이 가상머신을 사용하는것에 비해
얻을수있는 장점이 압도적이기때문에 많이사용되고있습니다.
Reference
- https://m.blog.naver.com/PostView.nhn?blogId=complusblog&logNo=220980996544&proxyReferer=https:%2F%2Fwww.google.co.kr%2F