반응형
이번 포스팅은 가상화와 컨테이너의 차이점을 다뤄보겠다.
우선 가상화에 대한 개념 혹은 하이퍼바이저(hypervisior)에 대한 개념이 없다면
해당 글을 먼저 읽고 오는 것을 추천한다.
컨테이너란?
클라우드 컴퓨팅에서 컨테이너는 애플리케이션(App)과 App을 구동하는 환경을 격리한 공간을 의미한다. 가상화의 범주 내에서 컨테이너는 기존 하이퍼바이저와 게스트 OS를 필요로 했던 가상 머신 방식과는 달리, 프로세스를 격리하여 ‘모듈화 된 프로그램 패키지’로써 수행하는 것을 의미한다
컨테이너라는 개념이 처음 등장한 것은 2000년대 중반부터 리눅스에 내장된 LXC(LinuX Container)기술로 소개되면서부터이다. 컨테이너 기술이 등장하게 된 계기는 개발한 프로그램이 구동 환경의 달라짐에 따라 예상하지 못한 각종 오류를 발생시키는 것을 해결하기 위함이었다. 이 문제는 SW 개발자의 오랜 골칫거리였는데, 이런 오류가 발생하는 이유는 구동 환경마다 네트워크, 스토리지, 보안 등의 정책이 각각 다를 수 있기 때문이다. 결국 SW를 하나의 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 이동하더라도 안정적으로 실행하는 방법을 모색하여 나온 방법이 바로 컨테이너이다.
어플리케이션의 실행에 필요한 라이브러리(Library, Libs), 바이너리(Binary, Bins), 기타 구성파일 등을 패키지로
묶어서 배포하면, 구동환 경이 바뀌어도 실행에 필요한 파일이 함께 따라다니기 때문에 오류를 최소화할 수 있다.
가상화와 컨테이너의 작동방법 (이미지)
컨테이너의 특징
컨테이너도 VM처럼 프로세싱을 위한 별도의 공간(private space), 루트 권한, 사설 네트워크, IP 주소, 커스텀 라우트, iptable 규칙, 파일 시스템 마운트 등의 기능을 갖추고 있지만 컨테이너는 호스트 시스템의 커널을 다른 컨테이너들과 공유한다는 점에서 크게 차이가 난다.
위 그림을 보면 컨테이너는 App, Bins/Libs 등 유저 공간만을 포함하고 있고 그 밑에는 가상화와 달리 Hypervisor로 인해 guest OS를 생성하지 않고 바로 Host os를 공유한다. 즉 하나의 Host 머신에서 돌아갈 수 있도록 설계되어있으며, 운영체제(os) 단계의 아키텍처를 모두 공유한다. 이것이 VM보다 가볍고 빨라질 수 있는 이유이다.
가상화(VMs)와 컨테이너(Containers)의 특징
반응형
댓글