1. 도커
도커는 마치 "컨테이너"를 지칭하는 일반 명사처럼 두루 사용되고 있다. 컨테이너에 관련된 내용에서 도커 컨테이너, 도커 이미지, 도커라이즈드 등 습관처럼 도커란 용어가 사용 된다. 하지만 도커는 컨테이너를 사용하기 위한 플랫폼이며 도구이자 런타임이다.
실제로 도커 플랫폼은 도커 엔진(Docker Engine)과 함께 다양한 도구 및 라이브러리로 구성되어 있다.
"도커 플랫폼" = 도커 엔진을 포함하여 도커가 제공하는 다양한 도구와 서비스를 종합적으로 지칭
"도커 엔진" = 도커 컨테이너를 관리하는 핵심 엔진을 지칭
도커 플랫폼 구성요소
* Docker Daemon(Dockerd)은 컨테이너 관리,네트워크,이미지 관리 등 핵심적인 역할을 한다.
도커 엔진 구성요소
2. 컨테이너
컨테이너란소프트웨어 서비스를 실행하는 데 필요한 특정 버전의 프로그래밍 언어 런타임 및 라이브러리와 같은 종속 항목과 애플리케이션 코드를 함께 포함하는 경량 패키지.
➤ 특징
- 높은 이식성 (개발환경의 Host OS 와 상관없이 컨테이너에서 사용하는 라이브러리의 버전을 신경쓰면 된다.)
- 가벼운 가상화 기술 (Guest OS의 부재, 바로 Host OS의 자원을 사용)
- VM보다 낮은 격리 레벨
➤ VM을 사용하는것보다 리소스 사용량을 조금더 가볍게 만들어 보자 에서 시작됨
- Guest OS의 부재로 컨테이너를 좀더 가볍게 사용할 수 있음
➤ 컨테이너 기술 : Linux 커널에서 기본 제공하는 프로세스 격리 및 가상화 기능에 의해 실현된다.
- 하이퍼바이저를 통해 여러 가상 머신(VM)이 단일 하드웨어 서버의 CPU, 메모리, 기타 리소스를 공유하는 방식과 매우 비슷하다.
- 컨트롤 그룹(Cgroups) : 여러 프로세스에 리소스를 할당 (Ex. pid, user)
- 네임스페이스(Namespace) : 어떤 프로세스에서 시스템의 다른 하드웨어 리소스나 영역을 보거나 액세스하는 것을 제한(격리)
- 이러한 기능을 사용해서 애플리케이션 구성 요소에서 호스트 운영 체제 단일 인스턴스의 리소스를 공유
➤ 컨테이너 런타임
- 컨테이너를 생성하고 실행하는 데 필요한 기본 기능을 제공하는 컨테이너 런타임으로 containerd, rkt, CRI-O 등이 있음.
- 도커 엔진도 내부적으로 containerd를 사용하여 컨테이너를 생성하고 실행하며 관리 한다.
* 참고로 쿠버네티스는 컨테이너 런타임을 플러그인 방식으로 지원하고 있다.
- containerd, CRI-O, Podman 등
참고
https://tech.kakaoenterprise.com/150 [카카오엔터프라이즈 기술블로그 Tech&(테크앤):티스토리]
'Docker' 카테고리의 다른 글
Docker 없이 Container 만들기 (2) | 2023.12.06 |
---|---|
Docker Engine (0) | 2023.11.29 |