Bird
Raised Fist0
Dockerdevops~5 mins

Manager and worker nodes in Docker - Commands & Configuration

Choose your learning style10 modes available
Introduction
When running multiple Docker hosts together, you need a way to control and organize them. Manager nodes control the cluster and assign tasks, while worker nodes run the tasks. This setup helps run apps reliably across many machines.
When you want to run a web app on several servers to handle more users without downtime
When you need to update your app without stopping all servers at once
When you want to balance work evenly across multiple computers
When you want to add or remove servers easily without breaking your app
When you want automatic recovery if one server fails
Commands
This command starts a new swarm cluster and makes this machine the manager node. The advertise address is the IP other nodes use to connect.
Terminal
docker swarm init --advertise-addr 192.168.1.100
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-0abcdef1234567890 192.168.1.100:2377
→
--advertise-addr - Sets the IP address that other nodes use to connect to this manager
Run this command on a worker node to join the swarm cluster controlled by the manager at 192.168.1.100.
Terminal
docker swarm join --token SWMTKN-1-0abcdef1234567890 192.168.1.100:2377
Expected OutputExpected
This node joined a swarm as a worker.
→
--token - The secret token that allows this node to join the swarm as a worker
Run this on the manager node to see all nodes in the swarm and their status.
Terminal
docker node ls
Expected OutputExpected
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION abcdef1234567890abcdef1234 manager-node Ready Active Leader 20.10.12 1234567890abcdef1234567890 worker-node1 Ready Active 20.10.12
Key Concept

Manager nodes control the swarm and assign tasks, while worker nodes only run the tasks assigned to them.

Common Mistakes
Trying to join a worker node without using the correct join token
The swarm will reject the node because the token is like a password to join the cluster.
Always use the exact join token provided by the manager node when running 'docker swarm join'.
Running 'docker node ls' on a worker node
Only manager nodes can list all nodes; workers do not have permission to see the cluster state.
Run 'docker node ls' only on a manager node.
Summary
Initialize a swarm on one machine to make it the manager node.
Join other machines as worker nodes using the join token from the manager.
Use 'docker node ls' on the manager to see all nodes and their status.

Practice

(1/5)
1. What is the main role of a manager node in a Docker swarm?
easy
A. To monitor network traffic between containers
B. To run the containers and execute tasks
C. To control the swarm and assign tasks to worker nodes
D. To store container images locally

Solution

  1. Step 1: Understand the role of manager nodes

    Manager nodes control the swarm and decide which tasks run where.
  2. Step 2: Compare with worker nodes

    Worker nodes only run tasks assigned by managers, they don't control the swarm.
  3. Final Answer:

    To control the swarm and assign tasks to worker nodes -> Option C
  4. Quick Check:

    Manager node role = control and assign tasks [OK]
Hint: Managers control, workers execute tasks [OK]
Common Mistakes:
  • Confusing worker nodes as controllers
  • Thinking managers run containers directly
  • Assuming managers store images only
  • Mixing network monitoring with node roles
2. Which of the following commands correctly initializes a Docker swarm as a manager node?
easy
A. docker node create manager
B. docker swarm init
C. docker swarm start manager
D. docker node init

Solution

  1. Step 1: Recall the command to start a swarm

    The command docker swarm init initializes the current node as a manager.
  2. Step 2: Check other options for correctness

    Other commands like docker node create or docker swarm start do not exist or are invalid.
  3. Final Answer:

    docker swarm init -> Option B
  4. Quick Check:

    Initialize swarm = docker swarm init [OK]
Hint: Use 'docker swarm init' to start manager node [OK]
Common Mistakes:
  • Using non-existent commands
  • Confusing node creation with swarm init
  • Trying 'docker node init' which is invalid
  • Assuming 'docker swarm start' works
3. Given the following commands run on a new machine:
docker swarm init
docker node ls

What will be the output of docker node ls?
medium
A. A list showing one manager node with status 'Ready' and availability 'Active'
B. An error saying no nodes found
C. A list showing one worker node with status 'Down'
D. Empty output with no nodes listed

Solution

  1. Step 1: Understand 'docker swarm init' effect

    This command makes the current machine a manager node in the swarm.
  2. Step 2: Check 'docker node ls' output

    It lists all nodes in the swarm. Since only one node exists (the manager), it shows that node as 'Ready' and 'Active'.
  3. Final Answer:

    A list showing one manager node with status 'Ready' and availability 'Active' -> Option A
  4. Quick Check:

    One manager node listed after init = A list showing one manager node with status 'Ready' and availability 'Active' [OK]
Hint: After init, node list shows one active manager [OK]
Common Mistakes:
  • Expecting worker nodes without joining
  • Thinking output is empty or error
  • Confusing node status terms
  • Assuming node is down immediately
4. You ran docker swarm join --token SWMTKN-1-xyz 192.168.1.10:2377 on a node but it failed with "Error response from daemon: This node is already part of a swarm." What is the likely cause?
medium
A. The node is already a member of another swarm
B. The token is invalid or expired
C. The manager IP address is incorrect
D. Docker daemon is not running on the node

Solution

  1. Step 1: Analyze the error message

    The error says the node is already part of a swarm, so it cannot join another without leaving first.
  2. Step 2: Check other options

    Invalid token or wrong IP would cause different errors. Docker daemon not running would prevent any command execution.
  3. Final Answer:

    The node is already a member of another swarm -> Option A
  4. Quick Check:

    Node already in swarm = join fails with this error [OK]
Hint: Node must leave swarm before joining another [OK]
Common Mistakes:
  • Assuming token or IP is always the cause
  • Ignoring existing swarm membership
  • Not checking Docker daemon status
  • Trying to join without leaving first
5. You want to add a new worker node to an existing swarm. The manager node IP is 10.0.0.5 and the join token is SWMTKN-1-abc123. Which sequence of commands correctly adds the worker node and verifies it joined?
hard
A. On worker: docker node add --token SWMTKN-1-abc123 10.0.0.5
On manager: docker swarm ls
B. On manager: docker swarm join --token SWMTKN-1-abc123 10.0.0.5:2377
On worker: docker node ls
C. On manager: docker node join --token SWMTKN-1-abc123 10.0.0.5
On worker: docker swarm ls
D. On worker: docker swarm join --token SWMTKN-1-abc123 10.0.0.5:2377
On manager: docker node ls

Solution

  1. Step 1: Join the worker node to the swarm

    The worker node uses docker swarm join --token TOKEN MANAGER_IP:2377 to join the swarm.
  2. Step 2: Verify the node joined on the manager

    On the manager node, docker node ls lists all nodes including the new worker.
  3. Final Answer:

    On worker: docker swarm join --token SWMTKN-1-abc123 10.0.0.5:2377; On manager: docker node ls -> Option D
  4. Quick Check:

    Join on worker, list on manager = correct process [OK]
Hint: Join on worker, verify on manager with 'docker node ls' [OK]
Common Mistakes:
  • Running join on manager instead of worker
  • Using wrong commands like 'docker node add'
  • Trying to list nodes on worker node
  • Omitting port 2377 in join command
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