Containerization & Docker Mechanics
애플리케이션과 그 실행 환경을 표준화된 단위로 묶는 가상화 기술과, 운영체제 수준에서 격리된 공간을 만드는 컨테이너 물리학을 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts6 min read
1. Overview
컨테이너화 및 도커 메커니즘(Containerization & Docker Mechanics, CDM)은 "내 컴퓨터에서는 잘 되는데 서버에선 왜 안 되지?"라는 고전적인 하드웨어-소프트웨어 불일치 문제를 해결하기 위해, 앱 실행에 필요한 모든 것을 단일 물리 상자에 담는 패키징 공학입니다.
학습자는 무거운 하드웨어 가상화(VM)를 대신하여 운영체제 커널을 공유하며 프로세스를 격리하는 OS 수준 가상화의 수리적 사상을 배웁니다. 특히, 컨테이너 기술의 표준인 **도커(Docker)**의 계층적 파일 시스템(Layered FS)과, 리눅스 커널의 Namespaces 및 Cgroups가 어떻게 물리적 격리 방화벽을 구축하는지 익힙니다. 이를 통해 서비스의 '이식성(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 작성 시 레이어 순서가 왜 빌드 속도()와 하드웨어 디스크 점유율을 결정짓는 결정적 변수가 되는지 분석하지 못한다면 컨테이너의 효율성을 이해하지 못한 것입니다.
4. Prerequisites
- Process & Thread Management (Basic): 운영체제의 프로세스 개념 이해가 필수입니다. (03-01-01 PTM)
- Linux Fundamentals (Recommended): 쉘(Shell) 및 기본 명령어 이해가 권장됩니다. (03-03-XX 기반 역량)
5. Learning Map
- The Sandbox: 프로세스 하나를 하드웨어적으로 투명한 상자 속에 가두는 법을 배웁니다.
- Immutable Blueprint: 앱의 모든 하부 도면을 이미지(Image)라는 변경 불가능한 물리 단위로 굽습니다.
- The Layered Stack: 수정된 부분만 내려받는 수리적 효율을 위해 파일 시스템을 층층이 쌓습니다.
- 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
Recommended
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명령어로 각 명령어(, )가 생성하는 레이어의 하드웨어 크기 분석 실습- 레이어 순서를 뒤바꿨을 때 빌드 캐시(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
8. References
Primary
- [P1] CS2023 - AR/Architecture (Virtualization and containers) — Hardware context.
- [P1] CS2023 - SF/Systems Fundamentals (Resources and isolation mechanisms) — Core requirements.
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%'를 점유하여 전체 하드웨어를 마비시키는 것을 방지하기 위한 '제한()' 설정 시나리오를 제안할 수 있는 가? (SFIA)
- '이미지 레지스트리'에서 데이터를 내려받을 때, 변경된 레이어()만 전파되는 물리적 메커니즘을 분석할 수 있는 가?