Provisioned for Docker V2 plugin on multiple architectures, blocked CHECKPOINT, updated docs

This commit is contained in:
Raj Chaudhuri committed 2024-04-09 19:01:34 +05:30
1 parent c3cc2107c6
commit 78f596fbda
24 files changed
+191 -80

No files matched your search

+8
View File
@@ -97,6 +97,14 @@
"value" "value"
], ],
"value": "" "value": ""
},
{
"description": "Whether to use the version check feature of Weave Net",
"name": "CHECKPOINT_DISABLE",
"settable": [
"value"
],
"value": "1"
} }
], ],
"network": { "network": {
+11
View File
@@ -2,8 +2,19 @@
All changes made to the weave net codebase during the reweave effort will be documented in this file. All changes made to the weave net codebase during the reweave effort will be documented in this file.
## 2.8.6-beta1
### Changed
* Changed the V2 plugin build and clean tools to build (and clean) multiple architecture-specific plugins per version, since Docker Managed Plugins are not multi-architecture capable
* Changed the V2 plugin configuration `prog/net-plugin/config.json` to include `CHECKPOINT_DISABLE` as an option, set to `1` by default to disable latest version checking.
* Changed the `weave` script to include `export CHECKPOINT_DISABLE=`. This will disable latest version checking for the legacy plugin as well.
* Changed the documentation in the `website` directory as appropriate.
## 2.8.5 ## 2.8.5
### Changed
* Changed version in `reweave/Makefile` to 2.8.5 * Changed version in `reweave/Makefile` to 2.8.5
* Modified reweave and main CHANGELOG.md * Modified reweave and main CHANGELOG.md
+1 -1
View File
@@ -1,4 +1,4 @@
IMAGE_VERSION ?= 2.8.5 IMAGE_VERSION ?= 2.8.6-beta1
REGISTRY_USER ?= rajchaudhuri REGISTRY_USER ?= rajchaudhuri
ALPINE_BASEIMAGE ?= alpine:3.19.1 ALPINE_BASEIMAGE ?= alpine:3.19.1
+68 -22
View File
@@ -6,33 +6,79 @@ set -e
: "${IMAGE_VERSION:=}" : "${IMAGE_VERSION:=}"
: "${REGISTRY_USER:=}" : "${REGISTRY_USER:=}"
# This variable is used to flag plugin publishing
: "${PUBLISH:=}"
if [ -z "${IMAGE_VERSION}" ] || [ -z "${REGISTRY_USER}" ] ; then if [ -z "${IMAGE_VERSION}" ] || [ -z "${REGISTRY_USER}" ] ; then
>&2 echo "Please provide valid values for IMAGE_VERSION and REGISTRY_USER." >&2 echo "Please provide valid values for IMAGE_VERSION and REGISTRY_USER."
exit 1 exit 1
fi fi
# To build the plugin for multiple architecture, the
# local Docker engine needs to have the containerd
# snapshotter enabled.
if [ "overlayfs" != "$(docker info -f '{{.Driver}}')" ]; then
echo "To ensure that the plugin can be built for multiple architectures, the"
echo "Docker Engine needs to have the containerd image store feature enabled."
echo "Please see https://docs.docker.com/storage/containerd/ to find out how."
echo "Run this build again after enabling it."
exit 1
fi
# This variable is used to control the architectures for
# which the plugin will be built.
: "${PLATFORMS:=amd64,arm,arm64,ppc64le,s390x}"
# This variable is used to flag plugin publishing
: "${PUBLISH:=}"
WEAVER_IMAGE=${REGISTRY_USER}/weave:${IMAGE_VERSION} WEAVER_IMAGE=${REGISTRY_USER}/weave:${IMAGE_VERSION}
PLUGIN_IMAGE=${REGISTRY_USER}/net-plugin:${IMAGE_VERSION}
PLUGIN_BUILD_IMG="plugin-builder"
PLUGIN_PARENT_DIR="../prog/net-plugin"
PLUGIN_WORK_DIR="${PLUGIN_PARENT_DIR}/rootfs"
docker container rm -f ${PLUGIN_BUILD_IMG} 2>/dev/null # $1 - Architecture to build for
docker container create --name=${PLUGIN_BUILD_IMG} "${WEAVER_IMAGE}" true build_plugin() {
rm -rf ${PLUGIN_WORK_DIR} PLUGIN_ARCH=${1:-amd64}
mkdir ${PLUGIN_WORK_DIR} PLUGIN_IMAGE=${REGISTRY_USER}/net-plugin:${IMAGE_VERSION}-${PLUGIN_ARCH}
docker export ${PLUGIN_BUILD_IMG} | tar -x -C ${PLUGIN_WORK_DIR} PLUGIN_BUILD_IMG="plugin-builder-${PLUGIN_ARCH}"
docker container rm -f ${PLUGIN_BUILD_IMG} PLUGIN_PARENT_DIR="../prog/net-plugin"
cp "${PLUGIN_PARENT_DIR}/launch.sh" "${PLUGIN_WORK_DIR}/home/weave/launch.sh" PLUGIN_WORK_DIR="${PLUGIN_PARENT_DIR}/rootfs"
set +e
docker plugin disable "${PLUGIN_IMAGE}" 2>/dev/null
docker plugin rm "${PLUGIN_IMAGE}" 2>/dev/null
set -e
docker plugin create "${PLUGIN_IMAGE}" "${PLUGIN_PARENT_DIR}"
if [ "${PUBLISH}" = "true" ]; then echo "Building ${PLUGIN_IMAGE}..."
docker plugin push "${PLUGIN_IMAGE}"
fi docker container rm -f "${PLUGIN_BUILD_IMG}" 2>/dev/null
docker container create --platform="${PLUGIN_ARCH}" --name="${PLUGIN_BUILD_IMG}" "${WEAVER_IMAGE}" true
rm -rf ${PLUGIN_WORK_DIR}
mkdir ${PLUGIN_WORK_DIR}
docker export "${PLUGIN_BUILD_IMG}" | tar -x -C ${PLUGIN_WORK_DIR}
docker container rm -f "${PLUGIN_BUILD_IMG}"
cp "${PLUGIN_PARENT_DIR}/launch.sh" "${PLUGIN_WORK_DIR}/home/weave/launch.sh"
set +e
docker plugin disable "${PLUGIN_IMAGE}" 2>/dev/null
docker plugin rm "${PLUGIN_IMAGE}" 2>/dev/null
set -e
docker plugin create "${PLUGIN_IMAGE}" "${PLUGIN_PARENT_DIR}"
if [ "${PUBLISH}" = "true" ]; then
echo "Pushing ${PLUGIN_IMAGE}..."
docker plugin push "${PLUGIN_IMAGE}"
# If this is not a beta release, also create a "latest-release-$ARCH"
# plugin.
case "$IMAGE_VERSION" in
*-beta*) IS_BETA=1 ;;
*) IS_BETA= ;;
esac
if [ -z ${IS_BETA} ]; then
echo "Tagging ${PLUGIN_IMAGE} as latest_release..."
LATEST_IMAGE=${REGISTRY_USER}/net-plugin:latest_release-${PLUGIN_ARCH}
docker plugin create "${LATEST_IMAGE}" "${PLUGIN_PARENT_DIR}"
echo "Pushing ${LATEST_IMAGE}..."
docker plugin push "${LATEST_IMAGE}"
fi
fi
echo "Done."
}
for i in $( echo "$PLATFORMS" | tr ',' ' '); do
build_plugin "$i"
done
+18 -2
View File
@@ -11,6 +11,22 @@ if [ -z "${IMAGE_VERSION}" ] || [ -z "${REGISTRY_USER}" ] ; then
exit 1 exit 1
fi fi
PLUGIN_IMAGE=${REGISTRY_USER}/net-plugin:${IMAGE_VERSION} # This variable is used to control the architectures for
# which the plugin will be built.
: "${PLATFORMS:=amd64,arm,arm64,ppc64le,s390x}"
docker plugin rm "${PLUGIN_IMAGE}" 2>/dev/null # $1 - Architecture to build for
delete_plugin() {
PLUGIN_ARCH=${1:-amd64}
PLUGIN_IMAGE=${REGISTRY_USER}/net-plugin:${IMAGE_VERSION}-${PLUGIN_ARCH}
echo "Deleting plugin ${PLUGIN_IMAGE}..."
set +e
docker plugin rm "${PLUGIN_IMAGE}" 2>/dev/null
set -e
}
for i in $( echo "$PLATFORMS" | tr ',' ' '); do
delete_plugin "$i"
done
rm -rf "../prog/net-plugin/rootfs"
+3
View File
@@ -3,6 +3,9 @@ set -e
[ -n "$WEAVE_DEBUG" ] && set -x [ -n "$WEAVE_DEBUG" ] && set -x
# There is no longer a checkpoint service
export CHECKPOINT_DISABLE=1
# Release Version # Release Version
SCRIPT_VERSION="unreleased" SCRIPT_VERSION="unreleased"
IMAGE_VERSION=latest IMAGE_VERSION=latest
+4 -2
View File
@@ -118,12 +118,14 @@ network does not block ESP traffic (IP protocol 50). For instance
on Google Cloud Platform a firewall rule for allowing ESP traffic has on Google Cloud Platform a firewall rule for allowing ESP traffic has
to be installed. to be installed.
**<a name="own-image"></a>Q: Why do you use your own Docker image `weaveworks/ubuntu`?** ~~**<a name="own-image"></a>Q: Why do you use your own Docker image `weaveworks/ubuntu`?**
The official Ubuntu image does not contain the `ping` and `nc` The official Ubuntu image does not contain the `ping` and `nc`
commands which are used in many of our examples throughout the commands which are used in many of our examples throughout the
documentation. The `weaveworks/ubuntu` image is simply the official documentation. The `weaveworks/ubuntu` image is simply the official
Ubuntu image with those two commands added. Ubuntu image with those two commands added.~~
We now use the official `alpine:latest` image, which already has
these two commands.
**See Also** **See Also**
+4 -2
View File
@@ -15,9 +15,11 @@ Install Weave Net by running the following:
~~If you are on OSX and you are using Docker Machine ensure that a VM is running and configured ~~If you are on OSX and you are using Docker Machine ensure that a VM is running and configured
before downloading Weave Net. To set up a VM see [the Docker Machine before downloading Weave Net. To set up a VM see [the Docker Machine
documentation](https://docs.docker.com/installation/mac/#from-your-shell) or refer to ["Part 1: Launching Weave Net with Docker Machine"](https://web.archive.org/web/20231002233731/https://www.weave.works/guides/part-1-launching-weave-net-with-docker-machine/).~~ documentation](https://docs.docker.com/installation/mac/#from-your-shell) or refer to ["Part 1: Launching Weave Net with Docker Machine"](https://web.archive.org/web/20231002233731/https://www.weave.works/guides/part-1-launching-weave-net-with-docker-machine/).
After your VM is setup with Docker Machine, Weave Net can be launched directly from the OSX host. Weave Net respects the environment variable `DOCKER_HOST`, so that you can run and control a Weave Network locally on a remote host. See [Using The Weave Docker API Proxy]({{ '/tasks/weave-docker-api/using-proxy' | relative_url }}). After your VM is setup with Docker Machine, Weave Net can be launched directly from the OSX host.~~
Weave Net respects the environment variable `DOCKER_HOST`, so that you can run and control a Weave Network locally on a remote host. See [Using The Weave Docker API Proxy]({{ '/tasks/weave-docker-api/using-proxy' | relative_url }}).
With Weave Net downloaded onto your VMs or hosts, you are ready to launch a Weave network and deploy apps onto it. See [Launching Weave Net]({{ '/install/using-weave' | relative_url }}). With Weave Net downloaded onto your VMs or hosts, you are ready to launch a Weave network and deploy apps onto it. See [Launching Weave Net]({{ '/install/using-weave' | relative_url }}).
@@ -8,7 +8,7 @@ search_type: Documentation
The Weave Net legacy plugin actually provides *two* network drivers to Docker - 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 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 named `weave` that can only work with one (like Docker's overlay driver), while
the V2 plugin provides *one* - `weaveworks/net-plugin:latest_release` the V2 plugin provides *one* - `rajchaudhuri/net-plugin:latest_release-<architecture>`
operating only in swarm mode. operating only in swarm mode.
### weavemesh driver ### weavemesh driver
@@ -41,7 +41,7 @@ The plugin accepts the following options via `docker network create ... --opt`:
network created when the plugin is first launched has the multicast network created when the plugin is first launched has the multicast
option turned on, but for any networks you create it defaults to off. option turned on, but for any networks you create it defaults to off.
### weaveworks/net-plugin:latest_release driver ### rajchaudhuri/net-plugin:latest_release-&lt;architecture> driver
* The driver runs within the plugin V2. * The driver runs within the plugin V2.
* Requires Docker to run in [swarm mode](https://docs.docker.com/engine/swarm/swarm-mode/). * Requires Docker to run in [swarm mode](https://docs.docker.com/engine/swarm/swarm-mode/).
+30 -7
View File
@@ -19,7 +19,23 @@ mode and requires Docker version 1.13 or later.
To install the plugin run the following command on _each_ host already 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: participating in a Swarm cluster, i.e. on all master and worker nodes:
$ docker plugin install weaveworks/net-plugin:latest_release $ docker plugin install rajchaudhuri/net-plugin:latest_release-<architecture>
Here, &lt;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:
* amd64
* arm
* arm64
* ppc64le
* s390x
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 Docker will pull the plugin from Docker Store, and it will ask to grant
privileges before installing the plugin. Afterwards, it will start `weaver` privileges before installing the plugin. Afterwards, it will start `weaver`
@@ -29,7 +45,7 @@ process which will try to connect to Swarm masters running Weave Net.
There are several configuration parameters which can be set with: There are several configuration parameters which can be set with:
$ docker plugin set weaveworks/net-plugin:latest_release PARAM=VALUE $ docker plugin set rajchaudhuri/net-plugin:latest_release-$ARCH PARAM=VALUE
The parameters include: The parameters include:
@@ -49,31 +65,38 @@ The parameters include:
Before setting any parameter, the plugin has to be disabled with: Before setting any parameter, the plugin has to be disabled with:
$ docker plugin disable weaveworks/net-plugin:latest_release $ docker plugin disable rajchaudhuri/net-plugin:latest_release-$ARCH
To re-enable the plugin run the following command: To re-enable the plugin run the following command:
$ docker plugin enable weaveworks/net-plugin:latest_release $ docker plugin enable rajchaudhuri/net-plugin:latest_release-$ARCH
### <a name="usage"></a>Running Services or Containers Using the Plugin ### <a name="usage"></a>Running Services or Containers Using the Plugin
After you have launched the plugin, you can create a network for Docker Swarm 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: services by running the following command on any Docker Swarm master node:
$ docker network create --driver=weaveworks/net-plugin:latest_release mynetwork $ docker network create --driver=rajchaudhuri/net-plugin:latest_release-$ARCH mynetwork
Or you can create a network for any Docker container with: Or you can create a network for any Docker container with:
$ docker network create --driver=weaveworks/net-plugin:latest_release --attachable mynetwork $ docker network create --driver=rajchaudhuri/net-plugin:latest_release-$ARCH --attachable mynetwork
To start a service attached to the network run, for example: To start a service attached to the network run, for example:
$ docker service create --network=mynetwork ... $ docker service create --network=mynetwork ...
Or to start a container: To ensure that name resolution (service discovery) works as expected, do one of the following:
* Include `--endpoint-mode=dnsrr` while creating a service. This will correctly resolve the service name to the load-balanced IP address of one of the task containers.
* OR, include `--hostname=SOMENAME` while creating a servce. This will also resolve `SOMENAME` to the load-balanced IP address of one of the task containers.
To start a container:
$ docker run --network=mynetwork ... $ 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** **See Also**
* [Integrating Docker via the Network Plugin (Legacy)]({{ '/install/plugin/plugin' | relative_url }}) * [Integrating Docker via the Network Plugin (Legacy)]({{ '/install/plugin/plugin' | relative_url }})
+5 -5
View File
@@ -20,7 +20,7 @@ See [Launching Weave Net]({{ '/install/using-weave#peer-connections' | relative_
After you've launched Weave Net and peered your hosts, you can start containers using the following, for example: After you've launched Weave Net and peered your hosts, you can start containers using the following, for example:
$ docker run --net=weave -ti weaveworks/ubuntu $ docker run --net=weave -ti alpine:latest
on any of the hosts, and they can all communicate with each other on any of the hosts, and they can all communicate with each other
using any protocol, even multicast. using any protocol, even multicast.
@@ -29,8 +29,8 @@ In order to use Weave Net's [Service Discovery]({{ '/tasks/weavedns/weavedns' |
must pass the additional arguments `--dns` and `-dns-search`, for must pass the additional arguments `--dns` and `-dns-search`, for
which a helper is provided in the Weave script: which a helper is provided in the Weave script:
$ docker run --net=weave -h foo.weave.local $(weave dns-args) -tdi weaveworks/ubuntu $ docker run --net=weave -h foo.weave.local $(weave dns-args) -tdi alpine:latest
$ docker run --net=weave -h bar.weave.local $(weave dns-args) -ti weaveworks/ubuntu $ docker run --net=weave -h bar.weave.local $(weave dns-args) -ti alpine:latest
# ping foo # ping foo
@@ -43,11 +43,11 @@ Just launch the Weave Net router onto each host and make a peer connection with
then run your containers using the Docker command-line: then run your containers using the Docker command-line:
host1$ docker run --net=weave -ti weaveworks/ubuntu host1$ docker run --net=weave -ti alpine:latest
root@1458e848cd90:/# hostname -i root@1458e848cd90:/# hostname -i
10.32.0.2 10.32.0.2
host2$ docker run --net=weave -ti weaveworks/ubuntu host2$ docker run --net=weave -ti alpine:latest
root@8cc4b5dc5722:/# ping 10.32.0.2 root@8cc4b5dc5722:/# ping 10.32.0.2
PING 10.32.0.2 (10.32.0.2) 56(84) bytes of data. PING 10.32.0.2 (10.32.0.2) 56(84) bytes of data.
+5 -5
View File
@@ -21,13 +21,13 @@ On `$HOST1` run:
host1$ weave launch host1$ weave launch
host1$ eval $(weave env) host1$ eval $(weave env)
host1$ docker run --name a1 -ti weaveworks/ubuntu host1$ docker run --name a1 -ti alpine:latest
Where, Where,
* The first line runs Weave Net. * The first line runs Weave Net.
* The second line configures the Weave Net environment, so that containers launched via the Docker command line are automatically attached to the Weave network, and, * The second line configures the Docker environment to use the [Weave Net Docker API Proxy]({{ '/tasks/weave-docker-api/weave-docker-api' | relative_url }}), so that containers launched via the Docker command line are automatically attached to the Weave network, and,
* The third line runs the [application container]({{ '/faq#own-image' | relative_url }}) using [a Docker command](https://docs.docker.com/reference/cli/docker/container/run/). * The third line runs an application container using [a Docker command](https://docs.docker.com/reference/cli/docker/container/run/).
> **Note** If the first command results in an error like > **Note** If the first command results in an error like
> ``` > ```
@@ -44,7 +44,7 @@ Where,
> host1$ sudo -s > host1$ sudo -s
> host1# weave launch > host1# weave launch
> host1# eval $(weave env) > host1# eval $(weave env)
> host1# docker run --name a1 -ti weaveworks/ubuntu > host1# docker run --name a1 -ti alpine:latest
> ``` > ```
> Do *not* prefix individual commands with `sudo`, since some commands > Do *not* prefix individual commands with `sudo`, since some commands
> modify environment entries and hence they all need to be executed from > modify environment entries and hence they all need to be executed from
@@ -63,7 +63,7 @@ To launch Weave Net on an additional host and create a peer connection, run the
host2$ weave launch $HOST1 host2$ weave launch $HOST1
host2$ eval $(weave env) host2$ eval $(weave env)
host2$ docker run --name a2 -ti weaveworks/ubuntu host2$ docker run --name a2 -ti alpine:latest
As noted above, the same steps are repeated for `$HOST2`. The only difference, besides the application container’s name, is that `$HOST2` is told to peer with Weave Net on `$HOST1` during launch. As noted above, the same steps are repeated for `$HOST2`. The only difference, besides the application container’s name, is that `$HOST2` is told to peer with Weave Net on `$HOST1` during launch.
+4 -4
View File
@@ -79,7 +79,7 @@ See [Integrating Docker via the API Proxy]({{ '/tasks/weave-docker-api/weave-doc
Weave Net can also be used as a [Docker plugin](https://docs.docker.com/engine/extend/plugins_network/). A Docker network Weave Net can also be used as a [Docker plugin](https://docs.docker.com/engine/extend/plugins_network/). A Docker network
named `weave` is created by `weave launch`, which is used as follows: named `weave` is created by `weave launch`, which is used as follows:
$ docker run --net=weave -ti weaveworks/ubuntu $ docker run --net=weave -ti alpine:latest
Using the Weave plugin enables you to take advantage of [Docker's network functionality](https://docs.docker.com/engine/extend/plugins_network/). Using the Weave plugin enables you to take advantage of [Docker's network functionality](https://docs.docker.com/engine/extend/plugins_network/).
@@ -108,11 +108,11 @@ For a discussion on how Weave Net uses IPAM, see [Automatic IP Address Managemen
### <a name="naming-and-discovery"></a>Naming and Discovery ### <a name="naming-and-discovery"></a>Naming and Discovery
Named containers are automatically registered in [weaveDNS]({{ '/tasks/weavedns/weavedns' | relative_url }}), Containers with a hostname are automatically registered in [weaveDNS]({{ '/tasks/weavedns/weavedns' | relative_url }}),
and are discoverable by using standard, simple name lookups: and are discoverable by using standard, simple name lookups:
host1$ docker run -dti --name=service weaveworks/ubuntu host1$ docker run -dti --name=service --hostname=service.weave.local alpine:latest
host1$ docker run -ti weaveworks/ubuntu host1$ docker run -ti alpine:latest
root@7b21498fb103:/# ping service root@7b21498fb103:/# ping service
WeaveDNS also supports [load balancing]({{ '/tasks/weavedns/load-balance-fault-weavedns' | relative_url }}), [fault resilience]({{ '/tasks/weavedns/load-balance-fault-weavedns' | relative_url }}) and [hot swapping]( {{ '/tasks/weavedns/managing-entries-weavedns' | relative_url }}). WeaveDNS also supports [load balancing]({{ '/tasks/weavedns/load-balance-fault-weavedns' | relative_url }}), [fault resilience]({{ '/tasks/weavedns/load-balance-fault-weavedns' | relative_url }}) and [hot swapping]( {{ '/tasks/weavedns/managing-entries-weavedns' | relative_url }}).
+2 -2
View File
@@ -16,13 +16,13 @@ allocation of an address from a particular subnet, set the
`WEAVE_CIDR` environment variable to `net:<subnet>` when creating the `WEAVE_CIDR` environment variable to `net:<subnet>` when creating the
container, for example: container, for example:
host1$ docker run -e WEAVE_CIDR=net:10.2.7.0/24 -ti weaveworks/ubuntu host1$ docker run -e WEAVE_CIDR=net:10.2.7.0/24 -ti alpine:latest
You can ask for multiple addresses in different subnets and add in You can ask for multiple addresses in different subnets and add in
manually-assigned addresses (outside the automatic allocation range), manually-assigned addresses (outside the automatic allocation range),
for instance: for instance:
host1$ docker run -e WEAVE_CIDR="net:10.2.7.0/24 net:10.2.8.0/24 ip:10.3.9.1/24" -ti weaveworks/ubuntu host1$ docker run -e WEAVE_CIDR="net:10.2.7.0/24 net:10.2.8.0/24 ip:10.3.9.1/24" -ti alpine:latest
>**Note:** The ".0" and ".-1" addresses in a subnet are not used, as required by >**Note:** The ".0" and ".-1" addresses in a subnet are not used, as required by
[RFC 1122](https://tools.ietf.org/html/rfc1122#page-29)). [RFC 1122](https://tools.ietf.org/html/rfc1122#page-29)).
+2 -2
View File
@@ -37,12 +37,12 @@ For example, we can launch a couple of containers on `$HOST1` and
On `$HOST1`: On `$HOST1`:
host1$ docker run -e WEAVE_CIDR=10.2.1.1/24 -ti weaveworks/ubuntu host1$ docker run -e WEAVE_CIDR=10.2.1.1/24 -ti alpine:latest
root@7ca0f6ecf59f:/# root@7ca0f6ecf59f:/#
And `$HOST2`: And `$HOST2`:
host2$ docker run -e WEAVE_CIDR=10.2.1.2/24 -ti weaveworks/ubuntu host2$ docker run -e WEAVE_CIDR=10.2.1.2/24 -ti alpine:latest
root@04c4831fafd3:/# root@04c4831fafd3:/#
Then test that the container on `$HOST2` can be reached from the container on `$HOST1`: Then test that the container on `$HOST2` can be reached from the container on `$HOST1`:
@@ -27,13 +27,13 @@ specified.
Next, launch the two netcat containers onto the default subnet: Next, launch the two netcat containers onto the default subnet:
host1$ docker run --name a1 -ti weaveworks/ubuntu host1$ docker run --name a1 -ti alpine:latest
host2$ docker run --name a2 -ti weaveworks/ubuntu host2$ docker run --name a2 -ti alpine:latest
And then to test the isolation, launch a few more containers onto a different subnet: And then to test the isolation, launch a few more containers onto a different subnet:
host1$ docker run -e WEAVE_CIDR=net:10.2.2.0/24 --name b1 -ti weaveworks/ubuntu host1$ docker run -e WEAVE_CIDR=net:10.2.2.0/24 --name b1 -ti alpine:latest
host2$ docker run -e WEAVE_CIDR=net:10.2.2.0/24 --name b2 -ti weaveworks/ubuntu host2$ docker run -e WEAVE_CIDR=net:10.2.2.0/24 --name b2 -ti alpine:latest
Ping each container to confirm that they can talk to each other, but not to the containers of our first subnet: Ping each container to confirm that they can talk to each other, but not to the containers of our first subnet:
@@ -55,7 +55,7 @@ Ping each container to confirm that they can talk to each other, but not to the
If required, a container can also be attached to multiple subnets when it is started using: If required, a container can also be attached to multiple subnets when it is started using:
host1$ docker run -e WEAVE_CIDR="net:default net:10.2.2.0/24" -ti weaveworks/ubuntu host1$ docker run -e WEAVE_CIDR="net:default net:10.2.2.0/24" -ti alpine:latest
`net:default` is used to request the allocation of an address from the default subnet in addition to one from an explicitly specified range. `net:default` is used to request the allocation of an address from the default subnet in addition to one from an explicitly specified range.
@@ -9,13 +9,13 @@ When containers may not know the network to which they will be attached, Weave N
To illustrate... To illustrate...
host1$ C=$(docker run -e WEAVE_CIDR=none -dti weaveworks/ubuntu) host1$ C=$(docker run -e WEAVE_CIDR=none -dti alpine:latest)
host1$ weave attach $C host1$ weave attach $C
10.2.1.3 10.2.1.3
where, where,
* `C=$(docker run -e WEAVE_CIDR=none -dti weaveworks/ubuntu)` starts a container and assigns its ID to a variable * `C=$(docker run -e WEAVE_CIDR=none -dti alpine:latest)` starts a container and assigns its ID to a variable
* `weave attach` – the Weave Net command to attach to the specified container * `weave attach` – the Weave Net command to attach to the specified container
* `10.2.1.3` - the allocated IP address output by `weave attach`, in this case in the default subnet * `10.2.1.3` - the allocated IP address output by `weave attach`, in this case in the default subnet
@@ -25,7 +25,7 @@ If `weave attach` sees the container has a hostname with a
domain-name, it will add those into WeaveDNS (unless you turn this off domain-name, it will add those into WeaveDNS (unless you turn this off
with the `--without-dns` argument). with the `--without-dns` argument).
host1$ docker run -dti --name=c1 --hostname=c1.weave.local weaveworks/ubuntu host1$ docker run -dti --name=c1 --hostname=c1.weave.local alpine:latest
host1$ weave attach c1 host1$ weave attach c1
10.32.0.1 10.32.0.1
host1$ weave dns-lookup c1 host1$ weave dns-lookup c1
@@ -38,7 +38,7 @@ For example, you can launch the proxy using all three flags, as follows:
After launching the Weave Net proxy with these flags, running a container named `aws-12798186823-foo` without labels results in weaveDNS registering the hostname `my-app-foo` and not `aws-12798186823-foo`. After launching the Weave Net proxy with these flags, running a container named `aws-12798186823-foo` without labels results in weaveDNS registering the hostname `my-app-foo` and not `aws-12798186823-foo`.
host1$ docker run -ti --name=aws-12798186823-foo weaveworks/ubuntu ping my-app-foo host1$ docker run -ti --name=aws-12798186823-foo alpine:latest ping my-app-foo
PING my-app-foo.weave.local (10.32.0.2) 56(84) bytes of data. PING my-app-foo.weave.local (10.32.0.2) 56(84) bytes of data.
64 bytes from my-app-foo.weave.local (10.32.0.2): icmp_seq=1 ttl=64 time=0.027 ms 64 bytes from my-app-foo.weave.local (10.32.0.2): icmp_seq=1 ttl=64 time=0.027 ms
64 bytes from my-app-foo.weave.local (10.32.0.2): icmp_seq=2 ttl=64 time=0.067 ms 64 bytes from my-app-foo.weave.local (10.32.0.2): icmp_seq=2 ttl=64 time=0.067 ms
@@ -46,7 +46,7 @@ After launching the Weave Net proxy with these flags, running a container named
Also, running a container named `foo` with the label Also, running a container named `foo` with the label
`hostname-label=aws-12798186823-foo` leads to the same hostname registration. `hostname-label=aws-12798186823-foo` leads to the same hostname registration.
host1$ docker run -ti --name=foo --label=hostname-label=aws-12798186823-foo weaveworks/ubuntu ping my-app-foo host1$ docker run -ti --name=foo --label=hostname-label=aws-12798186823-foo alpine:latest ping my-app-foo
PING my-app-foo.weave.local (10.32.0.2) 56(84) bytes of data. PING my-app-foo.weave.local (10.32.0.2) 56(84) bytes of data.
64 bytes from my-app-foo.weave.local (10.32.0.2): icmp_seq=1 ttl=64 time=0.031 ms 64 bytes from my-app-foo.weave.local (10.32.0.2): icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from my-app-foo.weave.local (10.32.0.2): icmp_seq=2 ttl=64 time=0.042 ms 64 bytes from my-app-foo.weave.local (10.32.0.2): icmp_seq=2 ttl=64 time=0.042 ms
+4 -4
View File
@@ -9,16 +9,16 @@ If [automatic IP address allocation]({{ '/tasks/ipam/ipam' | relative_url }}) is
then containers started via the proxy are automatically assigned an IP address, *without having to specify any then containers started via the proxy are automatically assigned an IP address, *without having to specify any
special environment variables or any other options*. special environment variables or any other options*.
host1$ docker run -ti weaveworks/ubuntu host1$ docker run -ti alpine:latest
To use a specific subnet, you can pass a `WEAVE_CIDR` to the container, for example: To use a specific subnet, you can pass a `WEAVE_CIDR` to the container, for example:
host1$ docker run -ti -e WEAVE_CIDR=net:10.32.2.0/24 weaveworks/ubuntu host1$ docker run -ti -e WEAVE_CIDR=net:10.32.2.0/24 alpine:latest
To start a container without connecting it to the Weave network, pass To start a container without connecting it to the Weave network, pass
`WEAVE_CIDR=none`, for example: `WEAVE_CIDR=none`, for example:
host1$ docker run -ti -e WEAVE_CIDR=none weaveworks/ubuntu host1$ docker run -ti -e WEAVE_CIDR=none alpine:latest
### Disabling Automatic IP Address Allocation ### Disabling Automatic IP Address Allocation
@@ -34,7 +34,7 @@ Containers started with a `WEAVE_CIDR` environment variable are handled as befor
To automatically assign an address in this mode, start the To automatically assign an address in this mode, start the
container with a blank `WEAVE_CIDR`, for example: container with a blank `WEAVE_CIDR`, for example:
host1$ docker run -ti -e WEAVE_CIDR="" weaveworks/ubuntu host1$ docker run -ti -e WEAVE_CIDR="" alpine:latest
**See Also** **See Also**
@@ -17,17 +17,17 @@ Weave network.
To create and start a container via the Weave Net proxy run: To create and start a container via the Weave Net proxy run:
host1$ docker run -ti weaveworks/ubuntu host1$ docker run -ti alpine:latest
or, equivalently run: or, equivalently run:
host1$ docker create -ti --name=foo weaveworks/ubuntu host1$ docker create -ti --name=foo alpine:latest
host1$ docker start foo host1$ docker start foo
Specific IP addresses and networks can be supplied in the `WEAVE_CIDR` Specific IP addresses and networks can be supplied in the `WEAVE_CIDR`
environment variable, for example: environment variable, for example:
host1$ docker run -e WEAVE_CIDR=10.2.1.1/24 -ti weaveworks/ubuntu host1$ docker run -e WEAVE_CIDR=10.2.1.1/24 -ti alpine:latest
Multiple IP addresses and networks can be supplied in the `WEAVE_CIDR` Multiple IP addresses and networks can be supplied in the `WEAVE_CIDR`
variable by space-separating them, as in variable by space-separating them, as in
@@ -16,7 +16,7 @@ some ping tests.
``` ```
host2$ weave launch $HOST1 host2$ weave launch $HOST1
host2$ eval $(weave env) host2$ eval $(weave env)
host2$ docker run -dti --name=pingme weaveworks/ubuntu host2$ docker run -dti --name=pingme alpine:latest
root@ubuntu:/# ping -nq -c 1 pingme root@ubuntu:/# ping -nq -c 1 pingme
PING pingme.weave.local (10.32.0.2) 56(84) bytes of data. PING pingme.weave.local (10.32.0.2) 56(84) bytes of data.
@@ -26,7 +26,7 @@ behaviour.
docker run -ti \ docker run -ti \
--dns-search=zone1.weave.local --dns-search=zone2.weave.local \ --dns-search=zone1.weave.local --dns-search=zone2.weave.local \
--dns-search=corp1.com --dns-search=corp2.com \ --dns-search=corp1.com --dns-search=corp2.com \
--dns-search=weave.local weaveworks/ubuntu --dns-search=weave.local alpine:latest
``` ```
## <a name="local-domain"></a>Using a different local domain ## <a name="local-domain"></a>Using a different local domain
@@ -17,7 +17,7 @@ If you want to give the container a name in DNS *other* than its
hostname, you can register it using the `dns-add` command. For example: hostname, you can register it using the `dns-add` command. For example:
``` ```
$ C=$(docker run -ti weaveworks/ubuntu) $ C=$(docker run -ti alpine:latest)
$ weave dns-add $C -h pingme2.weave.local $ weave dns-add $C -h pingme2.weave.local
``` ```
+4 -4
View File
@@ -28,8 +28,8 @@ resolution, and will register themselves if they either have a
hostname in the weaveDNS domain (`weave.local` by default) or are given an explicit container name: hostname in the weaveDNS domain (`weave.local` by default) or are given an explicit container name:
``` ```
host1$ docker run -dti --name=pingme weaveworks/ubuntu host1$ docker run -dti --name=pingme alpine:latest
host1$ docker run -ti --hostname=ubuntu.weave.local weaveworks/ubuntu host1$ docker run -ti --hostname=ubuntu.weave.local alpine:latest
root@ubuntu:/# ping pingme root@ubuntu:/# ping pingme
... ...
``` ```
@@ -37,8 +37,8 @@ root@ubuntu:/# ping pingme
Moreover, weaveDNS always register all network aliases (--network-alias option to docker run). Moreover, weaveDNS always register all network aliases (--network-alias option to docker run).
``` ```
host1$ docker run --network weave --network-alias pingme --network-alias pingme2 -dti weaveworks/ubuntu host1$ docker run --network weave --network-alias pingme --network-alias pingme2 -dti alpine:latest
host1$ docker run --network weave --hostname=ubuntu.weave.local -ti weaveworks/ubuntu host1$ docker run --network weave --hostname=ubuntu.weave.local -ti alpine:latest
root@ubuntu:/# ping pingme root@ubuntu:/# ping pingme
... ...
root@ubuntu:/# ping pingme2 root@ubuntu:/# ping pingme2