Dev/CS

Linux | 네임스페이스란?(가볍게)

vanss 2022. 11. 6. 01:13
본 글은 Docker Container의 프로세스 격리 방식에 공부하다 알게된 네임스페이스에 대해 간략하게 알아보기 위한 글입니다.
피드백은 언제든지 환영입니다. 🤩

 

네임스페이스가 뭐예요?

네임스페이스는 동일한 시스템에서 별개의 독립된 공간을 각각 격리된 환경에서 운영할 수 있게 돕는 가상화 기술입니다. 즉, 프로세스를 실행할 때 시스템의 리소스를 분리해서 실행될 수 있도록 도와주는 것이죠.

 

하이퍼바이저도 격리된 환경으로 가상화하는 걸로 아는데 무슨 차이가 있나요?

하이퍼바이저는 하드웨어를 기반으로 하드웨어를 물리적으로 구분하여 가상화를 하지만, 네임스페이스는 동일한 OS 및 커널을 깔고 그 위에서 작동되기 때문에 기반이 다릅니다.

 

Docker에서도 적용된다고 했는데 확인해보고 싶어요

jenkins server를 실행 중인 Docker container에서 한번 네임스페이스를 확인해보겠습니다. 프로세스 정보가 있는 /proc 디렉터리에서 $ ls -al /proc/1/ns 명령어를 실행하면 아래와 같이 현재 프로세스에서 사용하고 있는 네임스페이스들이 각 네임스페이스들의 고유 ID와 함께 확인됩니다.

 

화면에 보이는 cgroup? ipc? mnt? 이 뭐예요?

각각 이름들은 네임스페이스 이름을 뜻합니다. 현재 리눅스에서 지원하는 네임스페이스는 아래와 같습니다.

 

  - cgroup : Cgroup 네임스페이스

  - ipc : IPC 네임스페이스

  - network : 네트워크 네임스페이스

  - mnt : 마운트 네임스페이스

  - pid : PID 네임스페이스

  - user : UTS 네임스페이스

  - uts : 사용자 네임스페이스

  - time : 시간 네임스페이스

 

네임스페이스 별 자세한 내용은 다른 글을 통해 정리해보겠습니다.

 

ref.

로스카츠의 AI 머신러닝

44 bits