start userguide from the README.md

Signed-off-by: Sven Dowideit <SvenDowideit@docker.com>
This commit is contained in:
Sven Dowideit 2015-01-23 13:56:50 +10:00 committed by Sven Dowideit
parent 14c4fb81cf
commit 34373bdf5a
2 changed files with 114 additions and 6 deletions

View File

@ -1,9 +1,3 @@
---
page_title: Docker Swarm
page_description: Swarm: a Docker-native clustering system
page_keywords: docker, swarm, clustering
---
# Swarm: a Docker-native clustering system [![Build Status](https://travis-ci.org/docker/swarm.svg?branch=master)](https://travis-ci.org/docker/swarm)
![Docker Swarm Logo](logo.png?raw=true "Docker Swarm Logo")

114
userguide.md Normal file
View File

@ -0,0 +1,114 @@
---
page_title: Docker Swarm
page_description: Swarm: a Docker-native clustering system
page_keywords: docker, swarm, clustering
---
# Swarm: a Docker-native clustering system [![Build Status](https://travis-ci.org/docker/swarm.svg?branch=master)](https://travis-ci.org/docker/swarm)
![Docker Swarm Logo](logo.png?raw=true "Docker Swarm Logo")
`swarm` is a simple tool which controls a cluster of Docker hosts and exposes it
as a single "virtual" host.
`swarm` uses the standard Docker API as its frontend, which means any tool which
speaks Docker can control swarm transparently: dokku, fig, krane, flynn, deis,
docker-ui, shipyard, drone.io, Jenkins... and of course the Docker client itself.
Like the other Docker projects, `swarm` follows the "batteries included but removable"
principle. It ships with a simple scheduling backend out of the box. The goal is
to provide a smooth out-of-box experience for simple use cases, and allow swapping
in more powerful backends, like `Mesos`, for large scale production deployments.
## Installation
###1 - Download and install the current source code.
Ensure you have golang installed (e.g. `apt-get install golang` on Ubuntu).
You may need to set `$GOPATH`, e.g `mkdir ~/gocode; export GOPATH=~/gocode`.
The install `swarm` binary to your `$GOPATH` directory.
```sh
go get -u github.com/docker/swarm
```
###2 - Nodes setup
The only requirement for Swarm nodes is to run a regular Docker daemon (version
`1.4.0` and later).
In order for Swarm to be able to communicate with its nodes, they must bind on a
network interface. This can be achieved by starting Docker with the `-H` flag
(e.g. `-H tcp://0.0.0.0:2375`).
# Example usage
```bash
# create a cluster
$ swarm create
6856663cdefdec325839a4b7e1de38e8 # <- this is your unique <cluster_id>
# on each of your nodes, start the swarm agent
# <node_ip> doesn't have to be public (eg. 192.168.0.X),
# as long as the other nodes can reach it, it is fine.
$ swarm join --addr=<node_ip:2375> token://<cluster_id>
# start the manager on any machine or your laptop
$ swarm manage -H tcp://<swarm_ip:swarm_port> token://<cluster_id>
# use the regular docker cli
$ docker -H tcp://<swarm_ip:swarm_port> info
$ docker -H tcp://<swarm_ip:swarm_port> run ...
$ docker -H tcp://<swarm_ip:swarm_port> ps
$ docker -H tcp://<swarm_ip:swarm_port> logs ...
...
# list nodes in your cluster
$ swarm list token://<cluster_id>
<node_ip:2375>
```
See [here](discovery) for more information about
other discovery services.
## Advanced Scheduling
See [filters](scheduler/filter) and [strategies](scheduler/strategy) to learn
more about advanced scheduling.
## TLS
Swarm supports TLS authentication between the CLI and Swarm but also between
Swarm and the Docker nodes.
In order to enable TLS, the same command line options as Docker can be specified:
`swarm manage --tlsverify --tlscacert=<CACERT> --tlscert=<CERT> --tlskey=<KEY> [...]`
Please refer to the [Docker documentation](https://docs.docker.com/articles/https/)
for more information on how to set up TLS authentication on Docker and generating
the certificates.
Note that Swarm certificates must be generated with`extendedKeyUsage = clientAuth,serverAuth`.
## Participating
We welcome pull requests and patches; come say hi on IRC, #docker-swarm on freenode.
## Creators
**Andrea Luzzardi**
- <http://twitter.com/aluzzardi>
- <http://github.com/aluzzardi>
**Victor Vieux**
- <http://twitter.com/vieux>
- <http://github.com/vieux>
## Copyright and license
Code and documentation copyright 2014-2015 Docker, inc. Code released under the
Apache 2.0 license.
Docs released under Creative commons.