컨테이너를 관리하고 실행하는 핵심 구성 요소로 도커엔진은 컨테이너 생성, 실행, 중지, 삭제 등의 작업을 수행하며, 컨테이너 간의 상호작용과 리소스 관리를 담당합니다.
1. 도커 데몬(Docker Demon)
도커 데몬은 도커 서비스를 백그라운드에서 실행하는 프로세스입니다. 도커 API를 통해 도커 컨테이너와 상호작용 하며, 도커 이미지의 빌드, 컨테이너의 생성, 실행, 중지, 삭제 등을 처리합니다.
2. 도커 클라이언트
도커 클라이언트는 도커 데몬과 통신하여 사용자의 명령을 전달하고 결과를 반환합니다. 도커 CLI를 통해 도커 멸령어를 입력하여 도커 엔진과 상호작용 할 수 있습니다.
3. 도커 이미지
도커 이미지는 애플리케이션과 해당 애플리케이션을 실행하는 데 필요한 모든 종속성을 포함하는 패키지입니다. 도커 이미지는 읽기 전용이며, 도커 컨테이너의 기반이 됩니다. 도커 이미지는 Dockerfile을 사용하여 정의하고, 도커 빌드 명령을 통해 생성할 수 있습니다.
4. 도커 컨테이너
도커 컨테이너는 도커 이미지를 실행한 상태로, 격리된 환경에서 애플리케이션을 실행합니다. 각 도커 컨테이너는 자체 파일 시스템, 네트워크, 프로세스 공간을 가지며, 호스트 시스템과 격리되어 독립적으로 실행됩니다. 도커 컨테이너는 가볍고 빠르게 생성 및 시작할 수 있으며, 확장성과 이식성이 우수합니다.
가상머신과 도커 컨테이너는 둘다 가상화 기술을 사용하여 애플리케이션을 실행하는 방식이지만, 그 구조와 동작 방식에 차이가 있습니다.
기존의 가상화 기술인 가상머신은 하이퍼바이저를 이용해 여러개의 운영체제를 하나의 호스트에서 생성해서 사용하는 방식입니다.
가상머신은 호스트 시스템(물리적인 서버나 컴퓨터)위에 가상의 하드웨어 계층을 에뮬레이션하여 독립적인 가상 환경을 생성합니다. 각 가상머신은 운영 체제를 포함하여 애플리케이션을 실행하는데 필요한 모든 소프트웨어와 라이브러리를 가지고 있습니다.
각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 하이퍼바이저를 반드시 거치기 때문에 일반 호스트에 비해 성능의 손실이 발생합니다.
그 뿐 아니라 가상머신은 게스트 운영체제를 사용하기 위한 라이브러리, 커널 등을 전부 포함 하기 때문에 가상 머신을 배포하기 위한 이미지로 만들었을 떄 이미지의 크기 또한 커집니다.
정리
하이퍼바이저
- 하이퍼바이저(Hypervisor)는 가상화 환경을 구축하고 관리하는 소프트웨어 레이어입니다. 하이퍼바이저는 호스트 시스템(물리적인 서버나 컴퓨터)에서 가상머신을 생성하고 실행하는 역할을 담당합니다.
- 하이퍼바이저는 가상머신(VM)을 생성하고 각 VM에 대한 리소스 할당, 가상 하드웨어 관리, 네트워크 연결 등을 처리합니다. 각 가상머신은 독립된 운영 체제와 애플리케이션을 실행하는 데 필요한 리소스를 할당받습니다. 이를 통해 하나의 호스트 시스템에서 여러 개의 가상 환경을 병렬로 실행하고, 서로 간섭하지 않도록 격리된 환경을 제공할 수 있습니다.
컨테이너를 사용해야 하는 이유
가상머신은 하드웨어 스택을 가상화합니다. 컨테이너는 이와 달리 운영체제 수준에서 가상화를 실시하여 다수의 컨테이너를 OS커널에서 직접 구동합니다. 컨테이너는 훨씬 가볍고 운영체제 커널을 공유하며, 시작이 훨씬 빠르고 운영체제 전체 부팅보다 메모리를 훨씬 적게 차지합니다.