컨테이너 기술이란?(VM 과의 차이점)
by 댄싱인더뭉라잇컨테이너란?
컨테이너는 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술이다.
커널을 공유하는 방식이기 때문에 VM에 비해서 실행 속도가 빠르고 성능상의 손실이 거의 없다.
컨테이너를 통해 실행된 프로세스는 name space, cgroup, chroot등의 커널 기능을 이용해 격리된다.
컨테이너에서 사용하는 프로세스 격리 기능
컨테이너 구현에는 리눅스 네임스페이스, 루트 디렉토리 격리, 컨트롤 그룹, 캐퍼빌리티, 유니온 마운트 같은 기술을 사용하여 프로세스를 격리한다.
네임스페이스
네임스페이스는 특정 프로세스의 리눅스 리소스 접근을 제어하기 위해 사용되는 기능이다.
네임스페이스의 종류는 다양하게 존재하며 이 기능을 이용해 프로세스 ID, 네트워크, 도메인 등을 격리하는데 사용한다.
루트 디렉토리 격리와 chroot
컨테이너는 호스트의 파일시스템이 아닌 별도의 실행환경을 가지고 있는데 이를 구현하기 위해 사용되는 기술이 루트 디렉토리 격리 기술인 chroot, pivot_root 같은 시스템 콜이 사용된다.
이를 이용하면 프로세스가 바라보는 루트디렉토리가 파일 시스템 상의 특정 디렉토리를 바라보도록 변경할 수 있다.
컨트롤 그룹
프로세스에서 사용 가능한 하드웨어 자원을 그룹단위로 제어하는 리눅스 커널의 기능이다.
리눅스 캐퍼빌리티
프로세스의 권한을 제어하는 기능이다. 루트의 권한을 세분화해서 프로세스에 적용할 수 있도록 만든 기능이다.
컨테이너 런타임에서 일부 루트 권한이 필요한 경우 리눅스 캐퍼빌리티를 사용해 필요한 권한을 지정하는 방식을 이용한다.
유니온 마운트
계층화된 파일 시스템을 구현하는데 사용하는 기능이다.
컨테이너의 이미지 구현에 사용되는 기능이다.
VM vs Container
VM은 컨테이너보다 훨씬 강력한 격리를 제공한다.
하이퍼바이저라는 소프트웨어가 하드웨어 리소스를 가상화하고, 그 위에 운영체제를 설치한다.
이러한 운영체제는 서버의 호스트 OS와 구분해서 게스트 OS라고 부른다.
VM은 서버 안에 또다른 서버가 있는 것처럼 별도의 OS환경으로 동작한다.
부팅과정도 존재하고 프로그램을 설치하여 사용하는 일반적인 물리 서버를 사용하는 것과 비슷하다.
컨테이너는 호스트 OS를 사용하고 프로세스를 격리하여 실행하는 방식이다.
컨테이너는 VM에 비해서 작고 빠르다. 컨테이너는 호스트 커널에서 바로 처리되고 하드웨어를 직접 관리하는 반면에 VM은 게스트 OS가 하드웨어 사용 시 하이퍼바이저의 처리를 기다려야한다.
'Docker' 카테고리의 다른 글
Portainer 설치 방법 (0) | 2024.07.22 |
---|---|
Centos9 Docker Install(Mac M2 Vmware Fusion) (0) | 2024.07.21 |
블로그의 정보
인프라공방
댄싱인더뭉라잇