공부내용공유

linux - name space (네임스페이스) 본문

Server/linux

linux - name space (네임스페이스)

forfun 2023. 6. 27. 11:19

서론


docker 를 공부하다가 docker 가 linux 의 name space 를 기반으로 만들어졌다는걸 알게되었고

docker 를 보다 더 잘 이해하려면 이 기반이 되는 기술부터 잘 알아야겠다 생각이 들어서 정리를 하게 되었다.

목차

  • 리눅스 네임 스페이스란?
  • 네임 스페이스 종류

리눅스 네임 스페이스란?


  • 컨테이너 기반 가상화 기술의 기반이 되는 기능이다.
  • 하나의 시스템에서 사용되지만 별개의 독립 공간처럼 격리된 환경을 제공하는 light weight 가상화 기술이다.
  • 빌라에 각 층, 호수 별로 독립되어진 주거환경을 제공하는것과 유사하다.

이렇게 네임스페이스의 특징을 보면 하이퍼바이저 (hypevisor) 와 유사한것처럼 보이지만 둘은 차이가 있다.

하이퍼바이저

  • 하드웨어를 물리적으로 구분해서 가상화를 한다.
  • 즉 게스트 OS는 물리적으로 구분된 공간에서 돌아간다.

네임 스페이스

  • 하드웨어를 분리하지 않는다.
  • 동일한 OS, Kernel 에서 작동한다.

한 덩어리의 데이터에 이름을 붙여 분할을 함으로 충돌 가능성을 줄인다. 이를 통해 같은 이름이라도 이름 공간이 다르면 다른 실체로 처리하게 된다.

네임 스페이스 종류


UTS namespace

  • hostname 혹은 domain name을 네임스페이스 별로 격리시켜준다.

IPC namespace

  • IPC (inter process communication) 프로세스간 통신
  • 프로세스간 통신을 주고 받는 경로를 격리시킨다.
  • 즉 프로세스간 통신 (semaphore, file locking, mutex) 등에 대한 접근 제어

PID namespace

  • Process Id 를 분할 관리한다.
  • PID namespace를 통해 하나의 시스템에서 같은 PID가 2개인것처럼 프로세를 만들 수 있다.
  • 이 기능을 통해 docker 가 같은 커널임에도 pid 1을 가질 수 있다.

NS namespace

  • Mount namespace
  • 파일 시스템의 마운트(mount) 지점을 분할하여 격리한다.
  • 지정된 파일 시스템을 루트처럼 생각하여 동작하게 된다.

NET namespace

  • 네트워크 인터페이스, iptables 등 네트워크 리소스 관련 정보를 분할한다.
  • ip,port,라우팅 테이블 등등

USER namespace

  • user 와 group id 를 분할하고 격리한다.
  • 프로세스별 UID, GID