Learning
토픽 79 / 85·리눅스 커널 기술

Namespace

Namespace

프로세스가 볼 수 있는 시스템 자원을 격리하는 Linux 커널 기능으로, PID, 네트워크, 파일시스템, IPC 등을 독립적으로 제공하여 컨테이너의 핵심 격리 메커니즘 역할

목적: 자원 격리, 컨테이너 구현, 프로세스 독립성, 보안 강화

특징: 커널 레벨 격리, 경량, 7가지 타입, 중첩 가능, 컨테이너 핵심

7가지 Namespace 타입

  • PID: 프로세스 ID 격리, 컨테이너 내부 PID 1부터 시작
  • Mount: 파일시스템 마운트 포인트 격리, 독립 루트 파일시스템
  • Network: 네트워크 인터페이스, IP, 라우팅 테이블 격리
  • IPC: System V IPC, POSIX 메시지 큐 격리
  • UTS: 호스트명, 도메인명 격리
  • User: UID, GID 매핑 격리, 루트 권한 제한
  • Cgroup: Cgroup 루트 격리

생성 방법: clone(), unshare(), setns() 시스템 콜

동작: 프로세스 생성 시 Namespace 지정 → 해당 Namespace 내에서만 자원 보임 → 다른 Namespace와 격리

장점: 경량(VM보다), 빠른 생성, 효율적 격리, 중첩 가능

단점: 완전 격리 아님(커널 공유), 보안 한계(탈출 가능), 복잡한 설정

적용사례: Docker, Kubernetes, LXC, systemd-nspawn, 컨테이너 런타임

비교: Namespace(격리/경량/커널공유) vs VM(완전격리/무거움/커널독립)

연관: Cgroup, 컨테이너, Docker, LXC, 자원 격리