hoonii2

[컨테이너] 01. 컨테이너, 도커, 쿠버네티스 본문

개념 공부/(인프라) 04. 컨테이너

[컨테이너] 01. 컨테이너, 도커, 쿠버네티스

hoonii2 2022. 9. 28. 17:04

가장 포인트되는 키워드만 정리

 

1. 컨테이너

  - 소프트웨어 서비스를 실행하는 데 필요한 특정 버전의 프로그래밍 언어 런타임 및 라이브러리와 같은 종속 항목과 애플리케이션 코드를 함께 포함하는 경량 패키지

  - 위 컨테이너가 Host OS 위에서 바로 동작한다.

  - 즉, Host OS 의 커널을 이용하여 동작하여 Hypervisor OS 혹은 Hyperviser type 2 프로그램 위에서 동작하는 VM 과 가장 큰 차이점이다

 

2. 도커

 - 컨테이너를 실행하기 위해 사용하는 runtime 으로, 예전엔 lxc 를 이용하여 컨테이너를 분리하였지만 최근엔 자체 컨테이너를 사용하고 있다.

 

2-1. lxc (리눅스 컨테이너)

  1) chroot : 프로세스 별 루트 디렉토리를 변경하여 접근 가능한 디렉토리의 범위를 제한할 수 있지만, 네트워크나 프로세스 등을 컨트롤할 수 없다.

  2) cgroups : os 가 관리하는 리소스를 제어 가능하며, 파일 시스템/프로세스/CPU/메모리/각종 디바이스/네트워크 등의 그룹 리소스를 제한하거나 분리할 수 있다.

  3) lxc : chroot 의 프로세스 루트 디렉토리 변경 및 cgroups 의 네임 스페이스 기능을 통해 다양한 자원을 격리할 수 있다.

  

2-2. 컨테이너 별 격리되는 자원

  1) 프로세스 테이블

    : 컨테이너마다 별도의 프로세스 테이블을 관리하여 컨테이너의 프로세스에서 다른 컨테이너의 프로세스가 보이지 않도록 한다.

  2) 파일 시스템

     : 컨테이너마다 특정 디렉토리가 루트 디렉토리로 보이도록 한다.

  3) 네트워크

    : 네트워크 네임 스페이스 (netns) 의 기능으로 컨테이너마다 별도의 네트워크 설정을 구성한다. 특정 가상 네트워크 NIC 장치를 통해 컨테이너 내부 네트워크 네임 스페이스와 연결하여 동작시킨다.

  4) CPU / 메모리 장치 ('/dev' 위 장치들 )

    : cgroups 의 기능은 컨테이너에서 사용할 수 있는 범위를 제한한다.

 

3. 쿠버네티스

  - 컨테이너가 필요로하는 메모리 및 CPU 자원이 최적으로 관리되도록 적절한 위치에 배포하거나, 컨테이너가 정상 작동중인지 체크하고 위치를 옮기거나 재기동하는 등의 스케줄링을 하기위한 운영 환경이다.

  - 즉, 도커는 컨테이너를 실행하기 위한 엔진이고, 쿠버네티스는 이를 관리하기 위한 환경이다.

Comments