1. 컨테이너란? 

운영체제에서 실행되는 프로세스를 격리하여 별도의 실행 환경을 제공해주며, 해당 프로세스는 운영체제상에서 실행되는 유일한 프로세스인 것처럼 작동한다. 즉, 운영체제에서 실행되는 여러 프로세스는 컨테이너라는 개념으로 격리되어 별도의 운영환경을 제공하는 기술이다.

 

컨테이너 환경을 제공하는 기술 

chroot

Docker

LCX

Solaris Containers(Zones)

FreeBSD Jail

WPARS(AIX)

rkt

 

2. 컨테이너 아키텍처

리눅스 시스템에서 컨테이너를 이용하여 격리 구조를 만드는 기법은, 격리를 담당하는 Linux Namespace와 리소스를 제어하는 Control Group(cgroup)을 사용하여 격리된 컨테이너 환경을 제공한다.

 

네임스페이스 종류

마운트 포인트

프로세스

네트워크 - IPC

UTS

사용자

 

제어 그룹은 프로세스 또는 컨테이너가 사용할 수 있는 리소스의 양을 제한 할 수 있다. (CPU, 메모리, 네트워크 대역폭, 디스크 입출력)

 

3. 도커 컨테이너

컨테이너 기술은 오래전부터 존재해왔던 기술이지만 Docker Inc가 만든 도커 플랫폼의 등장으로 컨테이너 플랫폼에 대해 널리 알려지고 쉽게 사용할 수 있게 되었다. 도커는 네임스페이스와 제어 그룹 기술을 사용하여 애플리케이션을 패키징, 배포 실행하는 플랫폼이다.

 

주요 개념 

이미지 : 실행할 애플리케이션과 라이브러리 및 환경을 하나의 패키지로 묶은 것

레지스트리 : 이미지를 저장하고 공유할 수 있는 스토리지

도커 허브 등과 같은 공용 레지스트리와 개인 및 특정 시스템만 사용할 수있는 사설 레지스트리를 직접 구축할 수 있다.

컨테이너 : 이미지를 실행할 컨테이너 

 

도커는 컨테이너를 주류 기술로 만든 최초의 컨테이너 플랫폼으로 , 쿠버네티스에서 기본적으로 애플리케이션을 구동하기 위한 구성요소 중 하나이다.

현재 쿠버네티스는 도커 이외에도 컨테이너 형식 및 컨테이너 런타임에 대한 개방된 표준을 만드는 OCI가 생겨, OCI표준의 컨테이너 대부분을 지원한다. (대표적으로 rkt)

 

컨테이너 vs 가상머신 

가상 머신은 애플리케이션을 동작시키기 위해서 애플리케이션이 사용하는 리소스만 사용하는 것뿐만 아니라 운영체제가 동작하기 위한 리소스가 추가로 필요하다. 그러나 컨테이너는 애플리케이션이 동작하기 위한 리소스만 사용하기 때문에 훨씬 더 빠르고 가볍게 동작한다.

 

도커와 가상머신 비교

 

쿠버네티스란?

쿠버네티스는 '조타수' '파일럿'을 뜻하는 그리스어에서 유래하였으며 K8s라고 부르는데 이는 국제화를 110n으로 표기하는 것과 같이 'ubernete' 글자 개수로 대체한 약어이다. 

 

구글은 전 세계 적으로 수십만 대의 서버를 운영하고 있으며, 소프트웨어와 인프라를 전 세계에 확장될 수 있는 훨씬 진보된 방법을 찾았고 Borg라는 내부 시스템을 개발하여 개발자와 관리자가 수천 개의 애플리케이션과 서비스를 관리하는데 도움을 주었다. 

 

이후 구글의 Borg 시스템은 쿠버네티스란 이름으로 오픈소스를 공개하고, 이를 Linux 재단 산하의 CNCF 재단에 기증하였다. CNCF는 컨테이너 기술 및 주위 기술에 대한 프로젝트를 담당한다.

 

쿠버네티스가 제공하는 기본 기능 요약

컨테이너 플랫폼

마이크로 서비스 플랫폼

이식성 있는 클라우드 플랫폼 

 

즉, 쿠버네티스는 컨테이너 기반의 분산 클러스터 환경을 제공하며 워크로드를 위해 컴퓨팅, 네트워킹 및 스토리지 인프라를 오케스트레이션 한다.

+ Recent posts