소개
이 랩에서는 docker stats 명령어를 사용하여 Docker 컨테이너의 리소스 사용량을 효과적으로 모니터링하는 방법을 배우게 됩니다. 실행 중인 모든 컨테이너의 실시간 리소스 사용량과 이름 또는 ID 로 특정 컨테이너의 리소스 사용량을 표시하는 방법을 살펴봅니다.
또한, 중지된 컨테이너를 포함한 모든 컨테이너의 리소스 사용량을 확인하는 방법과 사용자 정의 템플릿을 사용하여 docker stats 명령의 출력 형식을 사용자 정의하는 방법을 배우게 됩니다. 마지막으로, 지속적인 스트리밍 없이 컨테이너 통계의 단일 스냅샷을 얻는 방법을 배우게 됩니다.
실행 중인 모든 컨테이너의 실시간 리소스 사용량 표시
이 단계에서는 docker stats 명령어를 사용하여 실행 중인 모든 Docker 컨테이너의 실시간 리소스 사용량을 표시하는 방법을 배우게 됩니다. 이 명령어는 CPU, 메모리, 네트워크 I/O 및 블록 I/O 를 포함한 컨테이너 리소스 사용량 데이터를 실시간으로 스트리밍하여 제공합니다.
먼저, 모니터링할 컨테이너를 몇 개 시작해 보겠습니다. ubuntu 이미지를 사용하고 백그라운드에서 실행되도록 분리 모드 (-d) 로 실행합니다. 또한, 쉽게 식별할 수 있도록 이름을 지정합니다.
docker pull ubuntu
docker run -d --name container1 ubuntu sleep infinity
docker run -d --name container2 ubuntu sleep infinity
docker run -d --name container3 ubuntu sleep infinity
이제 몇 개의 컨테이너가 실행 중이므로 docker stats 명령어를 사용하여 리소스 사용량을 확인할 수 있습니다.
docker stats
각 실행 중인 컨테이너에 대한 정보가 포함된 테이블이 표시됩니다. 여기에는 ID, 이름, CPU 사용량, 메모리 사용량, 네트워크 I/O, 블록 I/O 및 PID 가 포함됩니다. 이 출력은 실시간으로 업데이트됩니다.
docker stats 명령어를 중지하려면 Ctrl+C를 누르십시오.
이름 또는 ID 로 특정 컨테이너의 실시간 리소스 사용량 표시
이전 단계에서는 실행 중인 모든 컨테이너의 리소스 사용량을 표시하는 방법을 배웠습니다. 이 단계에서는 docker stats 명령어에 이름 또는 ID 를 제공하여 특정 컨테이너의 리소스 사용량을 표시하는 방법을 배우게 됩니다.
단일 컨테이너의 통계를 표시하려면 docker stats 명령어 뒤에 해당 이름 또는 ID 를 제공하면 됩니다. 예를 들어, container1의 통계를 보려면 다음과 같이 합니다.
docker stats container1
container1에 대한 실시간 리소스 사용량만 표시됩니다. 출력을 중지하려면 Ctrl+C를 누르십시오.
여러 컨테이너의 통계를 한 번에 보려면 여러 컨테이너 이름 또는 ID 를 지정할 수도 있습니다. 예를 들어, container1과 container2의 통계를 보려면 다음과 같이 합니다.
docker stats container1 container2
이렇게 하면 container1과 container2 모두에 대한 실시간 리소스 사용량이 표시됩니다. 출력을 중지하려면 Ctrl+C를 누르십시오.
여러 컨테이너가 실행 중일 때 특히 컨테이너 ID 보다 컨테이너 이름을 사용하는 것이 기억하고 작업하기에 일반적으로 더 쉽습니다.
모든 컨테이너 (실행 중 및 중지됨) 의 리소스 사용량 표시
기본적으로 docker stats는 실행 중인 컨테이너에 대한 통계만 표시합니다. 이 단계에서는 -a 또는 --all 플래그를 사용하여 중지된 컨테이너를 포함한 모든 컨테이너의 리소스 사용량을 표시하는 방법을 배우게 됩니다.
먼저, 이전 단계에서 시작한 컨테이너 중 하나를 중지해 보겠습니다.
docker stop container3
이제 플래그 없이 docker stats를 실행하면 여전히 실행 중인 container1과 container2만 표시됩니다.
docker stats
출력을 중지하려면 Ctrl+C를 누르십시오.
중지된 container3을 포함한 모든 컨테이너의 통계를 보려면 -a 플래그를 사용하십시오.
docker stats -a
이제 container1, container2 및 container3이 나열된 것을 볼 수 있습니다. 중지된 컨테이너의 경우 대부분의 리소스 사용량 필드는 리소스를 적극적으로 사용하지 않으므로 0% 또는 0B를 표시합니다.
이는 시스템의 모든 컨테이너와 중지되기 전 마지막으로 알려진 리소스 사용량에 대한 완전한 개요를 얻는 데 유용합니다.
사용자 정의 템플릿을 사용하여 컨테이너 통계 출력 형식 지정
이 단계에서는 사용자 정의 Go 템플릿을 사용하여 docker stats 명령의 출력 형식을 지정하는 방법을 배우게 됩니다. 이를 통해 필요한 정보만 표시하고 쉽게 구문 분석하거나 읽을 수 있는 형식으로 표시할 수 있습니다.
docker stats 명령은 인수로 Go 템플릿 문자열을 사용하는 --format 플래그를 지원합니다. 템플릿 내에서 다양한 자리 표시자를 사용하여 컨테이너 정보의 다른 부분을 나타낼 수 있습니다. 몇 가지 일반적인 자리 표시자는 다음과 같습니다.
.ContainerID: 컨테이너의 ID..Name: 컨테이너의 이름..CPUPerc: CPU 사용량 백분율..MemUsage: 메모리 사용량..NetIO: 네트워크 I/O..BlockIO: 블록 I/O..PIDs: PID 수.
컨테이너 이름, CPU 사용량 및 메모리 사용량만 표시하도록 출력을 형식 지정해 보겠습니다.
docker stats --format "{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
이 명령에서:
--format은 사용자 정의 형식을 사용하려는 것을 지정합니다."{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"는 Go 템플릿 문자열입니다.{{.Name}}은 컨테이너 이름을 표시합니다.\t는 구분을 위해 탭 문자를 삽입합니다.{{.CPUPerc}}는 CPU 사용량 백분율을 표시합니다.{{.MemUsage}}는 메모리 사용량을 표시합니다.
탭으로 구분된 컨테이너 이름, CPU 사용량 및 메모리 사용량의 실시간 스트림을 보게 됩니다. 출력을 중지하려면 Ctrl+C를 누르십시오.
필요한 출력을 얻기 위해 다양한 자리 표시자와 형식을 실험할 수 있습니다. 예를 들어, 컨테이너 ID 와 네트워크 I/O 를 포함하려면 다음을 수행합니다.
docker stats --format "ID: {{.ContainerID}}\tName: {{.Name}}\tNetIO: {{.NetIO}}"
이렇게 하면 컨테이너 통계에 대한 보다 사용자 정의된 보기가 제공됩니다.
스트리밍 없이 컨테이너 통계의 단일 스냅샷 가져오기
기본적으로 docker stats는 리소스 사용량의 실시간 스트림을 제공합니다. 그러나 때로는 지속적인 업데이트 없이 현재 통계의 단일 스냅샷만 필요할 수 있습니다. 이 단계에서는 --no-stream 플래그를 사용하여 이를 달성하는 방법을 배우게 됩니다.
--no-stream 플래그는 docker stats에 통계를 한 번 수집한 다음 종료하도록 지시하며, 출력을 지속적으로 업데이트하지 않습니다.
실행 중인 모든 컨테이너에 대한 통계의 단일 스냅샷을 가져오겠습니다.
docker stats --no-stream
컨테이너 통계 테이블이 한 번 나타나고 명령이 종료됩니다. 이는 스크립팅하거나 현재 리소스 사용량을 빠르게 확인해야 할 때 유용합니다.
--no-stream을 -a와 같은 다른 플래그와 결합하여 모든 컨테이너 (실행 중 및 중지됨) 의 스냅샷을 볼 수 있습니다.
docker stats -a --no-stream
이렇게 하면 모든 컨테이너의 단일 스냅샷이 표시됩니다.
특정 컨테이너를 지정하는 것과 결합할 수도 있습니다.
docker stats container1 container2 --no-stream
이렇게 하면 container1 및 container2에 대한 통계의 단일 스냅샷이 제공됩니다.
--no-stream을 사용하면 실시간 업데이트가 필요하지 않고 현재 리소스 사용량 상태를 캡처하려는 경우 효율적입니다.
요약
이 랩에서는 docker stats 명령을 효과적으로 사용하여 Docker 컨테이너의 리소스 사용량을 모니터링하는 방법을 배웠습니다. 먼저 실행 중인 모든 컨테이너의 실시간 리소스 사용량을 표시하여 CPU, 메모리, 네트워크 I/O 및 블록 I/O 에 대한 실시간 데이터 스트림을 관찰했습니다.
그런 다음, 개별 리소스 소비량을 보기 위해 이름 또는 ID 를 사용하여 특정 컨테이너에 집중함으로써 모니터링을 개선했습니다. 이를 통해 컨테이너 성능에 대한 타겟 분석이 가능했습니다.



