add README.md for strategies

Signed-off-by: Victor Vieux <vieux@docker.com>
This commit is contained in:
Victor Vieux 2015-02-03 22:48:45 +00:00
parent d03c5bb211
commit 3926582d7d
2 changed files with 57 additions and 1 deletions

View File

@ -75,7 +75,7 @@ Now we want to run an `nginx` frontend in our cluster. However, we don't want
```
$ docker run -d -P -e constraint:storage==disk --name frontend nginx
f8b693db9cd6
963841b138d8
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NODE NAMES

View File

@ -0,0 +1,56 @@
---
page_title: Docker Swarm strategies
page_description: Swarm strategies
page_keywords: docker, swarm, clustering, strategies
---
# Strategies
The `Docker Swarm` scheduler comes with multiple strategies.
These strategies are used to rank nodes using a scores computed by the strategy.
`Docker Swarm` currently supports 2 strategies:
* [BinPacking](#binpacking-strategy)
* [Random](#random-strategy)
You can choose the strategy you want to use with the `--strategy` flag of `swarm manage`
## BinPacking strategy
The BinPacking strategy will rank the nodes using their CPU and RAM availalble and will return the
node the most packed already. This avoid fragementation, it will leave room for bigger containers
on usunsed machines.
For instance, let's says that both `node-1` and `node-2` have 2Go de RAM:
```bash
$ docker run -d -P -m 1G --name db mysql
f8b693db9cd6
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NODE NAMES
f8b693db9cd6 mysql:latest "mysqld" Less than a second ago running 192.168.0.42:49178->3306/tcp node-1 db
```
In this case, `node-1` was chosen randomly, because no container were running, so `node-1` and
`node-2` had the same score.
Now we start another container, asking for 1G of RAM again.
```bash
$ docker run -d -P -m 1G --name frontend nginx
963841b138d8
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NODE NAMES
963841b138d8 nginx:latest "nginx" Less than a second ago running 192.168.0.42:49177->80/tcp node-1 frontend
f8b693db9cd6 mysql:latest "mysqld" Up About a minute running 192.168.0.42:49178->3306/tcp node-1 db
```
The container `frontend` was also started on `node-1` because it was the node the most packed
already. This allows us to start a container requiring 2G of RAM on `node-2`.
## Random strategy
The Random strategy, as it's name says, chose a random node, it's used mainly for debug.