CodeGym /Courses /Docker SELF /Studying the overlay network

Studying the overlay network

Docker SELF
Level 18 , Lesson 1
Available

7.1 Learning overlay network

The overlay network is a distributed Docker network that lets containers running on different hosts interact with each other. It’s often used in the context of container orchestration, like Docker Swarm or Kubernetes, to enable communication between containers running on different nodes. In this lecture, we’ll explore how to create and use an overlay network, along with some examples of its application.

The overlay network creates a virtual distributed network on top of existing ones, uniting multiple hosts in a single network space. This allows containers to interact as if they were on the same local network, no matter where the hosts are physically located.

Advantages of using an overlay network:

  1. Communication between containers on different hosts: enables network interaction between containers running on various nodes.
  2. Isolation: allows you to create isolated network spaces for different applications.
  3. Scalability: supports the dynamic addition and removal of nodes with no interruptions.

7.2 Creating an overlay network

To create an overlay network, you first need to initialize the Docker Swarm cluster. This will create a management node (manager) and allow you to set up distributed networks.

Step 1: Initialize Docker Swarm

Run the command on the host that will act as the cluster manager. This command initializes the Swarm cluster and outputs a command to join other nodes to the cluster.

Terminal

docker swarm init

Step 2: Add worker nodes to the cluster

On other hosts, run the command provided by docker swarm init to connect them to the cluster. Example command:

Terminal

docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377

Step 3: Create the overlay network

Once the cluster is initialized, create the overlay network using the command:

Terminal

docker network create -d overlay my_overlay_network

Step 4: Verify the network

To confirm that the network was created successfully, run the docker network ls command, which will list all the networks, including the new overlay network:

Terminal

docker network ls

Example output:

Terminal

NETWORK ID     NAME                DRIVER    SCOPE
a1b2c3d4e5     my_overlay_network overlay  swarm

Now the my_overlay_network is ready for use with distributed applications.

7.3 Using the overlay Network

Now that the network is created, you can run containers and services connected to this network.

Example of using the overlay network for services

In Docker Swarm, you can use services to manage containers. Let’s create a few services that will be connected to the overlay network.

Step 1: Creating a Web Server Service

Terminal

docker service create --name webserver --network my_overlay_network -p 8080:80 nginx

This command creates a webserver service connected to the my_overlay_network network. The web server will be accessible at http://localhost:8080.

Step 2: Creating a Database Service

Terminal

docker service create --name database --network my_overlay_network -e POSTGRES_PASSWORD=mysecretpassword postgres

Here, a database service is created, connected to the same network, with the environment variable POSTGRES_PASSWORD set.

Step 3: Checking Connectivity Between Services

Run a temporary container to test connectivity between services:

Terminal

docker run -it --network my_overlay_network busybox

Inside the container, use ping commands to check connectivity with the web server and database:

Terminal

ping webserver
ping database

If configured correctly, the ping will show a successful connection, confirming that the containers can interact using hostnames.

Step 4: Viewing Service Status

Use the docker service ls command to check the status of the created services:

Terminal

docker service ls

The expected output will display information about running services, their status, and the number of replicas.

Note: The overlay network allows containers on different hosts to communicate if they are connected to the same Swarm cluster.

7.4 Examples of using overlay network in Docker Compose

Docker Compose makes managing multi-container applications and networks easier. You can define an overlay network and use it for communication between containers in the docker-compose.yml file.

Example of a docker-compose.yml file:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    networks:
      - my_overlay_network
        
  db:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: mysecretpassword
    networks:
      - my_overlay_network
        
networks:
  my_overlay_network:
    driver: overlay
    attachable: true

Starting Docker Compose:

Terminal

docker stack deploy -c docker-compose.yml mystack

This command will deploy the stack using the docker-compose.yml file and create services connected to the my_overlay_network.

Practical tips:

  1. Network monitoring: Use Docker Swarm monitoring tools like Docker Dashboard or Prometheus to track the network's status and container interactions.
  2. Scalability management: Overlay network supports dynamic addition and removal of nodes. Ensure proper configuration of network resources to scale your apps.
  3. Backup configurations: Regularly save network and stack configurations for quick recovery in case of failures.
3
Task
Docker SELF, level 18, lesson 1
Locked
Creating an overlay network
Creating an overlay network
3
Task
Docker SELF, level 18, lesson 1
Locked
Creating services in an overlay network
Creating services in an overlay network
3
Task
Docker SELF, level 18, lesson 1
Locked
Testing communication between services
Testing communication between services
3
Task
Docker SELF, level 18, lesson 1
Locked
Deploying a stack using an overlay network
Deploying a stack using an overlay network
Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION