NameSpace ?
리눅스에서는 접속한 게스트 별로 독립적인 공간을 제공하고 서로가 충돌하지 않도록 격리시키는 namespace 기능을 커널에 내장하고 있다.
시스템 리소스를 프로세스의 전용 자원처럼 보이게 하고, 다른 프로세스와 격리시키는 기능이다.(격리된 환경 제공)
NameSpace는 6개로 분류된다.
구분 | 설명 |
mmt (FileSystem Mount) | 호스트 파일시스템에 구애받지 않고 독립적으로 파일시스템을 마운트하거나 언마운트가 가능하다. (파일시스템의 마운트 지점을 분할하여 격리한다.) |
pid (Process) | 독립적인 프로세스 공간을 할당한다. (Process ID를 분할) |
net (Network) | namespace간에 network 충돌을 방지한다. (중복 포트 바인딩 등) |
ipc (SystemV IPC) | 프로세스간의 독립적인 통신통로를 할당한다. (Inter-Process communication 통신 격리) |
uts (hostname) | 독립적인 hostname을 할당한다. (Hostname 격리) |
user (UID) | 독립적인 사용자를 할당한다. (User와 Group ID를 분할하여 격리한다.) |
namespace를 사용하여 독립적인 공간을 할당하여 프로세스를 실행할 수 있다.
독립된 공간에 실행하였던 프로세스는 밖의 공간에서도 프로세스가 실행됨을 확인 해볼 수 있다.
따라서, namespaces의 기능은 같은 공간을 공유하되 조금 더 제한된 공간을 할당해주는 것이라고 볼 수 있다.
References
1. tech.ssut - "Docker(Container)의 작동 원리: namespaces and cgroups"
tech.ssut.me/what-even-is-a-container/
Docker(container)의 작동 원리: namespaces and cgroups
리눅스 컨테이너(LXC) 기술이 등장한 이후로 전가상화(full virtualization) 및 반가상화(para virtualization)의 시대가 저물어버렸습니다. Docker는 LXC에서 사용하는 리눅스 커널 컨테이너 기술을 이용해 만�
tech.ssut.me
2. Ray.H.Li - "Docker와 컨테이너 기술"
Docker와 컨테이너 기술
도커(Docker)
medium.com