본 글은 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.