Source repo for Docker's Documentation
Go to file
Victor Vieux ebe77641c7 prevent panic in random strategy if no node
Signed-off-by: Victor Vieux <vieux@docker.com>
2014-12-09 00:19:24 +00:00
api error when name already exists in docker run 2014-12-09 00:18:22 +00:00
cluster Node: Refuse to connect to unsupported Docker engine versions. 2014-12-05 14:59:40 -08:00
contrib update demo with 'node' 2014-11-21 22:18:09 +00:00
discovery Improve formatting of discovery README. 2014-12-04 12:44:40 -08:00
scheduler prevent panic in random strategy if no node 2014-12-09 00:19:24 +00:00
.gitignore improve locks 2014-11-18 23:04:11 +00:00
.godir update .godir 2014-11-18 21:47:00 +00:00
.travis.yml Add travis-ci. 2014-12-04 09:31:07 -08:00
CONTRIBUTING.md Add Contributing doc 2014-12-07 00:54:19 +00:00
Dockerfile fix package name 2014-11-18 21:40:38 +00:00
LICENSE add license 2014-11-18 03:19:37 +00:00
README.md update node_ip 2014-12-08 21:26:28 +00:00
join.go fix heartbeat 2014-11-20 23:56:42 +00:00
logo.png smaller logo 2014-12-03 11:47:55 +01:00
main.go add --api-enable-cors on swarm manage 2014-12-06 23:04:08 +00:00
manage.go add --api-enable-cors on swarm manage 2014-12-06 23:04:08 +00:00

README.md

Swarm: a Docker-native clustering system Build Status

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.

go get -u github.com/docker/swarm

######2 - Nodes setup The only requirement for Swarm nodes is to run a regular Docker daemon.

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 0.0.0.0:2375).

Currently, nodes must be running the Docker master version. Master binaries are available here: https://master.dockerproject.com/

Example usage

# create a cluster
$ swarm create
6856663cdefdec325839a4b7e1de38e8

# 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 --token=6856663cdefdec325839a4b7e1de38e8 --addr=<node_ip:2375>

# start the manager on any machine or your laptop
$ swarm manage --token=6856663cdefdec325839a4b7e1de38e8 --addr=<swarm_ip:swarm_port>

# use the regular docker cli
$ docker -H <swarm_ip:swarm_port> info
$ docker -H <swarm_ip:swarm_port> run ... 
$ docker -H <swarm_ip:swarm_port> ps 
$ docker -H <swarm_ip:swarm_port> logs ...
...

# list nodes in your cluster
$ swarm list --token=6856663cdefdec325839a4b7e1de38e8
http://<node_ip:2375>

Participating

We welcome pull requests and patches; come say hi on IRC, #docker-swarm on freenode.

Creators

Andrea Luzzardi

Victor Vieux

Code and documentation copyright 2014 Docker, inc. Code released under the Apache 2.0 license. Docs released under Creative commons.