📖 Scenario: You manage a web application running in Docker containers. You want to update the application without downtime by using rolling updates.
🎯 Goal: Learn how to perform a rolling update of a Docker service to replace old containers with new ones smoothly.
📋 What You'll Learn
Create a Docker service running a specific image
Set a variable for the new image version
Update the Docker service to use the new image version
Verify the update by checking the service status
💡 Why This Matters
🌍 Real World
Rolling updates let you update live applications without downtime, keeping users happy.
💼 Career
DevOps engineers use rolling updates to deploy new versions safely and reliably.
Progress0 / 4 steps
1
Create a Docker service
Run the command docker service create --name webapp --replicas 3 nginx:1.21 to create a Docker service named webapp with 3 replicas using the nginx:1.21 image.
Docker
Hint
This command creates a service called webapp with 3 containers running nginx:1.21.
2
Set the new image version variable
Create a shell variable called NEW_IMAGE and set it to nginx:1.23.
Docker
Hint
Use NEW_IMAGE=nginx:1.23 to set the variable.
3
Update the Docker service with the new image
Run the command docker service update --image $NEW_IMAGE webapp to update the webapp service to use the new image stored in NEW_IMAGE.
Docker
Hint
This command updates the service to the new image version smoothly.
4
Check the service update status
Run docker service ps webapp to display the status of the webapp service tasks and verify the rolling update.
Docker
Hint
This command shows the tasks and their current state to confirm the update.
Practice
(1/5)
1. What is the main purpose of a rolling update in Docker?
easy
A. To restart the Docker daemon automatically
B. To delete all containers and recreate them at once
C. To backup container data before updating
D. To update containers gradually without downtime
Solution
Step 1: Understand rolling update concept
A rolling update means updating parts of a system bit by bit instead of all at once.
Step 2: Apply to Docker containers
In Docker, rolling updates replace containers one by one to avoid downtime.
Final Answer:
To update containers gradually without downtime -> Option D
Quick Check:
Rolling update = gradual update without downtime [OK]
Hint: Rolling update means gradual replacement, not all at once [OK]
Common Mistakes:
Thinking rolling update deletes all containers simultaneously
Confusing rolling update with backup process
Assuming rolling update restarts Docker daemon
2. Which Docker command option is used to perform a rolling update on a service?
easy
A. docker service update --rolling-update
B. docker service update --rollback
C. docker service update --update-parallelism
D. docker service update --force
Solution
Step 1: Identify rolling update options
Docker uses --update-parallelism to control how many containers update at once.
Step 2: Match option to rolling update
This option allows gradual updates, which is the essence of rolling updates.
Final Answer:
docker service update --update-parallelism -> Option C
Quick Check:
Rolling update option = --update-parallelism [OK]
Hint: Use --update-parallelism to control rolling update speed [OK]
Common Mistakes:
Using --force which restarts all containers immediately
Assuming --rollback triggers rolling update
Inventing a non-existent --rolling-update flag
3. Given the command:
docker service update --image myapp:v2 --update-parallelism 2 myservice
What will happen during this update?
medium
A. All containers of myservice update at once to v2
B. Two containers update at a time to v2 until all are updated
C. Only two containers update and the rest stay on old version
D. The service rolls back to the previous version
Solution
Step 1: Understand --update-parallelism effect
The option --update-parallelism 2 means update 2 containers at once.
Step 2: Apply to service update
Docker updates 2 containers to image v2, then moves to next 2, until all are updated.
Final Answer:
Two containers update at a time to v2 until all are updated -> Option B
Quick Check:
--update-parallelism 2 means update 2 containers at once [OK]
Hint: Parallelism number controls how many containers update simultaneously [OK]
Common Mistakes:
Thinking all containers update simultaneously
Believing only two containers update permanently
Confusing update with rollback
4. You run:
docker service update --image myapp:v3 --update-parallelism 3 --update-delay 10s myservice
But the update fails and leaves some containers on old version. What is a likely cause?
medium
A. The image myapp:v3 does not exist or is invalid
B. The update-delay is too short causing timeout
C. The update-parallelism value must be 1
D. Docker service update does not support update-delay
Solution
Step 1: Check update-delay and parallelism validity
Both --update-delay and --update-parallelism are valid options and can be used together.
Step 2: Consider image availability
If the new image myapp:v3 is missing or invalid, update fails and some containers remain old.
Final Answer:
The image myapp:v3 does not exist or is invalid -> Option A
Quick Check:
Update fails if new image is missing or bad [OK]
Hint: Check image existence if update leaves old containers [OK]
Common Mistakes:
Assuming update-delay causes failure
Thinking parallelism must be 1
Believing update-delay is unsupported
5. You want to update a Docker service with 10 replicas using rolling updates. You want to update 3 containers at a time and wait 5 seconds between batches. Which command correctly achieves this?
hard
A. docker service update --image myapp:v2 --update-parallelism 3 --update-delay 5s myservice
B. docker service update --image myapp:v2 --update-parallelism 5 --update-delay 3s myservice
C. docker service update --image myapp:v2 --update-parallelism 10 --update-delay 0s myservice
D. docker service update --image myapp:v2 --update-delay 5s myservice
Solution
Step 1: Match update-parallelism to batch size
To update 3 containers at a time, use --update-parallelism 3.
Step 2: Set delay between batches
To wait 5 seconds between batches, use --update-delay 5s.
Step 3: Verify full command
Combining these with the image and service name gives the correct command.
Final Answer:
docker service update --image myapp:v2 --update-parallelism 3 --update-delay 5s myservice -> Option A