1. 개요

<Docker 가상 환경 구축 입문>의 <Chapter 1.Docker에 대해 이해하기>를 읽고 정리한 내용으로, 이번 문서의 주된 내용은 Docker의 개념과 특징에 대한 설명입니다.

 

2. Docker의 개념

  • Docker: Docker사가 개발한 컨테이너 방식 가상화를 위한 플랫폼
  • Docker를 통해 애플리케이션의 개발 환경 구축, 애플리케이션의 실행 및 배포가 가능

 

3. VirtualBox(가상머신)와 Docker(컨테이너)의 특징과 차이점

구분 가상머신 컨테이너형 가상화
가상화 소프트웨어 하이퍼바이저 Docker Engine
게스트 OS 있음 없음
OS 자유도 임의의 게스트 OS를 동작시킬 수 있어,
자유도가 높음
컨테이너 자체에는 게스트 OS가 없기 때문에
자유도에 제한이 있음
애플리케이션 실행 주체 가상 머신의 게스트 OS 물리 머신의 호스트 OS
가상화 오버헤드
  • 게스트 OS 동작을 위한 많은 리소스 필요
  • 가상 머신 시뮬레이션에 따른 큰 오버헤드
  • 기동 및 정지가 무거움
  • 호스트 OS가 Docker Engine을 경유하여
    애플리케이션을 실행하므로
    리소스 및 오버헤드가 적음
  • 기동 및 정지가 가벼움
분리 레벨
  • 호스트 OS와 가상머신 간 분리 레벨이 높음
  • 다른 가상머신이나 호스트의 영향을
    받기 힘든 구조
  • 호스트 OS의 한 프로세스로서 컨테이너가 
    동작하는 방식으로 분리레벨이 낮음
  • 높은 보안을 요구하는 시스템의 경우,
    문제가 될 수 있음

 

4. Docker의 플랫폼으로서의 정의

  • 단순한 컨테이너 방식 가상화 소프트웨어가 아닌, 애플리케이션의 개발, 배포, 실행의 흐름을 지원하기 위한 다양한 기능 및 서비스가 갖추어져 있어, 플랫폼으로 정의함
  • Docker 플랫폼의 기능 및 서비스
서비스 명 설명
Docker Engine Docker Image로부터 컨테이너를 작성하거나, 컨테이너를 관리하는 기능
Docker Command Docker Engine에 지시를 내리거나, 컨테이너의 정보 확인 및 관리에 사용되는 커맨드
Docker Compose WAS 컨테이너, DB 서버 컨테이너 등 많은 역할을 하는 컨테이너를 통합 관리하기 위한 기능
Docker Machine Docker Engine이 설치된 가상 머신을 만들거나 관리하기 위한 툴로,
클라우드 서비스 상에 Docker 용 가상 머신을 만들 수 있음
Docker Hub Docker Image의 보관 장소를 제공하는 레지스트리
Docker Swarm  Docker가 설치된 서버에서 클러스터 구성을 하거나 유연하게 컨테이너 수를 스케일하는 등
운영 환경에서의 환경 구축을 위한 오케스트레이션 기능

 

5. 구성 관리 툴

  • Ansible, Chef, Puppet 등의 툴이 있음
  • 다수의 서버를 동일한 설정으로 구축할 때, 하나의 구성 관리 설정 파일을 이용해 서버를 구성할 수 있게하는 툴
  • Docker의 경우, 이러한 설정을 Docker Image라는 일종의 파일 모음으로 저장하고, 그 이미지를 토대로 환경을 구축