진짜 개발자
본문 바로가기

Linux/Linux

Linux - Namespace 란?

728x90

Namespace 란?

- 한덩어리의 데이터에 이름을 붙혀 충돌 가능성을 줄이고, 쉽게 참조할 수 있게하는 개념


Linux 커널의 namespace 기능은

 Linux의 오브젝트에 이름을 붙임으로써 다음과 같은 6개의 독립된 환경을 구축할 수 있다.

1. PID namespace

- 프로세스에 할당된 고유한 ID를 말하며 이를 통해 프로세스를 격리할 수 있다

- namespace가 다른 프로세스 끼리는 서로 액세스할 수 없다


2. Network namespace

- 네트워크 디바이스, IP 주소, Port 번호, 라우팅 테이블, 필터링테이블 등의 네트워크 리소스를 namespace마다 격리시켜 

  독립적으로 가질 수 있다. 이 기능을 이용하면 OS 상에서 사용중인 Port가 있더라도 컨테이너 안에서 동일한 Port를 사용 가능하다.


3. UID namespace

- UID, GID를 namespace 별로 독립적으로 가질 수 있도록 한다.

- namespace 안과 호스트 OS 상에서 서로 다른 UID, GID를 가질 수 있다.


4. Mount namespace

- 호스트 OS와 namespace가 서로 다른 격리된 파일시스템 트리를 가질 수 있도록 한다

(마운트는 컴퓨터에 연결된 기기나 기억장치를 OS에 인식시켜 사용가능한 상태로 만드는 것을 의미한다)


5. UTS namespace

- namespace 별로 호스트명이나 도메인 명을 독자적으로 가질 수 있다


6. IPC namespace

- 프로세스간 통신(IPC) 오브젝트를 namespace 별로 독립적으로 가질 수 있다