CGroup Namespace
기본 정보
cgroup 네임스페이스는 네임스페이스 내에서 실행되는 프로세스의 cgroup 계층 구조를 격리하는 Linux 커널 기능입니다. control groups의 약자인 cgroups는 CPU, 메모리, I/O와 같은 시스템 리소스에 대한 제한을 관리하고 강제로 적용할 수 있는 커널 기능입니다.
cgroup 네임스페이스는 PID, 마운트, 네트워크 등과 같은 다른 네임스페이스 유형과는 달리 별도의 네임스페이스 유형은 아니지만, 네임스페이스 격리 개념과 관련이 있습니다. cgroup 네임스페이스는 cgroup 계층 구조의 뷰를 가상화하여, cgroup 네임스페이스 내에서 실행되는 프로세스는 호스트 또는 다른 네임스페이스에서 실행되는 프로세스와는 다른 계층 구조 뷰를 가집니다.
작동 방식:
새로운 cgroup 네임스페이스가 생성되면, 생성 프로세스의 cgroup을 기반으로 cgroup 계층 구조의 뷰로 시작합니다. 이는 cgroup 네임스페이스 내에서 실행되는 프로세스가 전체 cgroup 계층 구조의 하위 집합만 볼 수 있도록 제한됨을 의미합니다.
cgroup 네임스페이스 내의 프로세스는 자신의 cgroup을 계층 구조의 루트로 볼 수 있습니다. 이는 네임스페이스 내부의 프로세스 관점에서 자신의 cgroup이 루트로 표시되며, 자신의 하위 트리 외의 cgroup에는 액세스할 수 없음을 의미합니다.
cgroup 네임스페이스는 리소스의 격리를 직접 제공하지 않습니다. 리소스 제어와 격리는 cgroup 서브시스템(예: cpu, 메모리 등)에 의해 여전히 적용됩니다.
CGroups에 대한 자세한 정보는 다음을 참조하세요:
pageCGroupsLab:
다른 네임스페이스 생성
CLI
--mount-proc
매개변수를 사용하여 /proc
파일 시스템의 새로운 인스턴스를 마운트함으로써, 새로운 마운트 네임스페이스가 해당 네임스페이스에 특정한 프로세스 정보에 대한 정확하고 격리된 뷰를 가지도록 보장합니다.
Docker
현재 프로세스가 속한 네임스페이스 확인
To check which namespace your process is in, you can use the following command:
현재 프로세스가 속한 네임스페이스를 확인하려면 다음 명령을 사용할 수 있습니다:
This command will display the control groups associated with the current process. The output will include a line that starts with 0::/
, which indicates the cgroup namespace.
이 명령은 현재 프로세스와 관련된 컨트롤 그룹을 표시합니다. 출력에는 0::/
로 시작하는 줄이 포함되어 있으며, 이는 cgroup 네임스페이스를 나타냅니다.
모든 CGroup 네임스페이스 찾기
```bash nsenter -C TARGET_PID --pid /bin/bash ``` 또한, 당신은 root 권한이 있어야만 다른 프로세스 네임스페이스로 진입할 수 있습니다. 그리고 `/proc/self/ns/cgroup`와 같은 디스크립터가 가리키는 다른 네임스페이스로 진입할 수 없습니다.
참고 자료
Last updated