컨테이너란?

boms·2024년 9월 29일

컨테이너 기술이란?

  • 애플리케이션을 언제든 실행 가능하도록 필요한 모든 요소를 (소스코드, 구성 요소, 종속성 등) 하나의 런타임 환경으로 패키징한 논리적 공간이다
  • 패키징 기술을 docker에서는 Dockerfile build로 구현한다

경량의 격리된 프로세스

  • microVm
  • Host OS 커널을 공유해서 쓰는 운영체제 수준의 가상화
    • 컨테이너의 운영체제에는 커널이 없다
    • 따라서 OS 위에 올라가는 Platform as Service이다
  • 독립성을 갖기 때문에 다른 컨테이너에 영향을 주지 않는 statless 환경
    - 휘발성 환경

컨테이너는 패키징한 논리적 공간이고 이 공간은 격리된 프로세스로 동작한다

개발 그 자체에 집중

  • 개발, 테스트, 운영 서버를 운영한다면 똑같은 환경에서 반복적으로 세팅해야한다
  • 서버 구성, OS 설치, 네트워크 등의 반복적이고 불편한 작업에 시간을 낭비하지 않게 도와준다
  • 이미지가 불변이기 때문에 동일한 환경에서 작업하여 개발 -> 테스트 -> 운영 배포할 수 있다

컨테이너 특징

경량

  • 컨테이너는 최소한의 Image를 통해 실행되므로 경량이다
  • Image를 만들기전에 어 떤 환경이 들어가는지에 따라서 무겁고 가벼운지가 결정된다
  • 이미지 경량화 -> Best practice

빠르다

  • 프로세스 수준의 속도로 run할 수 있고 한번에 여러개의 컨테이너를 동시에 실행 가능하다
  • ex) docker compose를 통한 멀티 컨테이너

이식성

  • 어떤 개인 환경, 클라우드 환경, OS이던 동작 가능한 이식성을 보유한다
  • Dockerfile로 만든 image를 docker hub, aws ecr 등에 올리거나 image를 구동하는데는 오직 docker platform만 있으면 제약이없다.

비용 절감

  • 컨테이너 자체 애플리케이션 환경에 대한 관리만 요구되므로, 지속적 서버관리 비용을 절감한다

컨테이너 타입

  • 컨테이너 패키징 매커니즘
    - 이미지를 패키지하고 run하여 사용할 수 있게 만들어주는 기술

시스템 컨테이너

  • 호스트 os위에 ubuntu 같은 배포판 리눅스 Image를 통해 배포되는 컨테이너다
  • 컨테이너를 통한 가상화라 또다른 VM의 형태이다
  • 이 컨테이너 내부에 애플리케이션을 실행한다

애플리케이션 컨테이너

  • 단일 애플리케이션 실행을 위해 해당 서비스를 패키징하고 실행하는 컨테이너다
  • 독립적인 컨테이너 내부에서 PID 1번을 조회하면 systemd가 아닌 해당 애플리케이션이 1번이다
  • ex) 3-tier front-back-db, docker container runtime

Docker

  • 컨테이너를 실행하고 관리하는 컨테이너 런타임 도구이다
  • 여러 계층의 application을 container로 분리하고 api를 통해 연결하여 실행하는 MSA에 유용하다
  • application의 인프라 / 런타임은 Dockerfile image를 통해 제공하고 public or private으로 공유한다
  • 공유된 image를 기반으로 application을 제공하고 컨테이너화 할 수 있다
profile
2023.08.21~

0개의 댓글