Weave Net

Integrating Docker via the Network Plugin (V2)

Docker Engine version 1.12 introduced a new plugin system (V2). This document describes how to use the Network Plugin V2 of Weave Net.

Before using the plugin, please keep in mind the plugin works only in Swarm mode and requires Docker version 1.13 or later.

Installation

To install the plugin run the following command on each host already participating in a Swarm cluster, i.e. on all master and worker nodes:

$ docker plugin install rajchaudhuri/net-plugin:latest_release-<architecture>

Here, <architecture> is the processor architecture on which your Docker Engine runs. It is a necessary part of the plugin name, because Docker currently does not support multi-architecture plugins. The Weave Net Plugin V2 is available for the following architectures:

You can use the following commands to install the plugin appropriate to your architecture:

$ ARCH=$(docker version -f '{{.Server.Arch}}')
$ docker plugin install rajchaudhuri/net-plugin:latest_release-$ARCH

Docker will pull the plugin from Docker Store, and it will ask to grant privileges before installing the plugin. Afterwards, it will start weaver process which will try to connect to Swarm masters running Weave Net.

Configuring the Plugin

There are several configuration parameters which can be set with:

$ docker plugin set rajchaudhuri/net-plugin:latest_release-$ARCH PARAM=VALUE

The parameters include:

Before setting any parameter, the plugin has to be disabled with:

$ docker plugin disable rajchaudhuri/net-plugin:latest_release-$ARCH

To re-enable the plugin run the following command:

$ docker plugin enable rajchaudhuri/net-plugin:latest_release-$ARCH

Running Services or Containers Using the Plugin

After you have launched the plugin, you can create a network for Docker Swarm services by running the following command on any Docker Swarm master node:

$ docker network create --driver=rajchaudhuri/net-plugin:latest_release-$ARCH mynetwork

Or you can create a network for any Docker container with:

$ docker network create --driver=rajchaudhuri/net-plugin:latest_release-$ARCH --attachable mynetwork

To start a service attached to the network run, for example:

$ docker service create --network=mynetwork ...

To ensure that name resolution (service discovery) works as expected, do one of the following:

To start a container:

$ docker run --network=mynetwork ...

This does not require a --hostname option. The container name and any network aliases will correctly resolve to the container’s IP address.

See Also