본문으로 건너뛰기
도커(Docker)란? & Docker Container 그리고 가상화 방식의 종류

도커(Docker)란? & Docker Container 그리고 가상화 방식의 종류

· loading · loading ·
gunyoung.Park
작성자
gunyoung.Park
Always curious, always exploring new tech
Deep Dive into Docker - 이 글은 시리즈의 일부입니다.
부분 1: 이 글
docker
Docker는 오픈소스 컨테이너화 플랫폼으로, 코드와 의존성을 패키징하여 다양한 컴퓨팅 환경에서 애플리케이션을 빠르고 안정적으로 실행할 수 있게 해줍니다.

🐳 Docker란?
#

Docker의 핵심 개념은 크게 두 가지입니다: 컨테이너(Container)이미지(Image)

Docker Image (도커 이미지)
#

Docker Image는 애플리케이션 실행에 필요한 코드, 런타임, 시스템 도구, 시스템 라이브러리, 설정 등을 포함하는 경량의 독립적인 소프트웨어 패키지입니다.

실제 사용 예시
#

기존 방식으로 Linux에 Jenkins를 설치한다면:

$ sudo apt-get install jenkins

위 명령어를 실행하면 여러 의존성 패키지들을 함께 다운로드해야 합니다.

반면 Docker를 사용하면:

$ docker pull jenkins/jenkins:lts

필요한 모든 구성 요소가 포함된 사전 구성된 이미지를 한 번에 다운로드할 수 있습니다.


📦 Docker Registry & Docker Hub
#

Docker Registry는 Docker 이미지를 공유하는 저장소 역할을 합니다. “Docker용 GitHub"라고 생각하면 쉽습니다.

Docker Hub는 공식 Docker 레지스트리로, 벤더가 제공하는 공식 이미지들을 제공합니다.

동작 흐름
#

  1. 사용자가 레지스트리에서 이미지를 다운로드
  2. 이미지를 컨테이너로 실행
  3. 하나의 컴퓨터에서 여러 개의 격리된 환경 구성 가능

🔄 Container Virtualization (컨테이너 가상화)
#

Containerized
컨테이너 기술은 “하나의 시스템 내에서 여러 개의 격리된 인스턴스를 실행할 수 있게 하는 서버 가상화 방식"으로, 각 컨테이너는 사용자에게 개별 서버처럼 보입니다.

중요한 점: 컨테이너는 Docker만의 전유물이 아닙니다. OpenVZ, Libvirt, LXC 등 다양한 컨테이너 기술이 존재합니다.


🖥️ 가상화 방식의 종류
#

1. Host Virtualization (호스트 가상화)
#

Hosted Vitualization Architecture

구조: Guest OS가 Host OS 위에서 가상화 소프트웨어를 통해 실행됩니다.

  • 예시: VM Workstation, VMware Player, VirtualBox 등

장점:

  • 설치 및 구성이 간단함
  • 하드웨어 에뮬레이션으로 최소한의 호스트 요구사항

단점:

  • OS 위에 OS를 실행하므로 리소스 집약적
  • 성능 오버헤드가 큼

2. Hypervisor Virtualization (하이퍼바이저 가상화)
#

HypervisorVirtualization

구조: Host OS 없이 하드웨어에 직접 소프트웨어를 설치하여 실행합니다.

하이퍼바이저 가상화의 두 가지 접근 방식:

1) Full Virtualization (전가상화)
#

  • Guest OS가 하드웨어에 직접 접근하지 않고 하이퍼바이저를 통해 접근
  • 더 안정적이지만 성능 오버헤드 존재

2) Paravirtualization (반가상화)
#

  • Guest OS가 하이퍼바이저를 통해 하드웨어에 직접 접근
  • 더 빠르지만 OS 수정 필요

장점:

  • Host OS가 없어 더 효율적
  • 리소스를 더 효과적으로 활용

단점:

  • 시작 시간이 느림
  • 각 VM이 독립적인 OS를 실행하므로 여전히 리소스 소모가 큼

3. Container Virtualization (컨테이너 가상화) ⭐
#

ContainerVirtualization

구조: 애플리케이션들이 호스트 OS 커널을 공유하면서도 격리된 환경을 유지합니다.

장점:

  • 경량: 일반적으로 수십 MB (VM은 수십 GB)
  • 빠른 시작 속도: 별도의 OS 부팅이 필요 없음
  • 적은 리소스 사용: 시스템 리소스를 효율적으로 활용
  • 높은 밀도: 같은 하드웨어에서 더 많은 컨테이너 실행 가능

단점:

  • 호스트 시스템과 동일한 OS 환경이 필요함
  • 크로스 플랫폼 배포가 어려울 수 있음 (예: Linux 컨테이너는 Linux 호스트 필요)

📊 가상화 방식 비교
#

구분호스트 가상화하이퍼바이저 가상화컨테이너 가상화
용량수십 GB수십 GB수십 MB
시작 속도느림느림매우 빠름
리소스 사용높음중간낮음
격리 수준높음높음중간
이식성낮음중간높음
설정 난이도쉬움어려움중간

💡 정리
#

Docker 컨테이너 가상화의 핵심 가치:

  1. 효율성: 기존 가상화 방식보다 훨씬 적은 리소스로 동일한 기능 제공
  2. 속도: 애플리케이션을 몇 초 안에 시작하고 중지 가능
  3. 일관성: 개발, 테스트, 프로덕션 환경에서 동일하게 실행
  4. 확장성: 필요에 따라 컨테이너를 쉽게 추가하거나 제거

Docker는 현대적인 애플리케이션 개발과 배포의 핵심 도구로, DevOps와 마이크로서비스 아키텍처의 기반이 되고 있습니다.

Deep Dive into Docker - 이 글은 시리즈의 일부입니다.
부분 1: 이 글