Official Repository

Last pushed: 4 months ago
Short Description
Swarm: a Docker-native clustering system.
Full Description

Supported tags and respective Dockerfile links

Quick reference

Swarm: a Docker-native clustering system

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, docker-compose, 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, and as initial development settles, an API will develop to enable pluggable backends. 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.

Example usage

# create a cluster
$ docker run --rm 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 swarm manager can access it.
$ docker run -d swarm join --addr=<node_ip:2375> token://<cluster_id>

# start the manager on any machine or your laptop
$ docker run -t -p <swarm_port>:2375 -t swarm manage 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
$ docker run --rm swarm list token://<cluster_id>
<node_ip:2375>

See here for more information about other discovery services.

Advanced Scheduling

See filters and strategies 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 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.

License

View license information for the software contained in this image.

Docker Pull Command

Comments (5)
antoinetran
22 days ago

Is this still maintained?

devopsitguy
a month ago

Getting error:

<html><body><h1>503 Service Unavailable</h1>
No server is available to handle this request.
</body></html>

sidlors
a month ago

<html><body><h1>503 Service Unavailable</h1>
No server is available to handle this request.
</body></html>

xueqy
9 months ago

I have some problem with error 2016/08/27 08:14:20 Post https://discovery.hub.docker.com/v1/clusters: net/http: TLS handshake timeout
what is it?

gkumar3
a year ago

Guys,

in 1.2.0,1.2.1,1.2.2

We are getting "Failed to validate pending node: Error reading remote info: json: cannot unmarshal number into Go value of type bool"

Because of that , node is not able to add properly in cluster