mirror of https://github.com/docker/docs.git
Add example of secured setup using docker-machine, marks the manual setup as *unsecure*
Signed-off-by: Alexandre Beslic <abronan@docker.com>
This commit is contained in:
parent
b5c8062933
commit
928beefe21
111
docs/index.md
111
docs/index.md
|
|
@ -69,7 +69,116 @@ The easiest way to get started with Swarm is to use the
|
||||||
$ docker pull swarm
|
$ docker pull swarm
|
||||||
```
|
```
|
||||||
|
|
||||||
## Set up Swarm nodes
|
## Set up a secured Swarm cluster using docker-machine
|
||||||
|
|
||||||
|
`docker-machine` is a tool to provision docker nodes locally or within a Cloud provider infrastructure.
|
||||||
|
|
||||||
|
You can setup a Swarm cluster (**secured by default** using TLS) with this tool.
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
See the steps in the [Docker Machine documentation](https://docs.docker.com/machine/) to install `docker-machine`
|
||||||
|
|
||||||
|
Make sure you have **Virtualbox** installed locally, this will be the driver used to create our Swarm Virtual Machines
|
||||||
|
|
||||||
|
### Create a token
|
||||||
|
|
||||||
|
First, create a Swarm token. Optionally, you can use another discovery service.
|
||||||
|
See the Swarm documentation on alternative solutions in [Discovery Documentation](https://github.com/docker/swarm/blob/master/discovery/README.md)
|
||||||
|
|
||||||
|
To create the token, first create a Machine. This example will use VirtualBox.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ docker-machine create -d virtualbox local
|
||||||
|
```
|
||||||
|
|
||||||
|
Load the Machine configuration into your shell:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ eval "$(docker-machine env local)"
|
||||||
|
```
|
||||||
|
|
||||||
|
Then run generate the token using the Swarm Docker image:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ docker run swarm create
|
||||||
|
1257e0f0bbb499b5cd04b4c9bdb2dab3
|
||||||
|
```
|
||||||
|
Once you have the token, you can create the cluster.
|
||||||
|
|
||||||
|
### Launch the swarm manager
|
||||||
|
|
||||||
|
Use this command to launch the *Swarm Manager*:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker-machine create \
|
||||||
|
-d virtualbox \
|
||||||
|
--swarm \
|
||||||
|
--swarm-master \
|
||||||
|
--swarm-discovery token://<TOKEN-FROM-ABOVE> \
|
||||||
|
swarm-master
|
||||||
|
```
|
||||||
|
|
||||||
|
The *Swarm Manager* is the machine in charge of orchestrating and scheduling containers
|
||||||
|
on the entire cluster. The *Swarm Manager* rules a set of *Swarm-Agents*.
|
||||||
|
|
||||||
|
### Launch swarm agents
|
||||||
|
|
||||||
|
Now that the *Swarm Manager* is up and running, we can launch as many Swarm
|
||||||
|
Agents as we want using:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker-machine create \
|
||||||
|
-d virtualbox \
|
||||||
|
--swarm \
|
||||||
|
--swarm-discovery token://<TOKEN-FROM-ABOVE> \
|
||||||
|
swarm-node-00
|
||||||
|
```
|
||||||
|
|
||||||
|
We can create more: `swarm-agent-01`, `swarm-agent-02`, etc..
|
||||||
|
|
||||||
|
*Swarm agents* are responsible for hosting containers, they are regular docker daemons and
|
||||||
|
we communicate with them using the standard docker remote API.
|
||||||
|
|
||||||
|
### Point the docker cli to our Swarm Manager
|
||||||
|
|
||||||
|
Last step is to point to the machine running the *Swarm Manager* so we can use the `docker` command on it. To do so we are going to load those informations into our environment with:
|
||||||
|
|
||||||
|
```
|
||||||
|
eval "$(docker-machine env --swarm swarm-master)"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Time to talk to our Swarm!
|
||||||
|
|
||||||
|
Now that the setup is done, we can use the `docker` command on our cluster:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ docker info
|
||||||
|
Containers: 1
|
||||||
|
Nodes: 1
|
||||||
|
swarm-master: 192.168.99.100:2376
|
||||||
|
└ Containers: 2
|
||||||
|
└ Reserved CPUs: 0 / 4
|
||||||
|
└ Reserved Memory: 0 B / 999.9 MiB
|
||||||
|
Nodes: 2
|
||||||
|
swarm-master: 192.168.99.101:2376
|
||||||
|
└ Containers: 1
|
||||||
|
└ Reserved CPUs: 0 / 4
|
||||||
|
└ Reserved Memory: 0 B / 999.9 MiB
|
||||||
|
Nodes: 3
|
||||||
|
swarm-master: 192.168.99.102:2376
|
||||||
|
└ Containers: 1
|
||||||
|
└ Reserved CPUs: 0 / 4
|
||||||
|
└ Reserved Memory: 0 B / 999.9 MiB
|
||||||
|
|
||||||
|
$ docker ps
|
||||||
|
[...]
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Set up a Swarm cluster manually (insecure)
|
||||||
|
|
||||||
|
> **Warning**: use these steps only for debugging and testing purposes and if your network environment is secured (use of firewall, etc.)
|
||||||
|
|
||||||
Each Swarm node will run a Swarm node agent. The agent registers the referenced
|
Each Swarm node will run a Swarm node agent. The agent registers the referenced
|
||||||
Docker daemon, monitors it, and updates the discovery backend with the node's status.
|
Docker daemon, monitors it, and updates the discovery backend with the node's status.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue