유튜브 'TTABAE-LEARN'

https://youtu.be/3HId-tpYaZs

1. 컨테이너와 도커의 이해

컨테이너를 쓰는 이유

일반프로그램과 컨테이너프로그램의 차이점

1. 컨테이너를 배우는 이유

시대가 원하고 있다.


출처 : https://edisciplinas.usp.br/pluginfile.php/5539472/course/section/6024418/bare_metal_virtual_machines_and_containers_in_openstack.pdf

  • Bare Metal - 물리적 저장소에 OS 설치 후 어플리케이션 구동.
  • Virtualization - Hypervisor를 기반하여 VM(Virtual Machine) 컴퓨터를 구축하고 해당 컴퓨터마다 OS를 설치하여 어플리케이션 구동.
  • Container - Host 컴퓨터의 OS 위에 컨테이너 플랫폼을 구축하여 기존 가상머신보다 확장성이 뛰어나고 배포가 쉬움.


출처 : https://cultivo-hy.github.io/docker/image/usage/2019/03/14/Docker%EC%A0%95%EB%A6%AC/

컨테이너란 과일, 어류, 전자기기 등을 최적의 상태로 유지하여 전달할 수 있게 각각에 맞는 환경(건조, 냉동, 냉장 등)을 구축하는 것을 말한다.
따라서 Application의 환경에 따라 각각에 대한 최적의 환경을 구현해두어 해당 상품을 동작시켜주는 독립된 공간을 '컨테이너'라고 칭한다.

2. 왜 리눅스에서 돌려요?

기존의 시스템은 리눅스 커널의 기능을 따라 만들어졌기 때문!

chroot - 독립된 공간 형성
namespace - isolate 기능 지원
cgruop - 필요한만큼 HW 지원

위와 같은 Linux 커널의 기능을 이용하여 컨테이너를 구축한다!

이런 sotrage, namespace, networking 등을 컨테이너 플랫폼에서 구현할 수 있게 해주는 것이 '컨테이너 엔진(도커)'

출처 : https://hwan-shell.tistory.com/116

! 윈도우, 맥의 경우는 Linux가 아니므로 Hypervisor가 필요하다!
! 따라서 기업에서는 리눅스 기반 운영을 선호함.

3. 일반 프로그램과 컨테이너는 어떻게 다른가요?

기존의 프로그램과 하는 일은 같지만 구조가 전혀 다르다!

ex.
node라는 프로그램을 통해 app.js가 구현되었고 이를 이용하려할 때

  • 일반 프로그램의 경우 node를 설치하여 코드를 컴파일해야하지만
  • 컨테이너를 이용한 경우 컨테이너 내에 node가 이미 구현되어 있어 최소한의 조건만 갖춰주면 된다!

! 즉, 개발자가 만든 그대로 어느 환경(다른 고객사라고 할지라도)이든 구현할 수 있고 인프라 확장/축소(OS, 프로그램 설치 없이 컨테이너만 이용하여)가 쉽다.
또한, MSA(MicroService Architecture), DevOps(Development & Operation)에 적합하다!


MSA : https://wooaoe.tistory.com/57, https://siahn95.tistory.com/55
Framework/Library : https://engkimbs.tistory.com/673
DevOps : https://aws.amazon.com/ko/devops/what-is-devops/

 


출처 : https://youtu.be/NLUugLQ8unM