CPU shares define the relative priority or weight for CPU allocation among containers when the host CPU is contended. Default value is 1024; higher shares get more CPU proportionally.
Click to reveal answer
beginner
What does setting a CPU limit do for a Docker container?
A CPU limit sets the maximum CPU resources a container can use (e.g., via --cpus). It prevents the container from using more than the limit, protecting other containers and the host.
Click to reveal answer
intermediate
How do you specify CPU shares using the Docker run command?
Use the option --cpu-shares followed by a number (default 1024), for example: docker run --cpu-shares=512 myimage gives half the priority of default.
Click to reveal answer
intermediate
Explain the difference between CPU shares and CPU quota in Docker.
CPU shares set relative priority for CPU time among containers when CPU is contended (no hard limit). CPU quota (with --cpu-quota and --cpu-period) sets an absolute limit on CPU usage time.
Click to reveal answer
beginner
What happens if a container tries to use more CPU than its limit?
Docker will throttle the container's CPU usage using CFS quota, ensuring it does not exceed the set limit and protecting other containers and the host system.
Click to reveal answer
Which Docker option sets the relative CPU priority for a container?
A--cpuset-cpus
B--cpu-quota
C--cpus
D--cpu-shares
✗ Incorrect
The --cpu-shares option sets relative priority (weight) for CPU allocation when contended.
What does the Docker --cpu-quota option control?
ANumber of CPU cores assigned
BMaximum CPU time a container can use per period
CRelative CPU priority among containers
DMinimum CPU guaranteed to a container
✗ Incorrect
--cpu-quota (with --cpu-period) limits the maximum CPU time a container can consume in a period.
If no CPU limits are set, what happens when multiple containers compete for CPU?
AContainers with more CPU shares get more CPU
BCPU is shared equally by default
CThe first container gets all CPU
DContainers are throttled automatically
✗ Incorrect
By default, containers share CPU based on --cpu-shares (1024); higher shares get proportionally more when contended.
How do you limit a container to use at most 2 CPUs using Docker run?
A--cpu-quota=2
B--cpu-shares=2
C--cpus=2
D--cpu-period=2
✗ Incorrect
The --cpus=2 option limits the container to at most 2 CPUs (equivalent to quota/period settings).
What is the effect of setting CPU shares to 1024 for a container?
AIt sets the container's CPU priority relative to others (default value)
BIt guarantees 1024 CPU cores
CIt limits the container to 1024 milliseconds of CPU time
DIt reserves 1024 CPUs for the container
✗ Incorrect
1024 is the default --cpu-shares value, defining relative priority, not absolute limits or guarantees.
Describe how CPU limits and shares work in Docker and why they are important.
Think about sharing a pizza: shares decide portions when fighting over slices, limits prevent taking the whole pie.
You got /4 concepts.
Explain the difference between CPU shares, CPU quota, and --cpus in Docker.
Shares are like voting weight, quota is a timer, --cpus is a simple cap on cores.
You got /3 concepts.
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
Step 1: Understand CPU limit meaning
A CPU limit restricts the maximum CPU a container can use, preventing it from using more than set.
Step 2: Differentiate from CPU reservation
CPU reservation guarantees minimum CPU, not a maximum limit.
Final Answer:
It restricts the maximum CPU the container can use. -> Option B
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
Step 1: Identify correct flag for CPU limit
The correct Docker flag to limit CPU usage is --cpus, which accepts a decimal value.
Step 2: Check other options for correctness
--cpu-limit and --cpu-reservation are invalid flags; --cpu is not a valid flag either.
Final Answer:
docker run --cpus=0.5 myimage -> Option A
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
Step 1: Interpret --cpus flag
--cpus=1.5 means the container can use up to 1.5 CPUs maximum.
Step 2: Interpret --reserve-cpu flag
--reserve-cpu=1 means the container is guaranteed at least 1 CPU.
Final Answer:
The container can use up to 1.5 CPUs and is guaranteed 1 CPU. -> Option A
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
Step 1: Understand CPU reservation vs host capacity
CPU reservation requests minimum CPU but Docker cannot guarantee more CPUs than host has.
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.
Final Answer:
Docker will reserve CPU as best as possible but cannot guarantee 2 CPUs. -> Option C
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
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.
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.