Docker운영과 디버깅

CPU와 메모리 제한 기본

컨테이너가 호스트 자원을 무제한 쓰지 않도록 docker run 단계에서 메모리와 CPU 제한을 거는 기본 패턴을 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

bash
docker run --memory=512m --cpus=1.5 my-app:latest

설명

  • 기본적으로 컨테이너는 호스트 자원을 무제한으로 사용할 수 있으므로, 무거운 프로세스는 같은 머신의 다른 작업까지 압박할 수 있습니다.
  • --memory는 메모리 상한을, --cpus는 사용할 CPU 양을 대략적으로 제한하는 대표 옵션입니다.
  • 이런 제한은 운영 환경뿐 아니라, 개발 중 비정상 루프나 메모리 누수 문제를 조기에 드러내는 데도 도움이 됩니다.
  • 다만 제한을 너무 낮게 잡으면 정상 앱도 자주 죽거나, 성능이 급격히 떨어질 수 있습니다.
  • 따라서 제한은 "안전장치"이면서 동시에 "실제 자원 예산"이므로, 서비스 특성에 맞게 측정하며 조정해야 합니다.

짧은 예제

bash
docker run \
  --name worker \
  --memory=1g \
  --cpus=2 \
  my-worker:latest

빠른 정리

옵션의미
--memory=512m메모리 상한 설정
--cpus=1.5사용할 CPU 양 제한
제한이 없을 때호스트 자원을 과도하게 점유할 수 있음
너무 낮을 때앱이 불안정하거나 느려질 수 있음
운영 팁측정 후 예산을 정하고 점진적으로 조정

주의할 점

자원 제한은 "작게 잡을수록 안전"한 것이 아닙니다. 실제 워크로드보다 지나치게 낮게 두면 오히려 정상 요청에서도 장애처럼 보이는 현상이 생길 수 있습니다.

참고 링크

2 sources