[따배도] 1.컨테이너가 뭐에요?
( 참고 : 따배도 https://www.youtube.com/watch?v=NLUugLQ8unM&list=PLApuRlvrZKogb78kKq1wRvrjg1VMwYrvi )
Contents
- Container를 배워야하는 이유
- Why LINUX?
- 일반 Program vs Container
- 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가 만들어진다!
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를 그냥 여러개 올리면 된다!
( 즉, 적은 용량으로 빠르게 확장 가능! )