👩‍💻 BackEnd/🚛 도커 [Docker]

[따배도] Docker 시리즈 1

minhe2810 2023. 10. 15. 20:33

1. 컨테이너를 배워야 하는 이유 

 

SW 운영 플랫폼의 변화

  • Bare Metal 에 여러개의 애플리케이션을 한 시스템에서 운영 
  • VM 가상머신에 필요한 시스템 올려서 사용 
  • 스케일 인, 아웃 (자유롭게 확장, 축소) 해야하는 환경이 필요하게 됨. 컨테이너 엔진을 활용
    적은 용량으로 운영 가능, 확장성이 좋고, 배포가 쉬움 -> 컨테이너가 요구되는 시대 \

 

유통 환경이 필요

냉동? 건조? 

냉동 설비 / 냉장 설비 / 건조 설비 등을 미리 컨테이너에 설비한 후 유통을 하겠다. 

 

애플리케이션이 존재한다면, 이를 동작하는데 필요한 환경 (라이브러리 , 플랫폼 등) 

 


 

2. 왜 굳이 리눅스에서 돌리는지 

- 리눅스 커널의 기능을 사용해야하기 때문 

 

리눅스 커널의 기능 

  • chroot : 독립된 공간 형성 
  • namespace : isolate 기능 지원 -> 독립된 공간으로 분리해주는 것 
  • cgroup : 필요한 만큼 하드웨어 지원 -> 필요한 만큼의 하드웨어를 할당

이 리눅스 커널의 기능을 기반으로 컨테이너를 만든 것!! 

 

 

리눅스 커널이 없으면 컨테이너를 돌릴 수 없음. 

따라서 window or mac os 에서는 Hypervisor 를 활성화 해줘야 함.

 

리눅스는 이미 커널로 운영하기 때문에 바로 도커 플랫폼을 운영하고 있음.

그래서 컨테이너는 리눅스에서 운영함.


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

구조, 모양이 다름. 

 

컨테이너 기반은 소스코드를 갖고 컨테이너를 빌드하는 것! -> Dockerfile 


4. 도커를 쓰는 이유 

  • 개발자가 만든 그대로를 어디서든 돌리기 위해서!
  • 확장 / 축소(scale out / in)가 쉽고  MSA / Devops에 적합하다.  
  • 고객의 요구를 빠르게 처리해서 빠르게 응답하기 위함. 
  • 개발자가 만든 애플리케이션을 고객사에서 운영할 때 환경이 동일하기 힘듬. 하지만 컨테이너를 활용하면 환경의 차이 없이 똑같은 구성으로 운영을 할 수 있게 됨. -> 환경에 영향을 받지 않게 할 수 있음. 
  • 적은 용량으로 빠르게 확장할 수 있음.