How the Weave Net Docker Network Plugins Work

The Weave Net legacy plugin actually provides two network drivers to Docker –
one named weavemesh that can operate without a cluster store and another one
named weave that can only work with one (like Docker’s overlay driver), while
the V2 plugin provides one – weaveworks/net-plugin:latest_release
operating only in swarm mode.

weavemesh driver

  • Weave Net handles all co-ordination between hosts (referred to by Docker as a “local scope” driver)
  • Supports a single network only. A network named weave is automatically created for you.
  • Uses Weave Net’s partition tolerant IPAM

If you do create additional networks using the weavemesh driver, containers attached to them will be able to communicate with containers attached to weave. There is no isolation between those networks.

weave driver

  • This runs in what Docker calls “global scope”, which requires an external cluster store
  • Supports multiple networks that must be created using docker network create --driver weave ...
  • Used with Docker’s cluster-store-based IPAM

There’s no specific documentation from Docker on using a cluster
store, but the first part of
Getting Started with Docker Multi-host Networking is a good place to start.

Note: In the case of multiple networks using the weave driver, all containers are on the same virtual network but Docker allocates their addresses on different subnets so they cannot talk to each other directly.

The plugin accepts the following options via docker network create ... --opt:

  • works.weave.multicast – tells weave to add a static IP
    route for multicast traffic onto its interface.

Note: If you connect a container to multiple Weave networks, at
most one of them can have the multicast route enabled. The weave
network created when the plugin is first launched has the multicast
option turned on, but for any networks you create it defaults to off.

weaveworks/net-plugin:latest_release driver

  • The driver runs within the plugin V2.
  • Requires Docker to run in swarm mode.
  • Supports multiple networks.
  • Used with Docker’s IPAM.

See Also