Bird
Raised Fist0
Dockerdevops~20 mins

CPU limits and reservations in Docker - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
CPU Resource Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding CPU Reservations in Docker

What does setting a CPU reservation in a Docker container do?

ADisables CPU usage for the container
BLimits the container to never use more than the reserved CPU share
CGuarantees the container will always get the reserved CPU share even if the host is busy
DSets a soft limit that reserves CPU cycles for the container but does not restrict usage above it
Attempts:
2 left
💡 Hint

Think about what 'reservation' means in real life, like reserving a seat but not limiting others from using more if available.

💻 Command Output
intermediate
2:00remaining
Output of Docker Run with CPU Limit

What is the effect of running this command?

docker run --cpus=0.5 alpine top
AThe container can use up to 50% of one CPU core
BThe container is limited to 0.5 CPU cores but can burst above if available
CThe container is guaranteed 0.5 CPU cores minimum
DThe container will use exactly 0.5 CPU cores at all times
Attempts:
2 left
💡 Hint

Consider what '--cpus' means as a limit, not a reservation.

❓ Troubleshoot
advanced
2:00remaining
Troubleshooting CPU Limit Not Enforced

A Docker container is started with --cpu-shares=512 but it uses more CPU than expected. What is a likely cause?

AThe host has multiple CPU cores, so the container can use more than one core
BThe container is using CPU shares instead of CPU quota, so limits are not enforced
CDocker does not support CPU limits on the host operating system
DThe CPU limit flag was ignored because the container is running in privileged mode
Attempts:
2 left
💡 Hint

Check if CPU quota or CPU shares are being used for limiting CPU.

🔀 Workflow
advanced
2:00remaining
Configuring CPU Limits and Reservations in Docker Compose

Which snippet correctly sets a CPU limit of 1.5 CPUs and a CPU reservation of 0.5 CPUs in a Docker Compose file?

Docker
services:
  app:
    image: myapp
    deploy:
      resources:
        limits:
          cpus: '1.5'
        reservations:
          cpus: '0.5'
A
limits:
  cpus: '1.5'
reservations:
  cpus: '0.5'
B
limits:
  cpus: 1.5
reservations:
  cpus: 0.5
C
limits:
  cpus: 1
reservations:
  cpus: 1
D
limits:
  cpus: '0.5'
reservations:
  cpus: '1.5'
Attempts:
2 left
💡 Hint

Check the string format and values for limits and reservations.

✅ Best Practice
expert
2:00remaining
Best Practice for Setting CPU Reservations in Production

What is the best practice when setting CPU reservations for containers in a production environment?

AAvoid setting CPU reservations to let the container use any available CPU freely
BSet CPU reservations equal to CPU limits to guarantee exact CPU usage
CSet CPU reservations lower than CPU limits to ensure minimum guaranteed CPU while allowing bursts
DSet CPU reservations higher than CPU limits to prioritize the container
Attempts:
2 left
💡 Hint

Think about balancing guaranteed resources and flexibility.

Practice

(1/5)
1. What does setting a CPU limit for a Docker container do?
easy
A. It pauses the container when CPU usage is high.
B. It restricts the maximum CPU the container can use.
C. It sets the container to use all available CPUs.
D. It guarantees the container will always get that CPU amount.

Solution

  1. Step 1: Understand CPU limit meaning

    A CPU limit restricts the maximum CPU a container can use, preventing it from using more than set.
  2. Step 2: Differentiate from CPU reservation

    CPU reservation guarantees minimum CPU, not a maximum limit.
  3. Final Answer:

    It restricts the maximum CPU the container can use. -> Option B
  4. Quick Check:

    CPU limit = max CPU allowed [OK]
Hint: Limit means max CPU allowed, reservation means minimum guaranteed [OK]
Common Mistakes:
  • Confusing CPU limit with CPU reservation
  • Thinking CPU limit guarantees CPU
  • Assuming CPU limit pauses container
2. Which of the following is the correct Docker run command to limit a container to use at most 0.5 CPUs?
easy
A. docker run --cpus=0.5 myimage
B. docker run --cpu-limit=0.5 myimage
C. docker run --cpu-reservation=0.5 myimage
D. docker run --cpu=0.5 myimage

Solution

  1. Step 1: Identify correct flag for CPU limit

    The correct Docker flag to limit CPU usage is --cpus, which accepts a decimal value.
  2. Step 2: Check other options for correctness

    --cpu-limit and --cpu-reservation are invalid flags; --cpu is not a valid flag either.
  3. Final Answer:

    docker run --cpus=0.5 myimage -> Option A
  4. Quick Check:

    Use --cpus to set CPU limit [OK]
Hint: Use --cpus flag to limit CPU usage in docker run [OK]
Common Mistakes:
  • Using non-existent flags like --cpu-limit
  • Confusing CPU limit with CPU reservation flags
  • Using --cpu instead of --cpus
3. Given the command docker service create --cpus=1.5 --reserve-cpu=1 myimage, what does this configuration mean?
medium
A. The container can use up to 1.5 CPUs and is guaranteed 1 CPU.
B. The container is limited to 1 CPU and has no guaranteed CPU.
C. The container can use up to 1 CPU and is guaranteed 1.5 CPUs.
D. The container is guaranteed 1.5 CPUs and limited to 1 CPU.

Solution

  1. Step 1: Interpret --cpus flag

    --cpus=1.5 means the container can use up to 1.5 CPUs maximum.
  2. Step 2: Interpret --reserve-cpu flag

    --reserve-cpu=1 means the container is guaranteed at least 1 CPU.
  3. Final Answer:

    The container can use up to 1.5 CPUs and is guaranteed 1 CPU. -> Option A
  4. Quick Check:

    --cpus = max CPU, --reserve-cpu = guaranteed CPU [OK]
Hint: Max CPU = --cpus, guaranteed CPU = --reserve-cpu [OK]
Common Mistakes:
  • Swapping meanings of limit and reservation
  • Assuming reservation is max CPU
  • Ignoring one of the flags
4. You run docker service create --reserve-cpu=2 myimage on a host with only 1 CPU. What is the likely outcome?
medium
A. Docker will reserve 2 CPUs regardless of host capacity.
B. Docker will throw an error and refuse to start the container.
C. Docker will reserve CPU as best as possible but cannot guarantee 2 CPUs.
D. Docker will limit the container to 1 CPU automatically.

Solution

  1. Step 1: Understand CPU reservation vs host capacity

    CPU reservation requests minimum CPU but Docker cannot guarantee more CPUs than host has.
  2. Step 2: Behavior when reservation exceeds host CPUs

    Docker tries to reserve as much as possible but cannot guarantee more than available CPUs; it does not error out.
  3. Final Answer:

    Docker will reserve CPU as best as possible but cannot guarantee 2 CPUs. -> Option C
  4. Quick Check:

    Reservation tries best effort, no error if host CPU insufficient [OK]
Hint: Reservation can't exceed host CPU, but no error thrown [OK]
Common Mistakes:
  • Expecting error when reservation > host CPU
  • Thinking Docker limits container automatically
  • Confusing reservation with limit
5. You want to run two containers on a 4-CPU host. Container A needs at least 1 CPU but can use up to 2 CPUs. Container B needs at least 1.5 CPUs but can use up to 2.5 CPUs. Which of the following flag sets correctly set CPU limits and reservations to meet these requirements without overcommitting the host?
hard
A. Container A: --reserve-cpu=1.5 --cpus=2, Container B: --reserve-cpu=1 --cpus=2.5
B. Container A: --reserve-cpu=2 --cpus=1, Container B: --reserve-cpu=2.5 --cpus=1.5
C. Container A: --reserve-cpu=1 --cpus=1.5, Container B: --reserve-cpu=1.5 --cpus=2
D. Container A: --reserve-cpu=1 --cpus=2, Container B: --reserve-cpu=1.5 --cpus=2.5

Solution

  1. Step 1: Check CPU reservations sum

    Container A reserves 1 CPU, Container B reserves 1.5 CPUs; total 2.5 CPUs < 4 CPUs host, so no overcommit.
  2. Step 2: Check CPU limits sum

    Container A max 2 CPUs, Container B max 2.5 CPUs; total 4.5 CPUs > 4 CPUs host, but limits can exceed host CPUs as they are max caps, not guaranteed.
  3. Step 3: Verify options

    Container A: --reserve-cpu=1 --cpus=2, Container B: --reserve-cpu=1.5 --cpus=2.5 matches requirements exactly. Others swap reservation and limit or exceed reservation beyond requirements.
  4. Final Answer:

    Container A: --reserve-cpu=1 --cpus=2, Container B: --reserve-cpu=1.5 --cpus=2.5 -> Option D
  5. Quick Check:

    Reservations sum < host CPUs, limits set max usage [OK]
Hint: Sum reservations ≤ host CPUs; limits can be higher [OK]
Common Mistakes:
  • Swapping reservation and limit values
  • Overcommitting CPU reservations beyond host capacity
  • Confusing reservation with limit in commands
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