토픽 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, 자원 격리