Bird
Raised Fist0
Dockerdevops~5 mins

Scaling services with replicas in Docker - Commands & Configuration

Choose your learning style10 modes available
Introduction
Sometimes one copy of a service is not enough to handle all the users or tasks. Scaling with replicas means running multiple copies of the same service to share the work and keep things running smoothly.
When your website gets more visitors and one server copy is too slow
When you want to keep your app running even if one copy crashes
When you need to handle many tasks at the same time without delays
When you want to update your app without stopping all users
When you want to balance the work evenly across several servers
Config File - docker-compose.yml
docker-compose.yml
version: '3.8'
services:
  webapp:
    image: nginx:1.23
    deploy:
      replicas: 3
    ports:
      - "8080:80"

This file tells Docker Compose to run the nginx web server with 3 copies (replicas).

The deploy.replicas key sets how many copies to run.

The ports section maps port 8080 on your computer to port 80 inside each container.

Commands
This command starts Docker Swarm mode on your machine, which is needed to manage multiple replicas of a service.
Terminal
docker swarm init
Expected OutputExpected
Swarm initialized: current node (abcdef123456) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-0abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 192.168.1.2:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
This command deploys the stack named 'myapp' using the docker-compose.yml file, creating 3 replicas of the webapp service.
Terminal
docker stack deploy -c docker-compose.yml myapp
Expected OutputExpected
Creating network myapp_default Creating service myapp_webapp
→
-c - Specifies the compose file to use
This command lists all running services and shows how many replicas are running for each.
Terminal
docker service ls
Expected OutputExpected
ID NAME MODE REPLICAS IMAGE PORTS abcdef123456 myapp_webapp replicated 3/3 nginx:1.23 *:8080->80/tcp
This command shows detailed information about each replica of the webapp service, including their current state and node.
Terminal
docker service ps myapp_webapp
Expected OutputExpected
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 123abc456def myapp_webapp.1 nginx:1.23 node1 Running Running 2 minutes ago 789def123abc myapp_webapp.2 nginx:1.23 node1 Running Running 2 minutes ago 456def789abc myapp_webapp.3 nginx:1.23 node1 Running Running 2 minutes ago
Key Concept

If you remember nothing else from this pattern, remember: running multiple replicas of a service shares the work and improves reliability.

Common Mistakes
Trying to scale replicas without initializing Docker Swarm mode
Docker needs Swarm mode active to manage multiple replicas; without it, scaling commands fail.
Run 'docker swarm init' first to enable Swarm mode before deploying services with replicas.
Using 'docker-compose up' instead of 'docker stack deploy' for scaling replicas
'docker-compose up' does not support swarm mode scaling; replicas won't be created.
Use 'docker stack deploy -c docker-compose.yml <stack_name>' to deploy and scale services with replicas.
Not exposing ports correctly when running multiple replicas
If ports are not mapped properly, you cannot access the service from outside the Docker network.
Map ports in the compose file under 'ports' so the service is reachable on your machine.
Summary
Initialize Docker Swarm mode to enable service scaling with replicas.
Use a docker-compose.yml file with the 'deploy.replicas' key to define how many copies to run.
Deploy the stack with 'docker stack deploy' and verify replicas with 'docker service ls' and 'docker service ps'.

Practice

(1/5)
1. What does scaling a Docker service with replicas do?
easy
A. Runs multiple copies of the service to handle more work
B. Deletes the service completely
C. Changes the service's network settings
D. Updates the Docker engine version

Solution

  1. Step 1: Understand the purpose of replicas

    Replicas are copies of a service running simultaneously to share the workload.
  2. Step 2: Identify the effect of scaling replicas

    Scaling increases or decreases the number of these copies to improve performance and availability.
  3. Final Answer:

    Runs multiple copies of the service to handle more work -> Option A
  4. Quick Check:

    Scaling = multiple copies [OK]
Hint: Scaling means running more copies of your service [OK]
Common Mistakes:
  • Thinking scaling deletes the service
  • Confusing scaling with network changes
  • Assuming scaling updates Docker itself
2. Which is the correct command to scale a Docker service named webapp to 5 replicas?
easy
A. docker service scale webapp -replicas 5
B. docker scale service webapp 5
C. docker service scale webapp --replicas=5
D. docker service scale webapp=5

Solution

  1. Step 1: Recall the correct syntax for scaling

    The correct syntax is docker service scale SERVICE_NAME=NUMBER.
  2. Step 2: Match the syntax with the options

    docker service scale webapp=5 matches the exact syntax: docker service scale webapp=5.
  3. Final Answer:

    docker service scale webapp=5 -> Option D
  4. Quick Check:

    Correct syntax = docker service scale NAME=NUM [OK]
Hint: Use SERVICE_NAME=NUMBER format with docker service scale [OK]
Common Mistakes:
  • Using wrong command order
  • Adding extra flags not needed
  • Using spaces instead of '='
3. Given the command docker service scale api=3, what will be the number of running containers for the api service?
medium
A. 3 containers
B. 1 container
C. 0 containers
D. Depends on the Docker version

Solution

  1. Step 1: Understand the scale command effect

    The command sets the number of replicas to 3, so Docker runs 3 containers for the service.
  2. Step 2: Confirm the number of containers

    Scaling to 3 means exactly 3 containers will be running for api.
  3. Final Answer:

    3 containers -> Option A
  4. Quick Check:

    Scale api=3 means 3 containers [OK]
Hint: Scale number equals running containers count [OK]
Common Mistakes:
  • Assuming only 1 container runs by default
  • Thinking scaling depends on Docker version
  • Confusing replicas with CPU cores
4. You run docker service scale backend=two but get an error. What is the problem?
medium
A. The service name cannot be 'backend'
B. The number of replicas must be a numeric value
C. The command should be run as root user
D. Docker service scale does not support scaling

Solution

  1. Step 1: Check the scale command syntax

    The replicas count must be a number, not a word.
  2. Step 2: Identify the error cause

    Using 'two' instead of '2' causes a syntax error.
  3. Final Answer:

    The number of replicas must be a numeric value -> Option B
  4. Quick Check:

    Replicas must be numeric [OK]
Hint: Use digits, not words, for replica counts [OK]
Common Mistakes:
  • Using words instead of numbers
  • Assuming service name is invalid
  • Thinking root user is required
5. You have a service app running with 2 replicas. You want to update it to 4 replicas but keep the service running without downtime. Which command should you use?
hard
A. docker service scale app 4
B. docker container run app --replicas 4
C. docker service update --replicas 4 app
D. docker service restart app --replicas 4

Solution

  1. Step 1: Understand how to update replicas without downtime

    Using docker service update --replicas 4 app changes replicas smoothly.
  2. Step 2: Compare options for scaling

    docker service scale can scale but docker service update is preferred for zero downtime updates.
  3. Step 3: Identify incorrect commands

    docker container run and docker service restart do not scale replicas properly.
  4. Final Answer:

    docker service update --replicas 4 app -> Option C
  5. Quick Check:

    Use service update for zero downtime scaling [OK]
Hint: Use 'docker service update --replicas' to avoid downtime [OK]
Common Mistakes:
  • Using docker service scale causing brief downtime
  • Trying to run containers manually
  • Restarting service instead of updating replicas
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