How to use Docker overlay networks?

· Category: Docker

Short answer

Docker overlay networks use VXLAN tunneling to connect containers across multiple hosts. They are primarily used in Docker Swarm to enable service discovery and load balancing across a cluster.

Steps

  1. Initialize Docker Swarm: docker swarm init.
  2. Create an overlay network: docker network create -d overlay myoverlay.
  3. Attach services to the overlay network in a Swarm stack.
  4. Deploy the stack with docker stack deploy.

Example

docker swarm init

docker network create -d overlay --attachable myoverlay

docker service create --name web --network myoverlay -p 80:80 nginx

Compose file for Swarm:

version: "3.9"
services:
  web:
    image: nginx
    networks:
      - myoverlay
networks:
  myoverlay:
    driver: overlay

Tips

  • Use --attachable to allow standalone containers to join the overlay network.
  • Ensure firewalls allow VXLAN traffic on UDP port 4789.
  • Encrypted overlays can be created with --opt encrypted for sensitive data.

Common issues

  • Overlay networks require a key-value store or Swarm mode on older Docker versions.
  • MTU mismatches can cause packet fragmentation issues.
  • Firewalls between nodes must permit traffic on Swarm ports 7946 and 4789.