From 78f596fbda341cd31c98cd46c7d9e1509cc2d8ff Mon Sep 17 00:00:00 2001 From: Raj Chaudhuri Date: Tue, 9 Apr 2024 19:01:34 +0530 Subject: [PATCH] Provisioned for Docker V2 plugin on multiple architectures, blocked CHECKPOINT, updated docs --- prog/net-plugin/config.json | 8 ++ reweave/CHANGELOG.md | 11 +++ reweave/Makefile | 2 +- reweave/tools/build-plugin.sh | 90 ++++++++++++++----- reweave/tools/clean-plugin.sh | 20 ++++- weave | 3 + website/faq.md | 6 +- website/install/installing-weave.md | 6 +- website/install/plugin/plugin-how-it-works.md | 4 +- website/install/plugin/plugin-v2.md | 37 ++++++-- website/install/plugin/plugin.md | 10 +-- website/install/using-weave.md | 10 +-- website/overview/features.md | 8 +- website/tasks/ipam/allocation-multi-ipam.md | 4 +- website/tasks/ipam/manual-ip-address.md | 4 +- website/tasks/manage/application-isolation.md | 10 +-- .../manage/dynamically-attach-containers.md | 6 +- .../automatic-discovery-proxy.md | 4 +- website/tasks/weave-docker-api/ipam-proxy.md | 8 +- website/tasks/weave-docker-api/using-proxy.md | 6 +- .../weavedns/load-balance-fault-weavedns.md | 2 +- .../weavedns/managing-domains-weavedns.md | 2 +- .../weavedns/managing-entries-weavedns.md | 2 +- website/tasks/weavedns/weavedns.md | 8 +- 24 files changed, 191 insertions(+), 80 deletions(-) diff --git a/prog/net-plugin/config.json b/prog/net-plugin/config.json index 740a285d..cd9e0a60 100644 --- a/prog/net-plugin/config.json +++ b/prog/net-plugin/config.json @@ -97,6 +97,14 @@ "value" ], "value": "" + }, + { + "description": "Whether to use the version check feature of Weave Net", + "name": "CHECKPOINT_DISABLE", + "settable": [ + "value" + ], + "value": "1" } ], "network": { diff --git a/reweave/CHANGELOG.md b/reweave/CHANGELOG.md index bf86336e..78ac17da 100644 --- a/reweave/CHANGELOG.md +++ b/reweave/CHANGELOG.md @@ -2,8 +2,19 @@ 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 +### Changed + * Changed version in `reweave/Makefile` to 2.8.5 * Modified reweave and main CHANGELOG.md diff --git a/reweave/Makefile b/reweave/Makefile index b29ce866..20c1453f 100644 --- a/reweave/Makefile +++ b/reweave/Makefile @@ -1,4 +1,4 @@ -IMAGE_VERSION ?= 2.8.5 +IMAGE_VERSION ?= 2.8.6-beta1 REGISTRY_USER ?= rajchaudhuri ALPINE_BASEIMAGE ?= alpine:3.19.1 diff --git a/reweave/tools/build-plugin.sh b/reweave/tools/build-plugin.sh index 929a29aa..67e451fe 100755 --- a/reweave/tools/build-plugin.sh +++ b/reweave/tools/build-plugin.sh @@ -6,33 +6,79 @@ set -e : "${IMAGE_VERSION:=}" : "${REGISTRY_USER:=}" -# This variable is used to flag plugin publishing -: "${PUBLISH:=}" - if [ -z "${IMAGE_VERSION}" ] || [ -z "${REGISTRY_USER}" ] ; then >&2 echo "Please provide valid values for IMAGE_VERSION and REGISTRY_USER." exit 1 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} -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 -docker container create --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}" +# $1 - Architecture to build for +build_plugin() { + PLUGIN_ARCH=${1:-amd64} + PLUGIN_IMAGE=${REGISTRY_USER}/net-plugin:${IMAGE_VERSION}-${PLUGIN_ARCH} + PLUGIN_BUILD_IMG="plugin-builder-${PLUGIN_ARCH}" + PLUGIN_PARENT_DIR="../prog/net-plugin" + PLUGIN_WORK_DIR="${PLUGIN_PARENT_DIR}/rootfs" -if [ "${PUBLISH}" = "true" ]; then - docker plugin push "${PLUGIN_IMAGE}" -fi \ No newline at end of file + echo "Building ${PLUGIN_IMAGE}..." + + 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 diff --git a/reweave/tools/clean-plugin.sh b/reweave/tools/clean-plugin.sh index 68734628..432b1dda 100755 --- a/reweave/tools/clean-plugin.sh +++ b/reweave/tools/clean-plugin.sh @@ -11,6 +11,22 @@ if [ -z "${IMAGE_VERSION}" ] || [ -z "${REGISTRY_USER}" ] ; then exit 1 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 \ No newline at end of file +# $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" \ No newline at end of file diff --git a/weave b/weave index 8ffffb58..a53ec67d 100755 --- a/weave +++ b/weave @@ -3,6 +3,9 @@ set -e [ -n "$WEAVE_DEBUG" ] && set -x +# There is no longer a checkpoint service +export CHECKPOINT_DISABLE=1 + # Release Version SCRIPT_VERSION="unreleased" IMAGE_VERSION=latest diff --git a/website/faq.md b/website/faq.md index 8e2cbe05..4a09c1b1 100644 --- a/website/faq.md +++ b/website/faq.md @@ -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 to be installed. -**Q: Why do you use your own Docker image `weaveworks/ubuntu`?** +~~**Q: Why do you use your own Docker image `weaveworks/ubuntu`?** The official Ubuntu image does not contain the `ping` and `nc` commands which are used in many of our examples throughout the 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** diff --git a/website/install/installing-weave.md b/website/install/installing-weave.md index 482b61ed..e9bfa766 100644 --- a/website/install/installing-weave.md +++ b/website/install/installing-weave.md @@ -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 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 }}). diff --git a/website/install/plugin/plugin-how-it-works.md b/website/install/plugin/plugin-how-it-works.md index 2f8678f7..a81f3f9a 100644 --- a/website/install/plugin/plugin-how-it-works.md +++ b/website/install/plugin/plugin-how-it-works.md @@ -8,7 +8,7 @@ search_type: Documentation 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` +the V2 plugin provides *one* - `rajchaudhuri/net-plugin:latest_release-` operating only in swarm mode. ### 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 option turned on, but for any networks you create it defaults to off. -### weaveworks/net-plugin:latest_release driver +### rajchaudhuri/net-plugin:latest_release-<architecture> driver * The driver runs within the plugin V2. * Requires Docker to run in [swarm mode](https://docs.docker.com/engine/swarm/swarm-mode/). diff --git a/website/install/plugin/plugin-v2.md b/website/install/plugin/plugin-v2.md index bf3a0e03..8b716672 100644 --- a/website/install/plugin/plugin-v2.md +++ b/website/install/plugin/plugin-v2.md @@ -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 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- + +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: + +* 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 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: - $ docker plugin set weaveworks/net-plugin:latest_release PARAM=VALUE + $ docker plugin set rajchaudhuri/net-plugin:latest_release-$ARCH PARAM=VALUE The parameters include: @@ -49,31 +65,38 @@ The parameters include: 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: - $ docker plugin enable weaveworks/net-plugin:latest_release + $ 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=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: - $ 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: $ 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 ... +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** * [Integrating Docker via the Network Plugin (Legacy)]({{ '/install/plugin/plugin' | relative_url }}) diff --git a/website/install/plugin/plugin.md b/website/install/plugin/plugin.md index 3e63e1db..39472f54 100644 --- a/website/install/plugin/plugin.md +++ b/website/install/plugin/plugin.md @@ -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: - $ 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 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 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 bar.weave.local $(weave dns-args) -ti 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 alpine:latest # 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: - host1$ docker run --net=weave -ti weaveworks/ubuntu + host1$ docker run --net=weave -ti alpine:latest root@1458e848cd90:/# hostname -i 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 PING 10.32.0.2 (10.32.0.2) 56(84) bytes of data. diff --git a/website/install/using-weave.md b/website/install/using-weave.md index 3ba0db94..a6640f8b 100644 --- a/website/install/using-weave.md +++ b/website/install/using-weave.md @@ -21,13 +21,13 @@ On `$HOST1` run: host1$ weave launch host1$ eval $(weave env) - host1$ docker run --name a1 -ti weaveworks/ubuntu + host1$ docker run --name a1 -ti alpine:latest Where, * 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 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 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 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 > ``` @@ -44,7 +44,7 @@ Where, > host1$ sudo -s > host1# weave launch > 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 > 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$ 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. diff --git a/website/overview/features.md b/website/overview/features.md index d19909e2..1075853a 100644 --- a/website/overview/features.md +++ b/website/overview/features.md @@ -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 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/). @@ -108,11 +108,11 @@ For a discussion on how Weave Net uses IPAM, see [Automatic IP Address Managemen ### 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: - host1$ docker run -dti --name=service weaveworks/ubuntu - host1$ docker run -ti weaveworks/ubuntu + host1$ docker run -dti --name=service --hostname=service.weave.local alpine:latest + host1$ docker run -ti alpine:latest 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 }}). diff --git a/website/tasks/ipam/allocation-multi-ipam.md b/website/tasks/ipam/allocation-multi-ipam.md index 4b3c40e9..280aee96 100644 --- a/website/tasks/ipam/allocation-multi-ipam.md +++ b/website/tasks/ipam/allocation-multi-ipam.md @@ -16,13 +16,13 @@ allocation of an address from a particular subnet, set the `WEAVE_CIDR` environment variable to `net:` when creating the 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 manually-assigned addresses (outside the automatic allocation range), 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 [RFC 1122](https://tools.ietf.org/html/rfc1122#page-29)). diff --git a/website/tasks/ipam/manual-ip-address.md b/website/tasks/ipam/manual-ip-address.md index 4ed1ed2b..823de745 100644 --- a/website/tasks/ipam/manual-ip-address.md +++ b/website/tasks/ipam/manual-ip-address.md @@ -37,12 +37,12 @@ For example, we can launch a couple of containers on `$HOST1` and 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:/# 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:/# Then test that the container on `$HOST2` can be reached from the container on `$HOST1`: diff --git a/website/tasks/manage/application-isolation.md b/website/tasks/manage/application-isolation.md index cd535897..868a2aa1 100644 --- a/website/tasks/manage/application-isolation.md +++ b/website/tasks/manage/application-isolation.md @@ -27,13 +27,13 @@ specified. Next, launch the two netcat containers onto the default subnet: - host1$ docker run --name a1 -ti weaveworks/ubuntu - host2$ docker run --name a2 -ti weaveworks/ubuntu + host1$ docker run --name a1 -ti alpine:latest + host2$ docker run --name a2 -ti alpine:latest 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 - host2$ docker run -e WEAVE_CIDR=net:10.2.2.0/24 --name b2 -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 alpine:latest 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: - 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. diff --git a/website/tasks/manage/dynamically-attach-containers.md b/website/tasks/manage/dynamically-attach-containers.md index c194e663..c210bb72 100644 --- a/website/tasks/manage/dynamically-attach-containers.md +++ b/website/tasks/manage/dynamically-attach-containers.md @@ -9,13 +9,13 @@ When containers may not know the network to which they will be attached, Weave N 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 10.2.1.3 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 * `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 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 10.32.0.1 host1$ weave dns-lookup c1 diff --git a/website/tasks/weave-docker-api/automatic-discovery-proxy.md b/website/tasks/weave-docker-api/automatic-discovery-proxy.md index b6709960..98f30279 100644 --- a/website/tasks/weave-docker-api/automatic-discovery-proxy.md +++ b/website/tasks/weave-docker-api/automatic-discovery-proxy.md @@ -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`. - 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. 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 @@ -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 `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. 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 diff --git a/website/tasks/weave-docker-api/ipam-proxy.md b/website/tasks/weave-docker-api/ipam-proxy.md index c157fc59..5fbc5e7c 100644 --- a/website/tasks/weave-docker-api/ipam-proxy.md +++ b/website/tasks/weave-docker-api/ipam-proxy.md @@ -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 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: - 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 `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 @@ -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 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** diff --git a/website/tasks/weave-docker-api/using-proxy.md b/website/tasks/weave-docker-api/using-proxy.md index 0e0f83ee..fc96ebf5 100644 --- a/website/tasks/weave-docker-api/using-proxy.md +++ b/website/tasks/weave-docker-api/using-proxy.md @@ -17,17 +17,17 @@ Weave network. 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: - host1$ docker create -ti --name=foo weaveworks/ubuntu + host1$ docker create -ti --name=foo alpine:latest host1$ docker start foo Specific IP addresses and networks can be supplied in the `WEAVE_CIDR` 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` variable by space-separating them, as in diff --git a/website/tasks/weavedns/load-balance-fault-weavedns.md b/website/tasks/weavedns/load-balance-fault-weavedns.md index ebf02cbc..97b39846 100644 --- a/website/tasks/weavedns/load-balance-fault-weavedns.md +++ b/website/tasks/weavedns/load-balance-fault-weavedns.md @@ -16,7 +16,7 @@ some ping tests. ``` host2$ weave launch $HOST1 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 PING pingme.weave.local (10.32.0.2) 56(84) bytes of data. diff --git a/website/tasks/weavedns/managing-domains-weavedns.md b/website/tasks/weavedns/managing-domains-weavedns.md index 1673f19c..ad36183a 100644 --- a/website/tasks/weavedns/managing-domains-weavedns.md +++ b/website/tasks/weavedns/managing-domains-weavedns.md @@ -26,7 +26,7 @@ behaviour. docker run -ti \ --dns-search=zone1.weave.local --dns-search=zone2.weave.local \ --dns-search=corp1.com --dns-search=corp2.com \ - --dns-search=weave.local weaveworks/ubuntu + --dns-search=weave.local alpine:latest ``` ## Using a different local domain diff --git a/website/tasks/weavedns/managing-entries-weavedns.md b/website/tasks/weavedns/managing-entries-weavedns.md index 9b3f8e50..1b5f6f67 100644 --- a/website/tasks/weavedns/managing-entries-weavedns.md +++ b/website/tasks/weavedns/managing-entries-weavedns.md @@ -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: ``` -$ C=$(docker run -ti weaveworks/ubuntu) +$ C=$(docker run -ti alpine:latest) $ weave dns-add $C -h pingme2.weave.local ``` diff --git a/website/tasks/weavedns/weavedns.md b/website/tasks/weavedns/weavedns.md index 30a86240..2c016b52 100644 --- a/website/tasks/weavedns/weavedns.md +++ b/website/tasks/weavedns/weavedns.md @@ -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: ``` -host1$ docker run -dti --name=pingme weaveworks/ubuntu -host1$ docker run -ti --hostname=ubuntu.weave.local weaveworks/ubuntu +host1$ docker run -dti --name=pingme alpine:latest +host1$ docker run -ti --hostname=ubuntu.weave.local alpine:latest 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). ``` -host1$ docker run --network weave --network-alias pingme --network-alias pingme2 -dti weaveworks/ubuntu -host1$ docker run --network weave --hostname=ubuntu.weave.local -ti 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 alpine:latest root@ubuntu:/# ping pingme ... root@ubuntu:/# ping pingme2