Move 'using weave' netcat example up a level

This commit is contained in:
Bryan Boreham committed 2016-04-19 13:45:21 +01:00
1 parent 88c6c17767
commit 74546578ac
12 files changed
+119 -136

No files matched your search

+1 -1
View File
@@ -29,7 +29,7 @@ Then run:
To create a network which can span multiple hosts, the Weave peers must be connected to each other, by specifying the other hosts during `weave launch` or via
[`weave connect`](/site/using-weave/finding-adding-hosts-dynamically.md).
See [Deploying Applications to Weave Net](/site/using-weave/deploying-applications.md#peer-connections) for a discussion on peer connections.
See [Using Weave Net](/site/using-weave.md#peer-connections) for a discussion on peer connections.
As well as launching Weave Net, you have to run an extra command to
perform some additional configuration of the Weave bridge:
+1 -1
View File
@@ -43,7 +43,7 @@ Broadcast and Multicast protocols can also be used
over Weave Net.
To start using Weave Net, see [Installing Weave Net](/site/installing-weave.md)
and [Deploying Applications to Weave Net](/site/using-weave/deploying-applications.md).
and [Using Weave Net](/site/using-weave.md).
###<a name="fast-data-path"></a>Fast Datapath
+1 -1
View File
@@ -24,7 +24,7 @@ Prior to version 1.2, Weave Net used a custom encapsulation format. Fast datapat
**See Also**
* [Deploying Applications to Weave](/site/using-weave/deploying-applications.md)
* [Using Weave Net](/site/using-weave.md)
* [Using Fast Datapath](/using-weave/fastdp.md)
+1 -1
View File
@@ -20,7 +20,7 @@ After the VM is configured with Docker Machine, Weave Net can be launched direct
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](/site/weave-docker-api/using-proxy.md).
With Weave Net downloaded onto your VMs or hosts, you are ready to launch a Weave network and deploy apps onto it. See [Deploying Applications to Weave](/site/using-weave/deploying-applications.md).
With Weave Net downloaded onto your VMs or hosts, you are ready to launch a Weave network and deploy apps onto it. See [Using Weave Net](/site/using-weave.md).
CoreOS users see [here](https://github.com/fintanr/weave-gs/blob/master/coreos-simple/user-data) for an example of installing Weave using cloud-config.
+1 -1
View File
@@ -12,7 +12,7 @@ best of all doesn't require an external cluster store in order to use it.
To create a network which can span multiple Docker hosts, Weave Net peers must be connected to each other, by specifying the other hosts during `weave launch` or via
[`weave connect`](/site/using-weave/finding-adding-hosts-dynamically.md).
See [Deploying Applications to Weave Net](/site/using-weave/deploying-applications.md#peer-connections) for a discussion on peer connections.
See [Using Weave Net](/site/using-weave.md#peer-connections) for a discussion on peer connections.
After you've launched Weave Net and peered your hosts, you can start containers using the following, for example:
+106 -11
View File
@@ -3,17 +3,112 @@ title: Using Weave Net
menu_order: 40
---
Weave Net provides a simple to deploy networking solution for containerized apps. The example described and built upon throughout this `Using Weave Net` section describes how to manage a Weave container network using a sample application which consists of two simple `netcat` services deployed to containers on two separate hosts, and sometimes extended across three hosts.
Weave Net provides a simple to deploy networking solution for containerized apps. Here, we describe how to manage a Weave container network using a sample application which consists of two simple `netcat` services deployed to containers on two separate hosts, and sometimes extended across three hosts.
The following topics are discussed:
This section contains the following topics:
* [Deploying Applications to Weave](/site/using-weave/deploying-applications.md)
* [How to Manually Specify IP Addresses and Subnets](/site/using-weave/manual-ip-address.md)
* [Isolating Applications](/site/using-weave/application-isolation.md)
* [Dynamically Attaching and Detaching Containers](/site/using-weave/dynamically-attach-containers.md)
* [Integrating an External Host Network with Weave](/site/using-weave/host-network-integration.md)
* [Exposing Services to the Outside](/site/using-weave/service-export.md)
* [Managing Services in Weave: Importing, Binding and Routing](/site/using-weave/service-management.md)
* [Enabling Multi-cloud Networking and Multi-hop Routing](/site/using-weave/multi-cloud-multi-hop.md)
* [Adding Hosts Dynamically](/site/using-weave/finding-adding-hosts-dynamically.md)
* [Launching Weave Net](#launching)
* [Creating Peer Connections Between Hosts](#peer-connections)
* [Testing Container Communications](#testing)
* [Starting the Netcat Service](#start-netcat)
###<a name="launching"></a>Launching Weave Net
Before launching Weave Net and deploying your apps, ensure that Docker is [installed](https://docs.docker.com/engine/installation/) on both hosts.
On `$HOST1` run:
host1$ weave launch
host1$ eval $(weave env)
host1$ docker run --name a1 -ti ubuntu
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 using [Docker commands](https://docs.Docker.com/engine/reference/commandline/daemon/).
>**Note:** If the first command results in an error like
`http:///var/run/Docker.sock/v1.19/containers/create: dial unix
/var/run/Docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?` then you likely need to be 'root' in order to connect to the Docker daemon. If so, run the above and all subsequent commands in a *single* root shell (e.g. one created with `sudo -s`). Do *not* prefix individual commands with `sudo`, since some commands modify environment entries and hence they all need to be executed from the same shell.
>**Important!** if you are running the Weave Docker Network Plugin do not run `eval $(weave env)`. See [Using the Weave Net Docker Network Plugin](/site/plugin.md) for more information.
Weave Net must be launched once per host. The relevant container images will be pulled down from Docker Hub on demand during `weave launch`.
You can also preload the images by running `weave setup`. Preloaded images are useful for automated deployments, and ensure there are no delays during later operations.
If you are deploying an application that consists of more than one container to the same host, launch them one after another using `docker run`, as appropriate.
###<a name="peer-connections"></a>Creating Peer Connections Between Hosts
To launch Weave Net on an additional host and create a peer connection, run the following:
host2$ weave launch $HOST1
host2$ eval $(weave env)
host2$ docker run --name a2 -ti ubuntu
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.
You can also peer with other hosts by specifying the IP address, and a `:port` by which `$HOST2` can reach `$HOST1`.
>**Note:** If there is a firewall between `$HOST1` and `$HOST2`, you must permit traffic to flow through TCP 6783 and UDP 6783/6798, which are Weave’s control and data ports.
There are a number of different ways that you can specify peers on a Weave network. You can launch Weave Net on `$HOST1` and then peer with `$HOST2`, or you can launch on `$HOST2` and peer with `$HOST1` or you can tell both hosts about each other at launch. The order in which peers are specified is not important. Weave Net automatically (re)connects to peers when they become available.
####Specifying Multiple Peers at Launch
To specify multiple peers, supply a list of addresses to which you want to connect, all separated by spaces.
For example:
host2$ weave launch <ip address> <ip address>
Peers can also be dynamically added. See [Adding Hosts Dynamically](/site/using-weave/finding-adding-hosts-dynamically.md) for more information.
###<a name="testing"></a>Testing Container Communications
With two containers running on separate hosts, test that both containers are able to find and communicate with one another using ping.
From the container started on `$HOST1`...
root@a1:/# ping -c 1 -q a2
PING a2.weave.local (10.40.0.2) 56(84) bytes of data.
--- a2.weave.local ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.341/0.341/0.341/0.000 ms
Similarly, in the container started on `$HOST2`...
root@a2:/# ping -c 1 -q a1
PING a1.weave.local (10.32.0.2) 56(84) bytes of data.
--- a1.weave.local ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.366/0.366/0.366/0.000 ms
###<a name="start-netcat"></a>Starting the Netcat Service
The `netcat` service can be started using the following commands:
root@a1:/# nc -lk -p 4422
and then connected to from the another container on `$HOST2` using:
root@a2:/# echo 'Hello, world.' | nc a1 4422
Weave Net supports *any* protocol, and it doesn't have to be over TCP/IP. For example, a netcat UDP service can also be run by using the following:
root@a1:/# nc -lu -p 5533
root@a2:/# echo 'Hello, world.' | nc -u a1 5533
**See Also**
* [Installing Weave Net](/site/installing-weave.md)
* [Using Fastdp With Weave Net](/site/fastdp.md)
* [Using the Weave Net Docker Network Plugin](/site/plugin.md)
+1 -1
View File
@@ -13,7 +13,7 @@ techniques can still be used to deploy applications to a container network.
To begin isolating an application (or parts of an application),
configure Weave Net's IP allocator to manage multiple subnets.
Using [the netcat example](/site/using-weave/deploying-applications.md), configure multiple subsets:
Using [the netcat example](/site/using-weave.md), configure multiple subsets:
host1$ weave launch --ipalloc-range 10.2.0.0/16 --ipalloc-default-subnet 10.2.1.0/24
host1$ eval $(weave env)
-112
View File
@@ -1,112 +0,0 @@
---
title: Deploying Applications To Weave Net
menu_order: 10
---
This section contains the following topics:
* [Launching Weave Net](#launching)
* [Creating Peer Connections Between Hosts](#peer-connections)
* [Testing Container Communications](#testing)
* [Starting the Netcat Service](#start-netcat)
###<a name="launching"></a>Launching Weave Net
Before launching Weave Net and deploying your apps, ensure that Docker is [installed](https://docs.docker.com/engine/installation/) on both hosts.
On `$HOST1` run:
host1$ weave launch
host1$ eval $(weave env)
host1$ docker run --name a1 -ti ubuntu
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 using [Docker commands](https://docs.Docker.com/engine/reference/commandline/daemon/).
>**Note:** If the first command results in an error like
`http:///var/run/Docker.sock/v1.19/containers/create: dial unix
/var/run/Docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?` then you likely need to be 'root' in order to connect to the Docker daemon. If so, run the above and all subsequent commands in a *single* root shell (e.g. one created with `sudo -s`). Do *not* prefix individual commands with `sudo`, since some commands modify environment entries and hence they all need to be executed from the same shell.
>**Important!** if you are running the Weave Docker Network Plugin do not run `eval $(weave env)`. See [Using the Weave Net Docker Network Plugin](/site/plugin.md) for more information.
Weave Net must be launched once per host. The relevant container images will be pulled down from Docker Hub on demand during `weave launch`.
You can also preload the images by running `weave setup`. Preloaded images are useful for automated deployments, and ensure there are no delays during later operations.
If you are deploying an application that consists of more than one container to the same host, launch them one after another using `docker run`, as appropriate.
###<a name="peer-connections"></a>Creating Peer Connections Between Hosts
To launch Weave Net on an additional host and create a peer connection, run the following:
host2$ weave launch $HOST1
host2$ eval $(weave env)
host2$ docker run --name a2 -ti ubuntu
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.
You can also peer with other hosts by specifying the IP address, and a `:port` by which `$HOST2` can reach `$HOST1`.
>**Note:** If there is a firewall between `$HOST1` and `$HOST2`, you must permit traffic to flow through TCP 6783 and UDP 6783/6798, which are Weave’s control and data ports.
There are a number of different ways that you can specify peers on a Weave network. You can launch Weave Net on `$HOST1` and then peer with `$HOST2`, or you can launch on `$HOST2` and peer with `$HOST1` or you can tell both hosts about each other at launch. The order in which peers are specified is not important. Weave Net automatically (re)connects to peers when they become available.
####Specifying Multiple Peers at Launch
To specify multiple peers, supply a list of addresses to which you want to connect, all separated by spaces.
For example:
host2$ weave launch <ip address> <ip address>
Peers can also be dynamically added. See [Adding Hosts Dynamically](/site/using-weave/finding-adding-hosts-dynamically.md) for more information.
###<a name="testing"></a>Testing Container Communications
With two containers running on separate hosts, test that both containers are able to find and communicate with one another using ping.
From the container started on `$HOST1`...
root@a1:/# ping -c 1 -q a2
PING a2.weave.local (10.40.0.2) 56(84) bytes of data.
--- a2.weave.local ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.341/0.341/0.341/0.000 ms
Similarly, in the container started on `$HOST2`...
root@a2:/# ping -c 1 -q a1
PING a1.weave.local (10.32.0.2) 56(84) bytes of data.
--- a1.weave.local ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.366/0.366/0.366/0.000 ms
###<a name="start-netcat"></a>Starting the Netcat Service
The `netcat` service can be started using the following commands:
root@a1:/# nc -lk -p 4422
and then connected to from the another container on `$HOST2` using:
root@a2:/# echo 'Hello, world.' | nc a1 4422
Weave Net supports *any* protocol, and it doesn't have to be over TCP/IP. For example, a netcat UDP service can also be run by using the following:
root@a1:/# nc -lu -p 5533
root@a2:/# echo 'Hello, world.' | nc -u a1 5533
**See Also**
* [Installing Weave Net](/site/installing-weave.md)
* [Using Fastdp With Weave Net](/using-weave/fastdp.md)
* [Using the Weave Net Docker Network Plugin](/site/plugin.md)
+1 -1
View File
@@ -44,6 +44,6 @@ Where fastdp indicates that fast datapath is being used on a connection. If fast
**See Also**
* [Deploying Applications to Weave](/site/using-weave/deploying-applications.md)
* [Using Weave Net](/site/using-weave.md)
* [How Fastdp Works](/site/how-it-works/fastdp-how-it-works.md)
+2 -2
View File
@@ -5,7 +5,7 @@ menu_order: 60
Weave application networks can be integrated with an external host network, establishing connectivity between the host and with application containers running anywhere.
For example, returning to the [netcat example](/site/using-weave/deploying-applications.md), you’ve now decided that you need to have the application containers that are running on `$HOST2` accessible by other hosts and containers.
For example, returning to the [netcat example](/site/using-weave.md), you’ve now decided that you need to have the application containers that are running on `$HOST2` accessible by other hosts and containers.
On `$HOST2` run:
@@ -41,5 +41,5 @@ Exposed addresses can also be added to weaveDNS by supplying fully qualified dom
**See Also**
* [Deploying Applications To Weave Net](/site/using-weave/deploying-applications.md)
* [Using Weave Net](/site/using-weave.md)
* [Managing Services in Weave: Exporting, Importing, Binding and Routing](/site/using-weave/service-management.md)
+1 -1
View File
@@ -8,7 +8,7 @@ accessible to the outside world (and, more generally, to other networks)
from any Weave Net host, irrespective of where the service containers are
located.
Returning to the [netcat example service](/site/using-weave/deploying-applications.md),
Returning to the [netcat example service](/site/using-weave.md),
you can expose the netcat service running on `HOST1` and make it accessible to the outside world via `$HOST2`.
First, expose the application network to `$HOST2`, as explained in [Integrating a Host Network with a Weave Net](/site/using-weave/host-network-integration.md):
+3 -3
View File
@@ -17,7 +17,7 @@ This section contains the following topics:
Services running in containers on a Weave network can be made accessible to the outside world (and, more generally, to other networks) from any Weave host, regardless of where the service containers are located.
Turning back to the [netcat example](/site/using-weave/deploying-applications.md), say you want the netcat service, which is running in a container on `$HOST1`, to be accessible to the outside world via `$HOST2`.
Turning back to the [netcat example](/site/using-weave.md), say you want the netcat service, which is running in a container on `$HOST1`, to be accessible to the outside world via `$HOST2`.
To do this, expose the application network to `$HOST2`, as explained in [Host Network Integration](/site/using-weave/host-network-integration.md) by running:
@@ -44,7 +44,7 @@ Similar NAT rules to the above can used to expose services not just to the outsi
Applications running in containers on a Weave network can be given access to services, which are only reachable from certain
Weave hosts, regardless of where the actual application containers are located.
Expanding on the [netcat service example](/site/using-weave/deploying-applications.md), you now decide to add a third, non-containerized, netcat service. This additional netcat service runs on `$HOST3`, and listens on port 2211, but it is not on the Weave network.
Expanding on the [netcat service example](/site/using-weave.md), you now decide to add a third, non-containerized, netcat service. This additional netcat service runs on `$HOST3`, and listens on port 2211, but it is not on the Weave network.
An additional caveat is that `$HOST3` can only be reached from `$HOST1`, which is not accessible via `$HOST2`. Nonetheless, you still need to make the `$HOST3` service available to an application that is running in a container on `$HOST2`.
@@ -83,7 +83,7 @@ You can combine the service export and service import features to establish conn
Each network imports its services into Weave Net, while at the same time, exports from Weave Net any services that are required by its applications. In this scenario, there are no application containers (although, there could be). Weave Net is acting as an address translation and routing facility, and uses the Weave container network as an intermediary.
Expanding on the [netcat example](/site/using-weave/deploying-applications.md), you can also import an additional netcat service running on `$HOST3` into Weave Net via `$HOST1`.
Expanding on the [netcat example](/site/using-weave.md), you can also import an additional netcat service running on `$HOST3` into Weave Net via `$HOST1`.
Begin importing the service onto `$HOST2` by first exposing the application network: