containerization-and-devops

Class 7 - Docker Swarm, Overlay, and Macvlan Networking (Hands-on)

Objective


Environment Used


Experiment Execution with Screenshots

Step 1: Initialize Docker Swarm (Error - Multiple IPs)

Command executed:

docker swarm init

Observed error:

Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on different interfaces (10.255.255.254 on lo and 172.24.124.248 on eth0) - specify one with --advertise-addr

Initialize Docker Swarm Error


Step 2: Initialize Swarm with Advertise Address

Command executed:

docker swarm init --advertise-addr 172.24.124.248

Initialize Swarm with Advertise Address


Step 3: List Swarm Nodes

Command executed:

docker node ls

List Swarm Nodes


Step 4: Create Overlay Network

Command executed:

docker network create -d overlay --attachable my_overlay

Create Overlay Network


Step 5: Run Containers in Overlay Network

Command executed:

docker run -d --network my_overlay --name app1 alpine sleep 3600
docker run -d --network my_overlay --name app2 alpine sleep 3600

Run Containers in Overlay Network


Step 6: Test Connectivity Between Containers

Command executed:

docker exec app1 ping app2

Test Connectivity Between Containers


Step 7: Check Default Route

Command executed:

ip route show default

Check Default Route


Step 8: Create Macvlan Network

Command executed:

docker network create -d macvlan \
  --subnet=172.24.0.0/16 \
  --gateway=172.24.112.1 \
  -o parent=eth0 \
  my_macvlan

Create Macvlan Network


Step 9: Run Nginx Container with Static IP on Macvlan

Command executed:

docker run -d \
  --name web-macvlan \
  --network my_macvlan \
  --ip 172.24.112.50 \
  nginx

Run Nginx on Macvlan


Result

Docker Swarm was successfully initialized using an explicit advertise address. Overlay and macvlan networks were created, containers were deployed, and connectivity/routing checks were validated.


Learning Outcome


- Previous Class | Theory Index | Next Class ->