본문 바로가기
Docker

Docker, Container 개요

by hotdog7778 2023. 11. 29.

1. 도커

 

도커는 마치 "컨테이너"를 지칭하는 일반 명사처럼 두루 사용되고 있다. 컨테이너에 관련된 내용에서 도커 컨테이너, 도커 이미지, 도커라이즈드 등 습관처럼 도커란 용어가 사용 된다. 하지만 도커는 컨테이너를 사용하기 위한 플랫폼이며 도구이자 런타임이다.

실제로 도커 플랫폼은 도커 엔진(Docker Engine)과 함께 다양한 도구 및 라이브러리로 구성되어 있다.

 

"도커 플랫폼" = 도커 엔진을 포함하여 도커가 제공하는 다양한 도구와 서비스를 종합적으로 지칭

"도커 엔진" = 도커 컨테이너를 관리하는 핵심 엔진을 지칭

 

 

도커 플랫폼 구성요소

* Docker Daemon(Dockerd)은 컨테이너 관리,네트워크,이미지 관리 등 핵심적인 역할을 한다.

https://docs.docker.com/get-started/overview/

 

 

 

도커 엔진 구성요소

https://gngsn.tistory.com/128

 

 

 

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&(테크앤):티스토리]

https://gngsn.tistory.com/128

'Docker' 카테고리의 다른 글

Docker 없이 Container 만들기  (2) 2023.12.06
Docker Engine  (0) 2023.11.29