[쿠버네티스] (1) 컨테이너와 도커란?

Sean·2023년 1월 27일
0

1. 컨테이너와 도커란?

‘도커(docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다.’

→ 그렇다면, 여기서 컨테이너는 무엇일까요? 도커를 알기전에 컨테이너의 개념을 파악했습니다.

1) 컨테이너 개념

선박 컨테이너? 왜 사용할까?
‘규격화’, ‘운반의 용이성’, ‘다양한 물건 탑재 가능’

(1) 소프트웨어 컨테이너(Software Container)

  • 다양한 프로그램, 실행 환경 등을 컨테이너로 추상화할 수 있음
  • 프로그램의 배포 및 관리를 단순하게 해주는 기능
    - 즉, ‘패키징’ 과 ‘운반’을 편리하게 해준다는 공통점 → 컨테이너라고 불리는 이유
    • 그러면 컨테이너는 어떻게 구성될까요? 프로그램? 물리적으로 존재할까요?

(2) 가상화(Virtualization) 와 리눅스(Linux) 컨테이너

  • 가상화란?

    • 컴퓨터 리소스의 추상화를 일컫는 말
      - 애플리케이션, 서버, 저장장치 등 물리적으로 하나인 것을 복수의 것처럼
      - 또는, 복수의 것을 하나인 것처럼 만들어 주는 기술
  • 가상머신(VM)이란?

    • 가상화를 통해서 만들어지며, 호스트 운영체제에서 구동됨
    • 그 바탕이 되는 하드웨어에 가상으로 액세스하는 Guest 운영체제를 가지는 일종의 격리된 머신
      • 하나의 컴퓨터 (물리적인 컴퓨터 자원 → 가상화 → 별도의 컴퓨터 → 운영체제 설치)

그렇다면, 컨테이너와 가상머신은 같은 개념일까요?

  • 컨테이너와 가상머신은 공통적으로,
    • 애플리케이션을 관련 라이브러리 및 모든 종속항목과 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리환경을 마련해줍니다.
    • 여기서 패키지는 APP 에 필요한 모든 파일, 설치파일, 필요한 모든 것을 의미
      → 하지만, 가상화 방식이 다름
  • 기존의 VM 생성 방식 → OS 가상화 → Host OS 위에 Guest OS 전체를 가상화하는 방식
    • 그러므로 OS가 가상머신 이미지에 포함되어야만 하고, 이는 용량이 매우 큰 문제
  • 컨테이너 → 별도의 하드웨어 에물레이션 없이 → 리눅스 커널 공유 → 컨테이너 실행
    • Guest OS가 존재하지 않음
      - 운영체제 수준의 가상화

(3) 프로세스 격리

별도의 하드웨어 애뮬레이션 없이 리눅스 커널을 공유하여 컨테이너를 실행하며 Guest OS가 존재하지 않는 ‘운영체제 수준의 가상화’
→ 이것이 가능한 이유는? 리눅스 컨테이너를 통해 ‘프로세스를 격리’ 하는 것이 가능하기 때문입니다.

  • 리눅스(Linux) 운영체제
    • 커널 공간
    • 사용자 공간
      • 사용자 공간을 여러 개로 나누어 프로세스에서 사용하는 리소스를 제한할 수 있음
        - 이것이 바로 컨테이너의 근간이 되는 기술

“즉, 각각의 프로세스가 독립한 공간에서 할당받은 자원을 이용하여 동작하도록 만들 수 있음”

→ 리눅스에서 제공하는 다음과 같은 기술의 제공으로 인해…

  • 리눅스 네임스페이스(NameSpace)

    • 각 프로세스가 파일시스템, 네트워크, 유저, 호스트네임 등에 대해서 시스템이 독립뷰를 가질 수 있도록 만듬

  • 리눅스 컨트롤 그룹(cgroups)

    • 프로세스가 소비할 수 있는 리소스(CPU, 메모리, I/O, 네트워크 대역)등을 제한할 수 있는 기능
    • 각각의 프로세스에 리소스를 할당할 수 있음

기존 가상화 기술에서는 VM이 실제 물리 하드웨어를 에뮬레이트 → OS 반드시 필요

  • 하지만, 리눅스 컨테이너(LXC)에서는 모든 프로세스가 호스트 OS에서 바로 시작
    • 일반적인 프로세스와 다른 점은 그룹화를 통해 단절된 공간에서 동작한다는 것
    • 리눅스 컨테이너 기술은 도커 컨테이너가 사용하는 기술의 근간이 됨

컨테이너 : 리눅스 환경에서 돌아가는 일종의 프로세스
(리눅스가 제공하는 기능을 이용, 단절된 공간에서, 할당받은 시스템 자원을 통해, 독립적으로 가동)

0개의 댓글