컨테이너 기술의 역사

컨테이너 기술의 역사 – chroot 부터 Kubernetes 와 OpenShift 까지

클라우드 컴퓨팅의 운영 및 관리에 가장 기본이 되는 기술 중의 하나인 “가상화 기술”은 나날이 발전하며 새로운 기술들을 도입하고 있습니다. 그 중에서도 최근 주목을 받고있는 것이 바로 “컨테이너”입니다. 컨테이너 기반의 오픈소스 플랫폼들은 하이브리드 클라우드 구현과 DevOps 그리고 마이크로서비스 아키텍처를 구현하기 위한 필수적인 기술로 자리잡고 있습니다.

컨테이너 기술 (Container) 발표 자료 다운로드
컨테이너 기술의 역사

컨테이너 기술의 시작과 현재까지 발전해온 역사를 살펴봅니다.

컨테이너의 역사는 1979 년에 chroot 를 발표 한 것으로부터 시작합니다. chroot는 이름 그대로 “root (/) 디렉토리 (기준이되는 디렉토리) 변경 (change)” 하는 것 입니다.

chroot는 프로세스의 루트 디렉토리를 변경하는 것으로, 이를 통해 프로세스가 액세스 할 수있는 디렉토리를 제한하거나 시스템 라이브러리와 관련 라이브러리를 로드 할 수 있습니다.
그러나 chroot는 파일이나 디렉토리에 대한 액세스 권한만 제어할 뿐 네트워크 및 프로세스 등을 컨트롤 할 수 없습니다.

컨테이너 의 진화

컨테이너 혁신

지난 2000 년 Unix OS 인 FreeBSD 에서 OS 가상화 기능인 FreeBSD Jail를 발표합니다. FreeBSD Jail는 chroot처럼 파일 액세스를 제어하는 ​​것이 아니라 호스트 OS와 Jail라는 OS 가상화 환경에서 파일 시스템 , 프로세스, 네트워크을 분리 할 수있는 획기적인 기술을 제공했습니다. 이것이 컨테이너의 시작 입니다.

Jail 을 통해 사용자 별로 환경을 분리하여 안전성을 확보하여  임대 서버나 호스팅 등의 서비스에 활용하였습니다.

다음 해인 2001 년에는 Linux에서도 커널에 Linux-Vserver 라는 기능을 추가하여 OS 가상화 환경을 이용할 수 있게 되었습니다. 또한 2004 년에는 상용 Unix OS인 Solaris 에서도 Solaris Zone라는 OS 가상화 기능이 제공됩니다.

2006 년, Google 은 Process Containers는 프로세스 자원 이용량을 제어하는 ​​기능을 발표합니다. 이듬해에 이 기능은 cgroup 으로 이름을 바꿉니다.  2008 년에는 Red Hat 에서 논리적으로 시스템 자원을 분할하는 Namespace를 발표하고, 비슷한 시기에 IBM 에서 LXC (LinuX Containers)를 발표합니다. LXC 가 cgroup 과 Namespace를 사용하여 구현한 최초의 Linux 컨테이너 엔진입니다. LXC 는   이후 컨테이너 엔진의 형태를 형태를 갖추게 되었습니다. 바로 현재 컨테이너 기술의 시초라고할 수 있습니다.

상용 제품으로는 Sun Microsystems (현재 Oracle)의 UNIX 계열 OS인  Solaris 10 에 탑재 된 Zone 라는 기능에 의해 처음으로 구현되었습니다.

그리고이 기술은 Parallels의 ” Parallels Virtuozzo Containers “라는 형태로 x86 용 Linux 와 Windows 로 전파됩니다. 현재도 ” OpenVZ “라는 Linux 용의 오픈 소스 버전으로 오픈 소스 소프트웨어 (FLOSS) 커뮤니티에 의해 개발되고 있습니다. 하지만 현재의 컨테이너화 기술은 오픈 소스 소프트웨어로 ” Linux Containers “(LXC)와 Docker를 기반으로하고 있습니다.

년도별로 살펴보는 컨테이너 기술의 발전

Kubernetes Containerd ( 쿠버네티스 )

2000년 이전

연도

제목

주요 내용

1972

IBM VM / 370 (OS)

  • 최초 가상화 기능 구현

1979

1979 년 UNIX V7 에 chroot
시스템 콜 도입

  • chroot하여 부모 프로세스와 자식 프로세스의 루트 디렉토리를 파일 시스템의 다른 위치로 변경

1999

Virtuozzo 출시

  • 컨테이너 가상화의 새로운 방향을 제시

2000

FreeBSD jail이 FreeBSD 4.0에 도입

  • UNIX에 오래전부터 있었던 chroot를 발전시킨 것

  • 관리자가 FreeBSD 기반의 컴퓨터 시스템을 jail라는 독립적인 작은 시스템으로 분리

2000년에서 2010년

연도

제목

주요 내용

2001

Linux VServer

  • FreeBSD Jail과 마찬가지로 Linux VServer 는 시스템의 자원 (파일 시스템 네트워크 주소 메모리)를 나눌 수 있는 jail 메커니즘을 제공

2003

The Borg System By Google

  • 구글이 제공하는 서비스를 위한 컨테이너 오케스트레이션 시스템

  • Kubernetes 는 Borg를 바탕으로 Google에서 오픈 소스 화 한 컨테이너 오케스트레이션 소프트웨어

2004

Solaris Containers (Zone) 출시

  • Solaris의 컨테이너 기술

2005

Open VZ (Open Virtuzzo)

  • 상용 컨테이너 소프트웨어인 Virtuozzo의 오픈소스 S/W 버전

  • 커널을 공유하면서 분리된 공간 제공하여 현재의 컨테이너 개념과 동일

2008

LXC (Linux Containers)

  • 2008 년 cgroup 및 Linux 네임 스페이스를 사용하여 구현하여 단일 Linux 커널에서 동작

  • 처음으로 Linux 상에서 컨테이너 개념을 가장 완벽하게 구현

2010년 이후

연도

제목

주요 내용

2013

도커 ( Docker)

  • 2013 년 3 월 26 일 Docker 오픈 소스 소프트웨어로 공개

  • RHEL, SUSE, Debian 등 모든 Linux 배포판을 지원

  • 도커는 컨테이너 기술의 확산에 기폭제 역할

2015

쿠버네티스 (Kubernetes )

  • 2015 년 7 월 21 일 Kubernetes v1.0 출시

  • 구글에서 오픈소스로 기증한 컨테이너 스케줄러 / 오케스트레이션 도구

2016

CNCF (  Cloud Native Computing Foundation )

  • 2016 년 1 월에 정식 출범 한 Cloud Native Computing Foundation (이하 CNCF)는 혼돈스러운 컨테이너와 관련된 다양한 기술적인 문제들을 오픈소스로 해결하는 하는 것을 목표

Containerd

  • 2016 년 12 월 Docker에서 containerd 분리

2017

OCI ( Open Container Initiative)

  • 2017 년 7 월 Open Container Initiative 컨테이너 관련 표준 v1.0을 발표

2017  CRI-O
  • 2017 년 7 월 Kubernetes 표준인 CRI ( Container Runtime Interface ) 와 OCI 에 최적화된 표준 컨테이너 런타임 발표

컨테이너 기술 비교

Docker & Container

주요한 리눅스 컨테이너 기술들에 대한 비교 입니다.

Evolution of containers infographic by Red Hat

From simple idea to DevOps darling, a brief history of container technologies.

컨테이너 기술의 혁신 레드햇 인포그래픽 자료 다운로드

컨테이너 와 쿠버네티스

컨테이너

그러한 개발 · 개선 사이클의 속도에 크게 기여할로서 최근 주목 받고있는 것이 컨테이너 기술이다.

컨테이너는 더 낮은 비용으로 애플리케이션을보다 효율적으로 개발함으로써 DevOps에 더 집중할 수 있습니다. 테스트와 환경 구성 그리고 트러블슈팅 같은 고질적인 수작업 중심의 IT 문제에 집중하지 않고 비즈니스 성장에 도움이되는 애플리케이션 개발에 더 많은 시간을 할애 할 수 있습니다.

 DevOps를 실현하는 중요한 기술 요소가  “컨테이너” 입니다. 애플리케이션의 운영 환경을 패키징하고 컨테이너는 고립된 리소스에서 환경을 제공하는 기술입니다.

DX를 실현하기 위해서 민첩한 개발 방법은 큰 서비스 하나로 개발하는 것이 아니라 개별 기능별로 분할된 마이크로 서비스라는 단위로 개발하는 것이기 때문에  컨테이너가 가장 적합한 기술이라고 할 수 있고,  따라서 컨테이너 수가 증가 추세에 있습니다.

컨테이너 수가 증가하면 어떤 노드에 어떻게 자원을 배분하는 것이 효율적인가 와 같은 관리문제가 복잡 해집니다. 그러한 관리를 효율적으로 수행 해주는 소프트웨어가 “Kubernetes (K8s) ‘입니다.  컨테이너 오케스트레이션의 사실상의 표준이 되는 오픈소스 소프트웨어 입니다. 

References & Related Links

Summary
product image
Aggregate Rating
5 based on 6 votes
Brand Name
OPENMARU APM
Product Name
OPENMARU APM (Application Performance MAnagement)