Docker Stats 사용법 완벽 가이드! 컨테이너 CPU·메모리 실시간 모니터링

Docker 컨테이너를 운영하다 보면 CPU 사용률이 갑자기 높아지거나 메모리가 계속 증가하는 상황을 자주 만나게 됩니다. 특히 여러 개의 컨테이너를 동시에 운영하는 서버에서는 어떤 컨테이너가 리소스를 많이 사용하는지 빠르게 확인하는 것이 매우 중요합니다.

이럴 때 사용하는 명령어가 바로 docker stats입니다.

Docker Stats는 실행 중인 컨테이너의 CPU, 메모리, 네트워크, 디스크 I/O 등의 리소스 사용량을 실시간으로 확인할 수 있는 명령어입니다. Linux의 top이나 htop처럼 Docker 컨테이너의 성능을 모니터링할 수 있어 장애 분석과 서버 운영에서 매우 자주 사용됩니다.

이번 글에서는 Docker Stats의 개념부터 기본 사용법, 출력 항목 설명, 주요 옵션, 실무 활용 사례까지 자세히 알아보겠습니다.

Docker Stats란 무엇인가?

Docker Stats는 실행 중인 컨테이너의 리소스 사용량을 실시간으로 보여주는 명령어입니다.

CPU 사용률, 메모리 사용량, 네트워크 송수신량, 디스크 입출력, 프로세스 개수(PIDs) 등을 한 번에 확인할 수 있습니다.

운영 서버에서 성능 문제를 분석할 때 가장 많이 사용하는 Docker 명령어 중 하나입니다.

Docker Stats는 언제 사용하는가?

다음과 같은 상황에서 자주 사용됩니다.

  • CPU 사용률 확인
  • 메모리 누수 분석
  • 컨테이너 성능 점검
  • 서버 장애 분석
  • 리소스 모니터링
  • 운영 서버 성능 확인

서비스가 느려졌을 때 가장 먼저 실행하는 명령어 중 하나입니다.

Docker Stats 기본 사용법

모든 실행 중인 컨테이너를 모니터링하려면 다음 명령을 사용합니다.

docker stats

실행하면 실시간으로 정보가 계속 갱신됩니다.

출력 예시는 다음과 같습니다.

CONTAINER ID   NAME         CPU %   MEM USAGE / LIMIT   MEM %   NET I/O      BLOCK I/O     PIDS
3a91fd7c5b12   nginx        0.24%   34MiB / 2GiB        1.6%    1.2MB/500KB  0B/0B         12
6b24cd8fa921   redis        0.10%   18MiB / 2GiB        0.8%    500KB/200KB  0B/0B         5

몇 초마다 자동으로 갱신되며 현재 서버 상태를 실시간으로 확인할 수 있습니다.

특정 컨테이너만 확인하기

특정 컨테이너만 모니터링하려면 이름을 지정합니다.

docker stats web-server

여러 개도 가능합니다.

docker stats nginx redis api-server

필요한 컨테이너만 확인할 수 있어 운영 시 매우 편리합니다.

한 번만 출력하기

실시간 갱신이 아닌 현재 상태만 확인하려면 --no-stream 옵션을 사용합니다.

docker stats --no-stream

현재 시점의 리소스 사용량만 출력하고 명령이 종료됩니다.

스크립트 자동화에서도 많이 사용하는 옵션입니다.

Docker Stats 출력 항목 설명

Docker Stats에는 다양한 성능 정보가 표시됩니다.

항목설명
CPU %CPU 사용률
MEM USAGE현재 메모리 사용량
MEM %메모리 사용 비율
NET I/O네트워크 송수신량
BLOCK I/O디스크 입출력
PIDS실행 중인 프로세스 수

이 항목들을 종합적으로 확인하면 컨테이너의 성능 상태를 빠르게 파악할 수 있습니다.

CPU 사용률 확인

CPU 사용률이 높은 컨테이너를 찾으려면 다음 명령을 실행합니다.

docker stats

CPU가 지속적으로 100%에 가까운 경우에는 애플리케이션의 무한 루프나 과부하를 의심해볼 수 있습니다.

메모리 사용량 확인

메모리 사용량 역시 매우 중요한 항목입니다.

메모리가 지속적으로 증가한다면 메모리 누수(Memory Leak)가 발생했을 가능성이 있습니다.

이 경우 Docker Restart나 애플리케이션 로그 분석을 함께 진행하는 것이 좋습니다.

Docker Stats 실무 활용 예제

Docker Stats는 서버 성능을 실시간으로 확인할 수 있기 때문에 장애 분석과 운영 환경에서 매우 자주 사용하는 명령어입니다. CPU 과부하, 메모리 누수, 네트워크 사용량 증가 등을 빠르게 확인할 수 있어 문제 해결 시간을 크게 단축할 수 있습니다.

모든 컨테이너 성능 확인

현재 실행 중인 모든 컨테이너의 리소스를 확인합니다.

docker stats

CPU와 메모리 사용량을 실시간으로 확인할 수 있습니다.

운영 서버에서 가장 많이 사용하는 명령어입니다.

특정 컨테이너만 모니터링

웹 서버만 확인하려면 다음과 같이 실행합니다.

docker stats web-server

특정 서비스만 집중적으로 분석할 수 있습니다.

여러 컨테이너 동시에 확인

API 서버와 Redis만 확인하는 예제입니다.

docker stats api-server redis

서비스 간 리소스 사용량을 비교할 때 유용합니다.

현재 상태만 출력

실시간 모니터링이 아닌 현재 값만 확인하려면 다음과 같이 실행합니다.

docker stats --no-stream

스크립트나 자동화 작업에서 가장 많이 사용하는 방식입니다.

출력 형식 변경

모니터링 결과를 보기 쉽게 출력할 수도 있습니다.

docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

출력 예시입니다.

NAME          CPU %     MEM USAGE
nginx         1.23%     38MiB / 2GiB
redis         0.12%     21MiB / 2GiB

필요한 정보만 출력하여 관리하기 편리합니다.

Linux 서버 문제 해결

운영 중인 API 서버에서 응답 속도가 갑자기 느려졌습니다.

먼저 현재 리소스 사용량을 확인했습니다.

docker stats

API 서버의 CPU 사용률이 98% 이상으로 유지되고 있었으며 메모리도 지속적으로 증가하는 것을 확인했습니다.

원인을 분석하기 위해 로그를 확인했습니다.

docker logs api-server

로그를 확인한 결과 특정 요청이 무한 반복되면서 CPU를 계속 사용하는 문제가 발생하고 있었습니다.

긴급하게 서비스를 복구하기 위해 컨테이너를 재시작했습니다.

docker restart api-server

다시 Docker Stats를 확인했습니다.

docker stats

CPU 사용률이 정상 수준으로 감소했고 메모리 사용량도 안정적으로 유지되었습니다.

이후 애플리케이션 코드를 수정하여 동일한 문제가 다시 발생하지 않도록 조치했습니다.

Docker Stats 사용 시 주의사항

Docker Stats를 사용할 때는 다음 사항을 알아두는 것이 좋습니다.

첫 번째는 CPU 사용률이 일시적으로 높다고 해서 반드시 문제가 있는 것은 아니라는 점입니다.

대량의 요청을 처리하는 순간에는 정상적으로 CPU 사용률이 증가할 수 있습니다.

두 번째는 메모리 사용량은 지속적인 증가 여부를 함께 확인해야 합니다.

계속 증가한다면 메모리 누수를 의심해 볼 수 있습니다.

세 번째는 Network I/O와 Block I/O도 함께 확인하는 것이 좋습니다.

CPU와 메모리가 정상인데도 서비스가 느리다면 네트워크나 디스크 입출력이 병목일 수 있습니다.

네 번째는 Docker Stats는 실행 중인 컨테이너만 표시합니다.

이미 종료된 컨테이너는 표시되지 않으므로 docker ps -a와 함께 사용하는 것이 좋습니다.

Best Practice

Docker Stats를 사용할 때는 다음과 같은 방법을 추천합니다.

  • 장애 발생 시 가장 먼저 Docker Stats를 확인합니다.
  • CPU와 메모리 사용량을 함께 분석합니다.
  • 이상이 발견되면 Docker Logs를 확인합니다.
  • 필요하면 Docker Inspect로 설정을 점검합니다.
  • 장기적인 모니터링은 Prometheus, Grafana와 함께 구성합니다.
  • 정기적으로 리소스 사용량을 점검하여 병목 현상을 예방합니다.

이러한 방법을 적용하면 컨테이너 성능을 안정적으로 관리할 수 있습니다.

자주 묻는 질문

Docker Stats는 종료된 컨테이너도 표시하나요?

아닙니다.

현재 실행 중인 컨테이너만 표시합니다.

Docker Stats는 실시간으로 갱신되나요?

네.

기본적으로 몇 초마다 자동으로 갱신됩니다.

현재 상태만 확인하려면 어떻게 하나요?

다음 명령을 사용합니다.

docker stats --no-stream

현재 시점의 정보만 출력한 후 종료됩니다.

Docker Stats에서 CPU 사용률이 계속 높은 이유는 무엇인가요?

무한 루프, 과도한 요청, 애플리케이션 오류 등이 원인일 수 있습니다.

docker logs와 함께 분석하는 것이 좋습니다.

마무리

Docker Stats는 실행 중인 컨테이너의 CPU, 메모리, 네트워크, 디스크 I/O 등을 실시간으로 확인할 수 있는 매우 중요한 모니터링 명령어입니다.

운영 환경에서는 장애 분석의 첫 단계로 Docker Stats를 실행하는 경우가 많으며, 이를 통해 어떤 컨테이너가 리소스를 과도하게 사용하는지 빠르게 파악할 수 있습니다.

Docker Logs, Docker Top, Docker Inspect와 함께 활용하면 더욱 효율적으로 Docker 환경을 운영하고 장애를 예방할 수 있습니다.

댓글 남기기