Docker는 Linux 커널 기능 — namespace(격리), cgroup(리소스 제어), union 파일시스템(layer로 이루어진 image) — 을 사용하여 가벼운 container를 만듭니다. 기저 메커니즘을 이해하면 container가 어떻게 격리와 효율성을 달성하는지 설명할 수 있습니다.
namespace — 격리
Linux NAMESPACE는 프로세스가 볼 수 있는 것을 격리함 — 각 container에 자체 뷰를 부여:
PID namespace → 자체 프로세스 트리(container가 자체 프로세스만 봄)
NET namespace → 자체 네트워크 인터페이스, IP, 포트
MNT namespace → 자체 파일시스템 마운트
UTS namespace → 자체 호스트명
IPC, USER namespace → 격리된 IPC, 사용자/그룹 ID 매핑
→ namespace는 container가 별도의 머신처럼 느껴지는(격리된 뷰) 이유임,
실제로는 호스트 커널을 공유하면서.
