Container resource usage stats in Docker - Time & Space Complexity
We want to understand how the time to get resource stats from containers changes as the number of containers grows.
How does checking many containers affect the time it takes to get their usage data?
Analyze the time complexity of the following Docker command sequence.
docker stats --no-stream --format "{{.Container}} {{.CPUPerc}} {{.MemUsage}}"
This command fetches the current CPU and memory usage for all running containers once.
Look for repeated actions in the command's process.
- Primary operation: Gathering stats for each running container.
- How many times: Once per container running on the system.
As the number of containers increases, the command must collect stats from each one.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 stats collections |
| 100 | 100 stats collections |
| 1000 | 1000 stats collections |
Pattern observation: The time grows directly with the number of containers.
Time Complexity: O(n)
This means the time to get stats increases linearly as you add more containers.
[X] Wrong: "Getting stats for many containers takes the same time as for one container."
[OK] Correct: Each container adds work because stats must be collected separately, so time grows with container count.
Understanding how commands scale with input size helps you predict performance and design better monitoring tools.
"What if we removed the --no-stream option to continuously stream stats instead? How would the time complexity change?"
Practice
docker stats command show you?Solution
Step 1: Understand the purpose of
This command is designed to show resource usage statistics of running containers.docker statsStep 2: Identify what resource stats include
It shows CPU, memory, network IO, and block IO usage in real time.Final Answer:
Real-time resource usage like CPU and memory of containers -> Option BQuick Check:
docker stats = resource usage [OK]
- Confusing stats with logs
- Thinking it lists images
- Assuming it shows network config
webapp?Solution
Step 1: Recall the correct option for one-time snapshot
The flag--no-streamdisables continuous updates and shows a single snapshot.Step 2: Check correct command order
The flag--no-streamshould come before the container namewebapp.Final Answer:
docker stats --no-stream webapp -> Option AQuick Check:
One-time stats = --no-stream before container [OK]
- Using wrong flag like --once or --snapshot
- Omitting the --no-stream flag
- Omitting container name
docker stats --no-stream with two running containers named db and cache?Solution
Step 1: Understand the effect of --no-stream flag
This flag disables live updates and shows only one snapshot of stats.Step 2: Check default behavior without container names
Without specifying containers, stats shows all running containers, here db and cache.Final Answer:
A single snapshot table showing CPU, memory, and IO stats for db and cache -> Option AQuick Check:
--no-stream + multiple containers = single snapshot for all [OK]
- Expecting live updates with --no-stream
- Thinking container names are required
- Assuming only one container stats shown
docker stats --no-stream mycontainer but get an error: no such container: mycontainer. What is the likely cause?Solution
Step 1: Analyze the error message
The error says container not found, so the name is likely wrong or container is not running.Step 2: Check other options
--no-stream is valid, Docker daemon error would be different, and --all is not for stats command.Final Answer:
The container name is misspelled or does not exist -> Option CQuick Check:
Container not found error = wrong name [OK]
- Assuming --no-stream causes error
- Ignoring Docker daemon status
- Thinking --all shows stats for stopped containers
api-server but only want a single snapshot, not continuous updates. Which command should you use and why?Solution
Step 1: Identify the need for a single snapshot
Using--no-streamdisables continuous updates and shows one snapshot.Step 2: Confirm container name usage
Specify the container nameapi-serverto get stats only for it.Step 3: Evaluate other options
Defaultdocker statsstreams live updates,--allis invalid here, and--intervalis not a valid flag.Final Answer:
docker stats --no-stream api-server because it shows one-time resource usage snapshot -> Option DQuick Check:
Single snapshot = --no-stream with container name [OK]
- Omitting --no-stream for single snapshot
- Using invalid flags like --all or --interval
- Expecting live updates when not wanted
Ready to prove it?
Pass the test and this pattern moves unknown
