Post

도커(Docker)와 컨테이너 가상화 기술 이해

도커의 개념과 컨테이너 기반 가상화 기술, 가상 머신과의 차이, 핵심 구성 요소에 대해 상세히 설명합니다.

도커(Docker)와 컨테이너 가상화 기술 이해

도커(Docker)란?

도커(Docker)는 컨테이너 기반 가상화 기술을 쉽게 사용할 수 있도록 만든 플랫폼입니다. 애플리케이션과 그 실행 환경 전체를 하나의 이미지로 패키징하고, 이를 격리된 컨테이너에서 실행할 수 있도록 합니다.

물리 머신과 가상 머신의 개념

물리 머신이란?

  • CPU, 메모리, 디스크 등의 하드웨어로 구성된 실제 컴퓨터입니다.
  • 우리가 사용하는 노트북, 데스크탑, 서버 등은 모두 물리 머신입니다.

가상 머신이란?

  • 하드웨어 일부를 소프트웨어로 구현하여 마치 실제 컴퓨터처럼 사용하는 환경입니다.
  • VMware, VirtualBox, Hyper-V 등 가상화 소프트웨어를 통해 하나의 물리 머신에 여러 가상 머신을 생성할 수 있습니다.
  • 가상 머신을 사용하면 운영체제나 환경을 격리할 수 있으며, 설정에 따라 손쉽게 복제하거나 제거할 수 있습니다.

가상 머신의 장점

  • 물리 머신 자원의 효율적 활용
  • 빠른 배포 및 철거
  • 동일한 설정을 통해 장애 복구 용이
  • 다양한 개발 환경 테스트 가능

가상화 기술의 종류

1. 호스트형 가상화 (Hosted Virtualization)

  • 기존 운영체제 위에 가상화 소프트웨어를 설치하여 가상 머신 실행
  • 대표 제품: VirtualBox, VMware Workstation, Parallels Desktop
  • 설정이 쉽고 데스크톱 환경에 적합

2. 하이퍼바이저형 가상화 (Bare-metal Virtualization)

  • 운영체제 없이 하이퍼바이저를 직접 설치하여 가상 머신 실행
  • 대표 제품: VMware ESXi, Microsoft Hyper-V, Xen
  • 성능이 뛰어나고 서버 환경에 적합하나 설정은 복잡

3. 컨테이너형 가상화 (Container-based Virtualization)

  • 운영체제를 공유하고, 프로세스 수준에서 격리
  • 대표 도구: Docker, Podman, LXC
  • 경량, 빠른 실행, 높은 이식성 → DevOps와 MSA에 적합

컨테이너형 가상화 특징

  • 게스트 OS 없음: 리눅스 커널 공유, 최소 환경만 포함
  • Namespace & cgroups 사용: 프로세스, 리소스를 독립적으로 관리
  • 1컨테이너 1앱 구조: 앱 단위 배포 및 유지보수에 최적
  • 패키징된 실행 환경: “내 PC에선 되는데?” 문제 해결
  • 리눅스 커널 의존: WSL2, VM 활용해 macOS/Windows 지원
  • 아키텍처 호환성 주의: x86 ↔ ARM 실행 시 빌드 또는 에뮬레이터 필요

도커 구성 요소

1. Docker Engine

  • 도커의 핵심 백그라운드 서비스
  • 구성: 클라이언트(docker 명령어), 서버(dockerd 데몬), REST API

2. Docker Image

  • 컨테이너 생성을 위한 템플릿
  • 읽기 전용 계층 구조, Dockerfile로 빌드

3. Docker Container

  • 이미지의 실행 인스턴스
  • 격리된 환경에서 실행되며, 필요시 생성/삭제가 빠름

4. Dockerfile

  • 이미지 생성을 위한 명령어 집합
  • FROM, RUN, COPY, CMD 등으로 구성

5. Docker Hub (또는 Registry)

  • 이미지 저장/공유를 위한 저장소
  • docker pull, docker push로 이미지 관리

6. Docker Compose

  • 복수의 컨테이너를 한 번에 관리
  • docker-compose.yml 파일에 서비스 정의
  • 개발 및 테스트 환경 구성에 용이

7. Docker Desktop

  • GUI 기반 도커 도구 (Windows, macOS)
  • WSL2 또는 리눅스 VM으로 리눅스 컨테이너 실행

8. Docker Network & Volume

  • Network: 컨테이너 간 통신 (bridge, host 등)
  • Volume: 컨테이너 외부 데이터 저장소 (데이터 지속성 보장)
This post is licensed under CC BY 4.0 by the author.