콘텐츠로 바로가기

Containerization & Docker Mechanics

애플리케이션과 그 실행 환경을 표준화된 단위로 묶는 가상화 기술과, 운영체제 수준에서 격리된 공간을 만드는 컨테이너 물리학을 다루는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts6 min read

1. Overview

컨테이너화 및 도커 메커니즘(Containerization & Docker Mechanics, CDM)은 "내 컴퓨터에서는 잘 되는데 서버에선 왜 안 되지?"라는 고전적인 하드웨어-소프트웨어 불일치 문제를 해결하기 위해, 앱 실행에 필요한 모든 것을 단일 물리 상자에 담는 패키징 공학입니다.

학습자는 무거운 하드웨어 가상화(VM)를 대신하여 운영체제 커널을 공유하며 프로세스를 격리하는 OS 수준 가상화의 수리적 사상을 배웁니다. 특히, 컨테이너 기술의 표준인 **도커(Docker)**의 계층적 파일 시스템(Layered FS)과, 리눅스 커널의 NamespacesCgroups가 어떻게 물리적 격리 방화벽을 구축하는지 익힙니다. 이를 통해 서비스의 '이식성(Portability)'을 극대화하고, 어떤 하드웨어 환경에서도 초(Second) 단위로 앱을 즉시 가동하는 하이엔드 실행 정착 역량을 확보합니다.

2. Scope & Boundaries

In-Scope

  • Kernel Isolation: Linux Namespace(격리)와 Cgroups(자원 제한)의 물리적 결합
  • Image Layering Mechanics: 유니온 파일 시스템(UnionFS) 기반의 계층형 하드웨어 저장 기법
  • Docker Engine Architecture: Docker Client, Host(Daemon), Registry 간의 소통 물리학
  • Container Lifecycle: Create, Start, Stop, Pause, Kill의 장치 상태 전이
  • Network & Volume Networking: 컨테이너 간의 가상 네트워크 터널링과 데이터 영속화 물리

Out-of-Scope

  • 가상 머신(Hypervisor)의 세부 하드웨어 에뮬레이션 (02-01-XX 영역에서 분담)
  • 쿠버네티스 기반의 대규모 컨테이너 관리 (07-06-03 영역에서 전점)

Boundaries

  • CDM vs. OS Virtualization: 운영체제(03-01-XX)가 '커널의 내부 기능'에 집중한다면, CDM은 '그 기능을 활용하여 애플리케이션의 물리적 경계를 획정하는 아키텍처'에 집중하여 구분합니다.

3. Counterexample

  • 단순히 "도커 명령어 외우기"라 설명하는 것은 CDM 학습이 아닙니다. 왜 컨테이너가 가상 머신(VM)보다 하드웨어 오버헤드가 수리적으로 현저히 낮은지 '커널 공유 물리학'으로 증명할 수 있어야 하며, Docker Image 작성 시 레이어 순서가 왜 빌드 속도(CacheCache)와 하드웨어 디스크 점유율을 결정짓는 결정적 변수가 되는지 분석하지 못한다면 컨테이너의 효율성을 이해하지 못한 것입니다.

4. Prerequisites

  • Process & Thread Management (Basic): 운영체제의 프로세스 개념 이해가 필수입니다. (03-01-01 PTM)
  • Linux Fundamentals (Recommended): 쉘(Shell) 및 기본 명령어 이해가 권장됩니다. (03-03-XX 기반 역량)

5. Learning Map

  1. The Sandbox: 프로세스 하나를 하드웨어적으로 투명한 상자 속에 가두는 법을 배웁니다.
  2. Immutable Blueprint: 앱의 모든 하부 도면을 이미지(Image)라는 변경 불가능한 물리 단위로 굽습니다.
  3. The Layered Stack: 수정된 부분만 내려받는 수리적 효율을 위해 파일 시스템을 층층이 쌓습니다.
  4. Hardware Agnostic: 하드웨어 종류에 무관하게 이미지만 있으면 어디서나 똑같이 굴러가는 공학을 완성합니다.

6. Learning Topics

Basic

Core: 컨테이너와 가상 머신의 물리적 차이 (Container vs VM)

  • Why to Learn: 무거운 VM 대신 컨테이너를 써야 할 하드웨어 리소스적 정당성을 얻기 위해서입니다.
  • What to Learn:
    • Hypervisor vs Docker Engine: 하드웨어 추상화 계층의 위치 차이
    • Shared Kernel: 커널을 빌려 쓰는 방식이 유발하는 성능적 이득
    • Boot-up Speed: 게스트 OS 부팅 유무에 따른 수초와 수분의 물리적 간극
  • How to Learn:
    • VM 10대와 컨테이너 100대를 동시에 실행했을 때의 물리 메모리(RAM) 점유율 상관관계 측정 실습
    • 컨테이너가 죽어도 커널은 살아있는 물리적 독립성 확인
  • Implement: 특정 가상 머신 인스턴스와 컨테이너의 기동 시간을 비교하는 PerformanceLog

Core: 도커 이미지와 레이어 물리학 (Image & Layers)

  • Why to Learn: 빌드 속도를 10배 높이고 네트워크 전송 비용을 물리적으로 절감하기 위함입니다.
  • What to Learn:
    • Layer Inheritance: 부모 레이어 위에 자식 레이어를 얹는 수리 구조
    • Copy-on-Write (CoW): 수정 시에만 새 파일을 굽는 하드웨어 저장 절약 기술
    • Multi-stage Build: 제작용 도구들을 최종 결과물에서 물리적으로 제거하는 다이어트 공학
  • How to Learn:
    • Docker Image Inspect 명령어로 각 명령어(RUNRUN, COPYCOPY)가 생성하는 레이어의 하드웨어 크기 분석 실습
    • 레이어 순서를 뒤바꿨을 때 빌드 캐시(Cache)가 깨지는 물리적 파장 재현
  • Implement: 빌드 도구는 빼고 실행 파일만 담는 ThinImage 최적화 Dockerfile

Practical

Core: 리눅스 커널 격리 기술 (Isolation Mechanics)

  • Why to Learn: 컨테이너가 어떻게 물리적으로 안전하게 이웃 프로세스와 분리되는지 깊이 있게 알기 위해서입니다.
  • What to Learn:
    • Namespaces: PID, NET, MNT 등 시스템 자원을 독립적으로 보이게 만드는 수리적 속임수
    • Cgroups (Control Groups): CPU 시간, 메모리 상한, I/O 대역폭을 하드웨어적으로 강제하는 장치
    • Capabilities: 루트(Root) 권한을 세분화하여 최소한만 넘겨주는 보안 물리
  • How to Learn:
    • 호스트 머신에서 컨테이너 내부 프로세스가 어떤 PID로 보이는지 수치로 추적 실습
    • Cgroup을 통해 컨테이너의 CPU 사용률을 10%로 제한하고 하드웨어 병목 현상 관찰
  • Implement: cgroup 설정을 조작하여 인위적으로 특정 프로세스의 메모리 허용량을 깎는 실습 코드

Advanced

Core: 컨테이너 네트워크와 영속화 (Network & Volume)

  • Why to Learn: 갇혀있는 컨테이너를 외부 세상과 연결하고, 사라지는 데이터를 하드웨어에 정착시키기 위함입니다.
  • What to Learn:
    • Bridge Networking: 가상 스위치를 통한 컨테이너 간 통계 물리
    • Dynamic Port Mapping: 호스트 포트와 컨테이너 포트를 수리적으로 잇는 법
    • Mount Types: Bind mount와 Volume의 하드웨어 저장 수명주기 차이
  • How to Learn:
    • 도커 브리지 네트워크를 통해 두 컨테이너가 서로를 '이름'으로 찾아가는 물리적 과정 분석 실습
    • 컨테이너를 삭제하고 다시 띄웠을 때 마운트된 볼륨의 데이터가 보존되는 하드웨어 무결성 검증
  • Implement: 컨테이너 두 대(Web, DB)를 하나의 가상 네트워크로 묶는 DockerCompose 설정 명세

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Container 코드와 모든 의존성을 함께 패키징하여 격리된 환경에서 실행되는 소프트웨어 유닛입니다. 기본 실행 표준 Isolation / Image Virtual Machine 가볍지만 OS 종속 P1:CS2023 core
Docker Image 컨테이너를 생성하기 위한 읽기 전용 템플릿이자 물리적 청사진입니다. 기본 배포 단위 Layer / Registry OS ISO 실행 중인 상태 아님 Industry core
Namespaces 프로세스에게 시스템의 자원이 자신만 쓰는 것처럼 독립적인 환상을 제공하는 커널 기술입니다. 실무 물리 격리 PID / Network Sandbox 컨테이너의 실체 P1:CS2023 core
Cgroups 프로세스 군의 물리 자원(CPU, RAM 등) 사용량을 하드웨어적으로 제한하고 제어하는 기술입니다. 실무 자원 관리 Limit / Quota Throttle Namespaces와 짝꿍 P1:CS2023 core

8. References

Primary

Secondary

  • [Docker Deep Dive] Nigel Poulton — The comprehensive guide to Docker internals.
  • [How Linux Works] Brian Ward — For Namespaces and Cgroups foundations.

Industry

  • [Docker Documentation: Docker Architecture] — Official conceptual guide.
  • [OCI: Runtime Specification] — Industry standard for container runtimes.

9. Final Checklist

Primary

  • '컨테이너'가 왜 '가상 머신'에 비해 물리적 하드웨어 리소스 효율이 높은지 커널 공유 관점에서 설명 가능한가? (P1)
  • '리눅스 네임스페이스'가 프로세스의 '네트워크 스택'을 어떻게 물리적으로 분리시키는지 수리적으로 묘사할 수 있는 가? (P1)

Secondary

  • '도커 이미지'의 레이어 방식이 왜 하드웨어 디스크 용량을 획기적으로 아끼는 '중복 제거' 기술이 되는지 소통 가능한가?
  • 멀티 스테이지 빌드를 사용하지 않았을 때, 보안상 그리고 배포 용량상 발생하는 물리적 리스크를 논증 가능한가?

Industry

  • 운영 환경에서 특정 컨테이너가 'CPU 100%'를 점유하여 전체 하드웨어를 마비시키는 것을 방지하기 위한 '제한(LimitLimit)' 설정 시나리오를 제안할 수 있는 가? (SFIA)
  • '이미지 레지스트리'에서 데이터를 내려받을 때, 변경된 레이어(DeltaDelta)만 전파되는 물리적 메커니즘을 분석할 수 있는 가?