mirror of https://github.com/docker/docs.git
Merge pull request #127 from jamtur01/readme
Improvements to the README
This commit is contained in:
commit
d77c7cc415
112
README.md
112
README.md
|
@ -2,42 +2,76 @@
|
||||||
|
|
||||||
*libswarm* is a toolkit for composing network services.
|
*libswarm* is a toolkit for composing network services.
|
||||||
|
|
||||||
It defines a standard interface for services in a distributed system to communicate with each other. This lets you:
|
It defines a standard interface for services in a distributed system to
|
||||||
|
communicate with each other. This lets you:
|
||||||
|
|
||||||
1. Compose complex architectures from reusable building blocks
|
1. Compose complex architectures from reusable building blocks
|
||||||
2. Avoid vendor lock-in by swapping any service out with another
|
2. Avoid vendor lock-in by swapping any service out with another
|
||||||
|
|
||||||
An extensive library of services is included, and you can also write your own using a simple API.
|
An extensive library of services is included, and you can also write
|
||||||
|
your own using a simple API.
|
||||||
|
|
||||||
Here are some examples of what you can do with libswarm:
|
Here are some examples of what you can do with libswarm:
|
||||||
|
|
||||||
* Aggregate all your Docker containers across multiple hosts and infrastructure providers, as if they were running on a single host.
|
* Aggregate all your Docker containers across multiple hosts and
|
||||||
|
infrastructure providers, as if they were running on a single host.
|
||||||
|
|
||||||
* Bridge your in-house DNS-based service discovery with that new shiny Consul deployment, without getting locked into either.
|
* Bridge your in-house DNS-based service discovery with that new shiny
|
||||||
|
Consul deployment, without getting locked into either.
|
||||||
|
|
||||||
* Swap in a new clustering and service discovery system, without changing any application code.
|
* Swap in a new clustering and service discovery system, without
|
||||||
|
changing any application code.
|
||||||
|
|
||||||
* Collect logs across an in-house Mesos cluster, a Cloud Foundry deployment and individual servers staggered in 3 different datacenters, forward them to your legacy syslog deployment, then perform custom analytics on them.
|
* Collect logs across an in-house Mesos cluster, a Cloud Foundry
|
||||||
|
deployment and individual servers staggered in 3 different
|
||||||
|
datacenters, forward them to your legacy syslog deployment, then perform
|
||||||
|
custom analytics on them.
|
||||||
|
|
||||||
* Simulate your entire service topology in a single process, then scale it out simply by re-arranging adapters.
|
* Simulate your entire service topology in a single process, then scale
|
||||||
|
it out simply by re-arranging adapters.
|
||||||
|
|
||||||
|
* Organize your application as loosely coupled services from day 1,
|
||||||
|
without over-engineering.
|
||||||
|
|
||||||
* Organize your application as loosely coupled services from day 1, without over-engineering.
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
First get the go dependencies:
|
You can install `libswarm` in a few simple steps. You will need to make
|
||||||
|
Go installed on your host.
|
||||||
|
|
||||||
|
1. Download the current source code.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
go get github.com/docker/libswarm/...
|
go get github.com/docker/libswarm
|
||||||
```
|
```
|
||||||
|
|
||||||
Then you can compile `swarmd` with:
|
2. Make sure `$GOPATH/bin` is in your `$PATH`
|
||||||
|
|
||||||
|
```sh
|
||||||
|
export PATH=$GOPATH/bin:$PATH
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Download or update the current dependencies.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd $GOPATH/src/github.com/docker/libswarm
|
||||||
|
make deps
|
||||||
|
```
|
||||||
|
|
||||||
|
**NOTE:** You may also need `bzr`. On OS X, you can install it from
|
||||||
|
[here](http://wiki.bazaar.canonical.com/MacOSXDownloads) or via Home
|
||||||
|
Brew: `brew install bzr`. On Debian & Ubuntu, `apt-get install bzr` and
|
||||||
|
on Red Hat et al, `yum install bzr`.
|
||||||
|
|
||||||
|
4. Then compile `swarmd` with:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
go install github.com/docker/libswarm/swarmd
|
go install github.com/docker/libswarm/swarmd
|
||||||
```
|
```
|
||||||
|
|
||||||
If `$GOPATH/bin` is in your `PATH`, you can invoke `swarmd` from the CLI.
|
## Running libswarm
|
||||||
|
|
||||||
|
If `$GOPATH/bin` is in your `PATH`, you can invoke `swarmd` from the
|
||||||
|
command line.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ swarmd -h
|
$ swarmd -h
|
||||||
|
@ -64,17 +98,18 @@ GLOBAL OPTIONS:
|
||||||
|
|
||||||
*Maintainer: Ben Firshman*
|
*Maintainer: Ben Firshman*
|
||||||
|
|
||||||
This service runs a Docker remote API server, allowing the Docker client and
|
This service runs a Docker remote API server, allowing the Docker client
|
||||||
other Docker tools to control libswarm services. With no arguments, it listens
|
and other Docker tools to control libswarm services. With no arguments,
|
||||||
on port `4243`, but you can specify any port you like using `tcp://0.0.0.0:9999`,
|
it listens on port `4243`, but you can specify any port you like using
|
||||||
`unix:///tmp/docker` etc.
|
`tcp://0.0.0.0:9999`, `unix:///tmp/docker` etc.
|
||||||
|
|
||||||
|
|
||||||
### Docker client
|
### Docker client
|
||||||
|
|
||||||
*Maintainer: Aanand Prasad*
|
*Maintainer: Aanand Prasad*
|
||||||
|
|
||||||
This service can be used to control a Docker Engine from libswarm services. It takes one argument, the Docker host to connect to. For example: `dockerclient tcp://10.1.2.3:4243`
|
This service can be used to control a Docker Engine from libswarm
|
||||||
|
services. It takes one argument, the Docker host to connect to. For
|
||||||
|
example: `dockerclient tcp://10.1.2.3:4243`
|
||||||
|
|
||||||
### SSH tunnel
|
### SSH tunnel
|
||||||
|
|
||||||
|
@ -116,7 +151,9 @@ This service can be used to control a Docker Engine from libswarm services. It t
|
||||||
|
|
||||||
*Maintainer: Aanand Prasad*
|
*Maintainer: Aanand Prasad*
|
||||||
|
|
||||||
Control an [Orchard](https://www.orchardup.com/) host from libswarm. It takes two arguments, an Orchard API token and the name of the Orchard host to control.
|
Control an [Orchard](https://www.orchardup.com/) host from libswarm. It
|
||||||
|
takes two arguments, an Orchard API token and the name of the Orchard
|
||||||
|
host to control.
|
||||||
|
|
||||||
### Amazon EC2
|
### Amazon EC2
|
||||||
|
|
||||||
|
@ -146,41 +183,42 @@ Control an [Orchard](https://www.orchardup.com/) host from libswarm. It takes tw
|
||||||
|
|
||||||
### Debug
|
### Debug
|
||||||
|
|
||||||
The debug service simply catches all messages and prints them on the terminal for inspection.
|
The debug service simply catches all messages and prints them on the
|
||||||
|
terminal for inspection.
|
||||||
|
|
||||||
## Testing libswarm with swarmd
|
## Testing libswarm with swarmd
|
||||||
|
|
||||||
Libswarm ships with a simple daemon which can control services in your distributed system.
|
The libswarm library ships with a simple daemon which can control services in your
|
||||||
|
distributed system.
|
||||||
Usage example:
|
|
||||||
|
|
||||||
|
### Usage examples
|
||||||
|
|
||||||
Run swarmd without arguments to list available services:
|
Run swarmd without arguments to list available services:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
./swarmd
|
swarmd
|
||||||
```
|
```
|
||||||
|
|
||||||
Pass a service name as argument to load it:
|
Pass a service name as argument to load it:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
./swarmd fakeclient
|
swarmd fakeclient
|
||||||
```
|
```
|
||||||
|
|
||||||
You can pass arguments to the service, like a shell command:
|
You can pass arguments to the service, like a shell command:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
./swarmd 'dockerserver tcp://localhost:4243'
|
swarmd 'dockerserver tcp://localhost:4243'
|
||||||
```
|
```
|
||||||
|
|
||||||
You can call multiple services. They will be executed in parallel, with the output
|
You can call multiple services. They will be executed in parallel, with
|
||||||
of each backend connected to the input of the next, just like unix pipelines.
|
the output of each backend connected to the input of the next, just like
|
||||||
|
`unix` pipelines.
|
||||||
|
|
||||||
This allows for very powerful composition.
|
This allows for very powerful composition.
|
||||||
|
|
||||||
```
|
```sh
|
||||||
./swarmd 'dockerserver tcp://localhost:4243' 'debug' 'dockerclient unix:///var/run/docker.sock'
|
swarmd 'dockerserver tcp://localhost:4243' 'debug' 'dockerclient unix:///var/run/docker.sock'
|
||||||
```
|
```
|
||||||
|
|
||||||
## Creators
|
## Creators
|
||||||
|
@ -192,5 +230,5 @@ This allows for very powerful composition.
|
||||||
|
|
||||||
## Copyright and license
|
## Copyright and license
|
||||||
|
|
||||||
Code and documentation copyright 2013-2014 Docker, inc. Code released under the Apache 2.0 license.
|
Code and documentation copyright 2013-2014 Docker, inc. Code released
|
||||||
Docs released under Creative commons.
|
under the Apache 2.0 license. Docs released under Creative commons.
|
||||||
|
|
Loading…
Reference in New Issue