[따배도] 1.컨테이너가 뭐에요?

( 참고 : 따배도 https://www.youtube.com/watch?v=NLUugLQ8unM&list=PLApuRlvrZKogb78kKq1wRvrjg1VMwYrvi )

Contents

  1. Container를 배워야하는 이유
  2. Why LINUX?
  3. 일반 Program vs Container
  4. Why use Container?


Q1. Container를 배워야하는 이유

trend : H.W.의 가격 down & 성능 up

시대의 흐름

  • (시대 1) 대용량의 bare metal에 여러 application을 운영

  • (시대 2) Hypervisor 사용하여 VM (Virtual Machine)사용

  • (시대 3) 쉽게 scale out/up하기 위해 & 쉽게 배포하기 위해 container engine을 사용

    $\rightarrow$ 대표적인 container engine이 Docker


특정 Application을 동작시키기 위해 필요한 환경/설비들을 미리 container에 넣어놓고 사용하자!

Q2. Why LINUX?

리눅스 Kernel의 기능을 사용하기 위해!

리눅스 커널의 대표적인 기능 :

  • chroot : 독립된 공간 형성
  • namespace : 독립된 공간 안에, 6가지 독립된 isolate 기능 지원
  • cgroup : 필요한 만큼의 H.W를 지원

이러한 기능을 사용하여 container가 만들어진다!


figure2

Windows나 Mac에서도, Hypervisor를 사용하여 리눅스를 설치해서 Docker를 사용할 수 있다.

Q3. 일반 Program vs Container

( 하는 일은 본질적으로 same! 구조만 다를 뿐! )

[ 일반 Program ]

  • 개발자가 짠 소스코드를 돌리기 위해, 운영환경에 개발환경과 동일한 조건/환경을 맞춰줘야 한다

[ Container ]

  • 컨테이너 안에 해당 조건/환경을 맞춰주고, 해당 프로그램/소스코드를 작동시키기!

Q4. Why use Container?

  • a) 개발자가 만든 그대로, 어디서든 돌아갈 수 있다!

개발자가 개발한 applciation을 고객사에게 제공을 할 때,

운영 환경을 container안에다 넣어버렸기 때문에,

(해당 고객사의 환경과 상관 없이) 어느 고객사이든 동일하게 작동할 수 있다!


  • b) 확장 & 축소가 쉽고, MSA (Micro Service Application) & DevOps에 적합하다!

특정 application을 확장하고자 할 때,

  • 일반적으로 컴퓨터(OS)와 엮여서 확장되었던 반면,
  • container구조를 사용할 경우 container를 그냥 여러개 올리면 된다!

( 즉, 적은 용량으로 빠르게 확장 가능! )