프로세스를 실행 할 때 시스템의 리소스를 **분리
**해서 실행 할 수 있도록 도와주는 기능
Kernel Version 2.6.24 이후 지원하는 기능
**chroot
**는 프로세스가 임의의 디렉토리를 시스템의 Root Directory로 볼 수 있도록 허용
서버에서 임의의(혹은 알 수 없는) 프로그램을 안전하게 실행 가능
**Namespace
**의 지원하는 격리 범위
PID (프로세스) : 독립적인 프로세스 공간 할당
UTS (hostname) : 독립적인 hostname 할당
net (네트워크) : Namespace간 Network 충돌 방지 (중복 포트 바인딩 등)
mnt (파일시스템 마운트) : 호스트 파일시스템과 독립적으로 파일시스템에 마운트 및 언마운트 가능
ipc (SystemV IPC) : 프로세스간 독립적인 통신 통로 할당
user (UID) : 독립적인 사용자 할당
[ec2-user@ip-192-168-1-180 ~]$ sudo ls -al /proc/1/ns
합계 0
dr-x--x--x 2 root root 0 3월 8 07:41 .
dr-xr-xr-x 9 root root 0 3월 8 05:37 ..
lrwxrwxrwx 1 root root 0 3월 8 07:41 cgroup -> cgroup:[4026531835]
lrwxrwxrwx 1 root root 0 3월 8 07:41 ipc -> ipc:[4026531839]
lrwxrwxrwx 1 root root 0 3월 8 07:41 mnt -> mnt:[4026531840]
lrwxrwxrwx 1 root root 0 3월 8 07:41 net -> net:[4026531993]
lrwxrwxrwx 1 root root 0 3월 8 07:41 pid -> pid:[4026531836]
lrwxrwxrwx 1 root root 0 3월 8 07:41 pid_for_children -> pid:[4026531836]
lrwxrwxrwx 1 root root 0 3월 8 07:41 user -> user:[4026531837]
lrwxrwxrwx 1 root root 0 3월 8 07:41 uts -> uts:[4026531838]
[ec2-user@ip-192-168-1-180 ~]$ sudo ls -al /proc/1074/ns
합계 0
dr-x--x--x 2 root root 0 3월 8 07:41 .
dr-xr-xr-x 9 root root 0 3월 8 05:37 ..
lrwxrwxrwx 1 root root 0 3월 8 07:41 cgroup -> cgroup:[4026531835]
lrwxrwxrwx 1 root root 0 3월 8 07:41 ipc -> ipc:[4026531839]
lrwxrwxrwx 1 root root 0 3월 8 07:41 mnt -> mnt:[4026531840]
lrwxrwxrwx 1 root root 0 3월 8 07:41 net -> net:[4026531993]
lrwxrwxrwx 1 root root 0 3월 8 07:41 pid -> pid:[4026531836]
lrwxrwxrwx 1 root root 0 3월 8 07:41 pid_for_children -> pid:[4026531836]
lrwxrwxrwx 1 root root 0 3월 8 07:41 user -> user:[4026531837]
lrwxrwxrwx 1 root root 0 3월 8 07:41 uts -> uts:[4026531838]
[ec2-user@ip-192-168-1-180 ~]$ sudo ls -al /proc/1080/ns
합계 0
dr-x--x--x 2 root root 0 3월 8 07:41 .
dr-xr-xr-x 9 root root 0 3월 8 05:37 ..
lrwxrwxrwx 1 root root 0 3월 8 07:41 cgroup -> cgroup:[4026531835]
lrwxrwxrwx 1 root root 0 3월 8 07:41 ipc -> ipc:[4026531839]
lrwxrwxrwx 1 root root 0 3월 8 07:41 mnt -> mnt:[4026531840]
lrwxrwxrwx 1 root root 0 3월 8 07:41 net -> net:[4026531993]
lrwxrwxrwx 1 root root 0 3월 8 07:41 pid -> pid:[4026531836]
lrwxrwxrwx 1 root root 0 3월 8 07:41 pid_for_children -> pid:[4026531836]
lrwxrwxrwx 1 root root 0 3월 8 07:41 user -> user:[4026531837]
lrwxrwxrwx 1 root root 0 3월 8 07:41 uts -> uts:[4026531838]
기본적으로 1번 프로세스의 Namespace를 공유해서 실행하므로 1번을 제외한 임의의 프로세스(위에서는 1074/1080)을 조회해서 봐도 Namespace 고유값은 1번 프로세스와 같은 것을 알 수 있다.
## Process Namespace
일반적으로 Linux Kernel은 단일 프로세스 트리를 유지 하였고 트리에는 Parent-child 계층에서 실행중인 모든 프로세스에 대한 참조가 포함된다. 충분한 권한과 조건을 만족하는 프로세스는 다른 프로세스를 검사하거나 죽일 수 있다