쿠버네티스/docker

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

몽자비루 2024. 4. 12. 16:10
  1. 컨테이너를 배우는 이유
    1. SW 운영 플랫폼의 변경 과정
      • Bare Meter
        • 대용량의 bare metal에 여러개의 애플리케이션 운영 구조.
      • Virtualization
        • 하드웨어 가격은 싸지고 성능은 좋아지는 동시에, 시스템이 대용량을 요구함.
        • bare metal 에 hyperviser (가상컴퓨터) 를 만든 뒤, 필요한 애플리케이션을 사용하는 구조로 변경
      • Any Infrastructure
        • Virtualization 에서 애플리케이션 서비스에서 요구하는 클라이언트 양에 따라 자유롭게 확장/축소
        • bare metal 에 OS를 올린 뒤 container engine을 올림 (docker 는 container engine 중 하나)
    2. 컨테이너의 특징
      • 애플리케이션을 동작시키는 데 필요한 환경
        library, java, node.js 와 같은 플랫폼 등등...
    3. 왜 리눅스에서 사용하는가?
      • 리눅스 커널의 기능을 사용해야 함.
        • chroot : 독립된 공간 형성
        • namespace : isolate기능 지원
        • cgroup : 필요한만큼의 HW 지원
      • windows, macos 에서는 hyperviser 기능을 활성화 한 뒤 container 사용
  2. 일반 프로그램과의 차이점
    1. 일반 프로그램 : 애플리케이션을 실행할 수 있는 환경을 준비해야 함.
    2. 컨테이너 : 애플리케이션을 실행할 수 있는 환경을 컨테이너 자체에 만들음.
  3. 사용하는 이유
    1. 개발자가 만든 프로그램을 어디서든 돌릴 수 있음.
    2. 확장/축소가 쉬워, MSA, Devops에 적합하다.
      ㄴ micro service architecture
      ㄴ Dev-ops
    3. 개발 환경과 운영 환경이 다름을 극복할 수 있음
    4. 일반 프로그램 : 애플리케이션 확장 필요 시, OS와 함께 확장됨
    5. 컨테이너 : 플랫폼을 만든 뒤 컨테이너를 올린 뒤 확장/축소함