Bird
Raised Fist0
Dockerdevops~10 mins

Container resource usage stats in Docker - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Container resource usage stats
Start docker stats command
↓
Docker daemon collects stats
↓
Retrieve CPU, Memory, Network, I/O data
↓
Display stats in real-time
↓
User views resource usage
↓
Stop command to end stats
The docker stats command starts, the daemon collects container resource data, then displays it live until stopped.
Execution Sample
Docker
docker stats --no-stream
CONTAINER ID   NAME       CPU %   MEM USAGE / LIMIT   MEM %   NET I/O     BLOCK I/O   PIDS
abc123def456   my_app     2.34%   50MiB / 1GiB       4.88%   1.2MB / 0.8MB  10MB / 5MB  12
This command shows a snapshot of resource usage for running containers without continuous updates.
Process Table
StepActionData CollectedOutput Displayed
1Run 'docker stats --no-stream'Start stats collectionHeader row with column names
2Docker daemon collects CPU usageCPU % for each containerCPU % column shows e.g. 2.34%
3Docker daemon collects Memory usageMemory used and limitMEM USAGE / LIMIT and MEM % columns filled
4Docker daemon collects Network I/OBytes sent and receivedNET I/O column shows e.g. 1.2MB / 0.8MB
5Docker daemon collects Block I/ODisk read/write bytesBLOCK I/O column shows e.g. 10MB / 5MB
6Docker daemon collects PIDsNumber of processesPIDS column shows e.g. 12
7Display all collected data in tableAll stats combinedFull stats row for container displayed
8Command ends (no streaming)Stop collectingStats output ends after one snapshot
💡 Command ends after one snapshot because of --no-stream option
Status Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5After Step 6Final
CPU %N/A2.34%2.34%2.34%2.34%2.34%2.34%
Memory UsageN/AN/A50MiB / 1GiB50MiB / 1GiB50MiB / 1GiB50MiB / 1GiB50MiB / 1GiB
Memory %N/AN/A4.88%4.88%4.88%4.88%4.88%
Network I/ON/AN/AN/A1.2MB / 0.8MB1.2MB / 0.8MB1.2MB / 0.8MB1.2MB / 0.8MB
Block I/ON/AN/AN/AN/A10MB / 5MB10MB / 5MB10MB / 5MB
PIDsN/AN/AN/AN/AN/A1212
Key Moments - 3 Insights
Why does the 'docker stats' command keep updating the output by default?
By default, 'docker stats' streams live data continuously. In the execution_table, step 8 shows the command ends only because of the '--no-stream' option.
What does the 'MEM USAGE / LIMIT' column represent?
It shows how much memory the container uses versus its maximum allowed memory. Step 3 in the execution_table shows this data is collected and displayed.
Why might CPU % be low even if the container is busy?
CPU % is a snapshot of usage at that moment. If the container is busy intermittently, the snapshot might catch it at a low usage time, as shown in step 2.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 4, what resource data is collected?
AMemory usage
BNetwork I/O
CCPU usage
DBlock I/O
💡 Hint
Check the 'Data Collected' column at step 4 in execution_table
At which step does the command stop collecting stats due to the '--no-stream' option?
AStep 6
BStep 7
CStep 8
DStep 5
💡 Hint
Look at the 'exit_note' and step 8 in execution_table
According to variable_tracker, what is the value of 'PIDs' after step 6?
AN/A
B12
C0
DUnknown
💡 Hint
Check the 'PIDs' row in variable_tracker under 'After Step 6'
Concept Snapshot
docker stats command shows live resource usage of containers
By default, it streams continuously; '--no-stream' shows one snapshot
Displays CPU %, memory usage and limit, network I/O, block I/O, and PIDs
Useful for monitoring container health and performance
Stops when user interrupts or with '--no-stream' option
Full Transcript
The docker stats command starts by sending a request to the Docker daemon to collect resource usage data for running containers. The daemon gathers CPU usage, memory usage and limits, network input/output, block device input/output, and the number of processes (PIDs) for each container. This data is displayed in a table format with columns for each metric. By default, docker stats streams this data live, updating continuously until the user stops it. Using the '--no-stream' option makes the command show only one snapshot and then exit. This helps users monitor container resource consumption in real time or as a single report.

Practice

(1/5)
1. What does the docker stats command show you?
easy
A. Docker network settings
B. Real-time resource usage like CPU and memory of containers
C. Logs of a running container
D. List of all Docker images on the system

Solution

  1. Step 1: Understand the purpose of docker stats

    This command is designed to show resource usage statistics of running containers.
  2. Step 2: Identify what resource stats include

    It shows CPU, memory, network IO, and block IO usage in real time.
  3. Final Answer:

    Real-time resource usage like CPU and memory of containers -> Option B
  4. Quick Check:

    docker stats = resource usage [OK]
Hint: Remember: stats = resource usage snapshot [OK]
Common Mistakes:
  • Confusing stats with logs
  • Thinking it lists images
  • Assuming it shows network config
2. Which of these is the correct syntax to get a one-time snapshot of container stats for container named webapp?
easy
A. docker stats --no-stream webapp
B. docker stats webapp
C. docker stats --once webapp
D. docker stats webapp --snapshot

Solution

  1. Step 1: Recall the correct option for one-time snapshot

    The flag --no-stream disables continuous updates and shows a single snapshot.
  2. Step 2: Check correct command order

    The flag --no-stream should come before the container name webapp.
  3. Final Answer:

    docker stats --no-stream webapp -> Option A
  4. Quick Check:

    One-time stats = --no-stream before container [OK]
Hint: Use --no-stream before container name for snapshot [OK]
Common Mistakes:
  • Using wrong flag like --once or --snapshot
  • Omitting the --no-stream flag
  • Omitting container name
3. What output will you get when running docker stats --no-stream with two running containers named db and cache?
medium
A. A single snapshot table showing CPU, memory, and IO stats for db and cache
B. An error saying container names are missing
C. A live updating table of resource usage for db and cache containers
D. Only stats for the first container found

Solution

  1. Step 1: Understand the effect of --no-stream flag

    This flag disables live updates and shows only one snapshot of stats.
  2. Step 2: Check default behavior without container names

    Without specifying containers, stats shows all running containers, here db and cache.
  3. Final Answer:

    A single snapshot table showing CPU, memory, and IO stats for db and cache -> Option A
  4. Quick Check:

    --no-stream + multiple containers = single snapshot for all [OK]
Hint: No container names + --no-stream = snapshot for all running [OK]
Common Mistakes:
  • Expecting live updates with --no-stream
  • Thinking container names are required
  • Assuming only one container stats shown
4. You run docker stats --no-stream mycontainer but get an error: no such container: mycontainer. What is the likely cause?
medium
A. Docker daemon is not running
B. The --no-stream flag is not supported
C. The container name is misspelled or does not exist
D. You need to add --all flag to see stopped containers

Solution

  1. Step 1: Analyze the error message

    The error says container not found, so the name is likely wrong or container is not running.
  2. Step 2: Check other options

    --no-stream is valid, Docker daemon error would be different, and --all is not for stats command.
  3. Final Answer:

    The container name is misspelled or does not exist -> Option C
  4. Quick Check:

    Container not found error = wrong name [OK]
Hint: Check container name spelling if 'no such container' error [OK]
Common Mistakes:
  • Assuming --no-stream causes error
  • Ignoring Docker daemon status
  • Thinking --all shows stats for stopped containers
5. You want to monitor CPU and memory usage of a container named api-server but only want a single snapshot, not continuous updates. Which command should you use and why?
hard
A. docker stats api-server --interval=1 to update every second
B. docker stats api-server because it shows live updates by default
C. docker stats --all api-server to include stopped containers
D. docker stats --no-stream api-server because it shows one-time resource usage snapshot

Solution

  1. Step 1: Identify the need for a single snapshot

    Using --no-stream disables continuous updates and shows one snapshot.
  2. Step 2: Confirm container name usage

    Specify the container name api-server to get stats only for it.
  3. Step 3: Evaluate other options

    Default docker stats streams live updates, --all is invalid here, and --interval is not a valid flag.
  4. Final Answer:

    docker stats --no-stream api-server because it shows one-time resource usage snapshot -> Option D
  5. Quick Check:

    Single snapshot = --no-stream with container name [OK]
Hint: Use --no-stream with container name for single snapshot [OK]
Common Mistakes:
  • Omitting --no-stream for single snapshot
  • Using invalid flags like --all or --interval
  • Expecting live updates when not wanted
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard