Moait
홈인기 피드모든 블로그모든 태그
홈인기 피드모든 블로그모든 태그

Docker 컨테이너 핵심 실습 \:\ 리눅스 네임스페이스와 cgroup으로 자원 격리·제한

인포그랩 favicon인포그랩·DevOps·
KubernetesDevOpsCI/CDDocker
2025년 04월 09일0

AI 요약

이 글은 AI가 요약했어요. 정확한 내용은 꼭 원문을 확인해 주세요!

핵심 요약

인포그랩이 Docker 컨테이너의 네임스페이스와 cgroup을 활용한 자원 격리·제한 실습과 네트워크 분리 방법을 상세히 제시했습니다.

구현 방법

  • 리눅스 네임스페이스 격리: unshare 명령으로 PID, 네트워크 등 필요한 네임스페이스를 생성하고 격리된 환경에서 프로그램 실행. PID 네임스페이스를 통한 독립 프로세스 트리 구성 확인.
  • 네트워크 격리 및 브리지 구성: 두 개의 네임스페이스(ns1, ns2)와 veth 쌍을 연결하고 브리지(br0)를 구성한 뒤, ns 내부에 IP를 부여하고 기본 게이트웨이를 설정해 네트워크 격리 및 통신 확인.
  • 자원 관리: cgroups를 통한 메모리/CPU 제어를 설정하고, 메모리 limit(150MB) 및 CPU(50% 코어) 제한 적용 여부를 실습. CPU/메모리 사용 스크립트 실행과 로그를 통해 제어 효과를 확인.
  • Docker 자동화: Docker로 CPU 0.5코어, 메모리 200MB 컨테이너를 실행하고 자원 제어를 자동으로 확인. 컨테이너의 /proc/self/cgroup 및 cgroup 설정 파일에서 실제 적용 확인.

주요 결과

  • 네트워크 격리: ns1→브리지→ns2 및 호스트 간 양방향 핑 테스트가 정상적으로 동작하여 네트워크 격리가 올바르게 구성되었음을 확인.
  • 메모리 제어: 메모리 한도 150MB에서 OOM 발생 및 프로세스 종료를 관찰했고, 현재 메모리 사용은 약 57MB, 최대 사용량은 약 149MB에 달함.
  • CPU 제어: CPU 사용은 404 사이클 중 391회 제한(throttled)되었으며, 제한된 환경에서도 50% 대의 CPU 사용이 유지됨을 확인.
  • Docker 자원 제어 시연: 컨테이너에서 메모리 200MB, CPU 0.5코어 제어가 정확히 적용되었고, 메모리 사용은 약 1.7MB 수준으로 초기 상태를 유지함. /sys/fs/cgroup의 설정값에서도 quota와 limit이 반영됨.

연관 피드

%가 높을수록 이 글과 비슷할 가능성이 높아요!
No Image
92%

Docker 컨테이너 핵심 실습 \:\ 리눅스 네임스페이스와 cgroup으로 자원 격리·제한

인포그랩 favicon인포그랩·2025년 04월 09일
[Windows 컨테이너] 2: Windows 컨테이너 개발 환경 구축하고 테스트하기 섬네일
65%

[Windows 컨테이너] 2: Windows 컨테이너 개발 환경 구축하고 테스트하기

데브시스터즈 favicon데브시스터즈·2019년 06월 10일
No Image
65%

vCluster로 배우는 Kubernetes 클러스터 격리 실전 가이드

인포그랩 favicon인포그랩·2025년 04월 30일