[Docker] 컨테이너 기술과 도커

2022. 11. 23. 12:28Cloud/Docker

1. 가상머신과 컨테이너

가상화(Virtualization)란 무엇인가?

하드웨어 기능을 시뮬레이션하여 애플리케이션 서버, 스토리지, 네트워크와 같은 유용한 IT 서비스를 생성하는 소프트웨어 아키텍처 기술입니다.

 

가상머신 vs 컨테이너 비교

  • 가상머신 : 호스트 운영체제 위에 가상화 소프트웨어(Hypervisor)를 이용하여 여러 개의 게스트 OS를 구동하는 방식
    • 하이퍼바이저(Hypervisor) : 가상머신을 생성하고 실행하는 역할과 가상화된 하드웨어와 각각의 가상머신을 모티너링하는 중간 관리자, 대표적인 가상화 프로그램이 VMware, VirtualBox 등이 있습니다.
    • 각각의 게스트 OS는 호스트 운영체제로부터 독립된 자원을 할당받아 가상화된 서비스를 제공하기 때문에 이미지 용량이 큼
  • 컨테이너 : 컨테이너를 이용한 가상화는 리눅스 기반의 물리적 공간 격리가 아닌 프로세스 격리를 통해 경량의 이미지를 실행하고 서비스 할 수 있는 컨테이너 기술
    • 물리적 요소에 대한 가상화인 가상머신과는 다르게 컨테이너 가상화는 프로세스 가상화
    • 컨테이너 엔진인 도커와 오케스트레이션 도구인 쿠버네티스는 호스트 운영체제와 커널을 공유하고 그 위에 실행 파일 및 라이브러리, 기타 구성 파일 등을 이미지로 빌드하여 패키지로 배포하는 방식입니다.
    • 쿠버네티스 : 컨테이너화된 애플리케이션을 자동으로 배포,  스케일링, 관리해 주는 오픈소스 시스템

 

컨테이너 기술의 장점

  • 하이퍼바이저와 게스트 OS가 없기 때문에 가벼움(수십 메가바이트)
  • 경량이기 때문에 이미지 복제, 이관, 배포가 쉬움
  • 게스트 OS를 부팅하지 않기 때문에 애플리케이션 시작 시간이 빠름
  • 가상머신보다 경량이므로 더 많은 애플리케이션을 실행할 수 있음

 

 

2. 도커(Docker)

도커 정의

리눅스의 응용 프로그램들을 프로세스 격리 기술을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트

 

도커 컨테이너 이미지의 정의

애플리케이션을 실행하는데 필요한 모든 것(코드, 런타임, 라이브러리 등)을 포함하는 경량의 독립형 실행 가능한 소프트웨어 패키지.

 

도커의 주요 기능

  • LXC(LinuX Container)를 이용한 컨테이너 구동 : containerd는 리눅스 및 윈도우용 데몬으로, 이미지 전송 및 스토리지에서 컨테이너 실행 및 감독, 네트워크 연결까지 호스트 시스템 전체 컨테이너의 라이프 사이클을 관리함
  • 통합 Buildkit : 빌드킷은 도커 파일의 설정 정보를 이용하여 도커 이미지를 빌드하는 오픈 소스 도구이며, 빠르고 정확하게 여러 가지 아키텍처 향상 기능을 제공합니다.
  • 도커 CLI 기반 : 도커 명령을 수행하는 기본적인 방법은 CLI(Command Line Interface)로 제공함

 

도커 컨테이너 기술이란?

도커 컨테이너 기술은 PaaS 서비스를 가능하게 하는 소프트웨어 개발 환경을 제공하는 것. 단, 컨테이너 서비스에 대한 자동화된 관리, 트래픽 라우팅, 로드 밸런싱 등을 쉽게하려면 오케스트레이션 기능(쿠버네티스 등)이 추가로 요구됨

 

도커 구성요소

  • Docker Engine : 도커를 이용한 애플리케이션 실행 환경 제공을 위한 핵심 요소
  • Docker Hub : 전 세계 도커 사용자들과 함께 도커 컨테이너 이미지를 공유하는 클라우드 서비스
  • Docker-compose : 의존성 있는 독립된 컨테이너에 대한 구성 정보를 야믈(YAML) 코드로 작성하여 일원화된 애플리케이션 관리를 가능케 하는 도구
  • Docker Kitematic : 컨테이너를 이용한 작업을 수행할 수 있는 GUI 제공
  • Docker Registry : 도커 허브 사이트를 공개된 레지스트리라고 보면 됨. 사내에 도커 컨테이너 이미지를 push/pull 할 수 있는 독립된 레지스트리 구축 시 사용
  • Docker Machine : 가상머신 프로그램(VMware, Virtualbox) 및 AWS EC2, MS Azure 환경에 도커 실행 환경을 생성하기 위한 도구
  • Docker Swarm : 여러 도커 호스트를 클러스터로 구축하여 관리할 수 있는 도커 오케스트레이션 도구

 

3. 쿠버네티스

쿠버네티스 정의

  • 대규모 클러스터 환경의 수많은 컨테이너를 쉽고 빠르게 확장, 배포, 관리하는 작업을 자동화해주는 오픈 소스 플랫폼
  • 오케스트레이션 도구의 표준

 

쿠버네티스 사용 이유

  • 수요가 급증하는 컨테이너 관리의 조정
  • 애플리케이션 컨테이너 간의 네트워킹 방식 관리
  • 컨테이너 인스턴스 확장

 

쿠버네티스가 유용한 이유

  • on-premise 환경에서 수행하는 서버 업그레이드, 패치, 백업 등의 작업을 자동화(오토 스케일링, 서비스 디스커버리, 로드 밸런싱 등)하여 인프라 관리보다는 서비스 관리에 집중할 수 있게 함
  • 컨테이너에 장애 발생시 자가 회복 기능을 통해 곧바로 복제 컨테이너를 생성하여 서비스를 지속할 수 있음
  • 컨테이너화를 통해 소프트웨어를 패키지화하면 점진적 업데이트를 통해 다운타임없이 쉽고 빠르게 릴리스 및 업데이트 가능

 

References

도커 컨테이너 빌드업

'Cloud > Docker' 카테고리의 다른 글

[Docker] 클라우드 컴퓨팅 개요  (0) 2022.11.23