백엔드 개발자 블로그

1. 컨테이너 가상화 이해 본문

CI CD/Docker

1. 컨테이너 가상화 이해

backend-dev 2024. 5. 22. 19:58

컨테이너 기술이란?

애플리케이션과 종속 항목을 하나로 하나로 묶어, 실행하게 해주는 운영시스템을 가상화하는 기술

사용하는 이유

  • 언제 어디서든 빠르고 효율적으로 배포 가능하다.
  • 확장성 (multi cluster)
  • 서버 구성, OS 설치, 네트워크, 개발 도구 구성 등의 반복적인 작업을 대신 처리하여 개발에 집중할 수 있게 해준다.
  • 최소한의 Image를 통해 실행되므로 가볍다.
  • 빠르게 실행 가능(run)하고, 한 번에 여러 개의 컨테이너 동시 실행 가능하다.(docker compose)
  • 어떤 환경에서도 동작 가능하여 이식성이 좋다. (docker platform만 깔려있으면 됨)
  • 지속적인 서버 관리 비용이 절감된다. (애플리케이션 환경에 대한 관리만 요구됨)
  • 개발팀(소스코드 작성)과 운영팀(Image 제공)의 업무 분리로 각자의 업무에 집중 가능하다.

타입

  1. 시스템 컨테이너
    • 호스트OS 위에 Ubuntu와 같은 배포판 리눅스 Image를 통해 배포되는 컨테이너
  2. 애플리케이션 컨테이너 (주로 사용)
    • 단일 애플리케이션 실행을 위해 서비스를 패키징하고 실행하도록 설계된 컨테이너
  3. 라우터 컨테이너

가상화란?

하드웨어 리소스를 효율적으로 사용할 수 있도록 소프트웨어적으로 추상화하는 기술

사용사례

  • 자동화된 IT 관리
  • 빠른 재해 복구

VM 가상화와 컨테이너 가상화 비교

  • 공통점
    • 이미지화하여 HostOS와 격리된 환경을 제공한다.
  • 차이점
    • VM : GuestOS를 두고 원하는 애플리케이션 설치하는 하드웨어 수준의 가상화 -> 부팅 있음
    • 컨테이너 : HostOS의 커널 공유하는 OS 수준의 가상화 -> 부팅없이 빠르게 실행 가능

컨테이너 기술

  1. 초기에는 리눅스 컨테이너 기술인 LXC을 컨테이너화를 했다.
    1. 커널 기술을 공유하여 컨테이너에 제공
    2. 시스템 컨테이너 생성 기술
  2. 애플리케이션 컨테이너가 출시되면서 containerd, runC 방식으로 바뀌었다.
    1. runC : 커널 기술의 공유를 통해 컨테이너 생성을 지원
    2. containerd : 컨테이너의 라이프 사이클 관리를 지원
    3. dockerd : 사용자 환경에서의 명령을 전달

테스트 환경

https://www.docker.com/play-with-docker/

  • 설치없이 가상화환경에서 Docker를 사용해볼 수 있다.
  • 주의사항
    • docker 계정이 있어야 사용이 가능합니다.
    • 4시간 후 사라집니다.

정리

  • Docker는 컨테이너 가상화 기술이다.
    • 컨테이너 : 애플리케이션과 종속 항목을 하나로 묶어, 바로 실행가능하게 하는 운영 시스템의 가상화 기술이다.
    • 가상화 : 하드웨어 자원을 효율적으로 사용할 수 있도록 소프트웨어적으로 추상화하는 기술이다.
  • VM 가상화와 컨테이너 가상화 비교
    • OS 수준의 가상화이기에 GustOS가 필요없어서 용량이 적고, 부팅없이 빠르게 실행이 가능하다.
  • 작동원리
    • dockerfile 빌드 -> Image 생성 -> Image 실행 -> 컨테이너 생성
  • 사용하는 이유
    • 가볍다.
    • 실행이 빠르다. 동시 실행이 가능하다.
    • 이식성이 좋다. (docker platform만 있으면 된다.)
    • 실행 환경 세팅 시간을 줄일 수 있다.

'CI CD > Docker' 카테고리의 다른 글

4. Docker Image 이해  (0) 2024.05.22
Docker 개념  (0) 2023.08.22