mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Update documentation for compose/swarm/network
Thanks to @aanand for help debugging Signed-off-by: Ben Firshman <ben@firshman.co.uk>
This commit is contained in:
parent
e02947b236
commit
fe1f210c42
1 changed files with 62 additions and 8 deletions
|
@ -25,32 +25,86 @@ You’ll also need a [Docker Hub](https://hub.docker.com/account/signup/) accoun
|
|||
|
||||
Set the `DIGITALOCEAN_ACCESS_TOKEN` environment variable to a valid Digital Ocean API token, which you can generate in the [API panel](https://cloud.digitalocean.com/settings/applications).
|
||||
|
||||
DIGITALOCEAN_ACCESS_TOKEN=abc12345
|
||||
export DIGITALOCEAN_ACCESS_TOKEN=abc12345
|
||||
|
||||
Start a consul server:
|
||||
|
||||
docker-machine create -d digitalocean --engine-install-url https://experimental.docker.com consul
|
||||
docker $(docker-machine config consul) run -d -p 8500:8500 -h consul progrium/consul -server -bootstrap
|
||||
docker-machine --debug create \
|
||||
-d digitalocean \
|
||||
--engine-install-url="https://experimental.docker.com" \
|
||||
consul
|
||||
|
||||
docker $(docker-machine config consul) run -d \
|
||||
-p "8500:8500" \
|
||||
-h "consul" \
|
||||
progrium/consul -server -bootstrap
|
||||
|
||||
(In a real world setting you’d set up a distributed consul, but that’s beyond the scope of this guide!)
|
||||
|
||||
Create a Swarm token:
|
||||
|
||||
SWARM_TOKEN=$(docker run swarm create)
|
||||
export SWARM_TOKEN=$(docker run swarm create)
|
||||
|
||||
Create a Swarm master:
|
||||
Next, you create a Swarm master with Machine:
|
||||
|
||||
docker-machine create -d digitalocean --swarm --swarm-master --swarm-discovery=token://$SWARM_TOKEN --engine-install-url="https://experimental.docker.com" --digitalocean-image "ubuntu-14-10-x64" --engine-opt=default-network=overlay:multihost --engine-label=com.docker.network.driver.overlay.bind_interface=eth0 --engine-opt=kv-store=consul:$(docker-machine ip consul):8500 swarm-0
|
||||
docker-machine --debug create \
|
||||
-d digitalocean \
|
||||
--digitalocean-image="ubuntu-14-10-x64" \
|
||||
--engine-install-url="https://experimental.docker.com" \
|
||||
--engine-opt="default-network=overlay:multihost" \
|
||||
--engine-opt="kv-store=consul:$(docker-machine ip consul):8500" \
|
||||
--engine-label="com.docker.network.driver.overlay.bind_interface=eth0" \
|
||||
swarm-0
|
||||
|
||||
Usually Machine can create Swarms for you, but it doesn't yet fully support multi-host networks yet, so you'll have to start up the Swarm manually:
|
||||
|
||||
docker $(docker-machine config swarm-0) run -d \
|
||||
--restart="always" \
|
||||
--net="bridge" \
|
||||
swarm:latest join \
|
||||
--addr "$(docker-machine ip swarm-0):2376" \
|
||||
"token://$SWARM_TOKEN"
|
||||
|
||||
docker $(docker-machine config swarm-0) run -d \
|
||||
--restart="always" \
|
||||
--net="bridge" \
|
||||
-p "3376:3376" \
|
||||
-v "/etc/docker:/etc/docker" \
|
||||
swarm:latest manage \
|
||||
--tlsverify \
|
||||
--tlscacert="/etc/docker/ca.pem" \
|
||||
--tlscert="/etc/docker/server.pem" \
|
||||
--tlskey="/etc/docker/server-key.pem" \
|
||||
-H "tcp://0.0.0.0:3376" \
|
||||
--strategy spread \
|
||||
"token://$SWARM_TOKEN"
|
||||
|
||||
Create a Swarm node:
|
||||
|
||||
docker-machine create -d digitalocean --swarm --swarm-discovery=token://$SWARM_TOKEN --engine-install-url="https://experimental.docker.com" --digitalocean-image "ubuntu-14-10-x64" --engine-opt=default-network=overlay:multihost --engine-label=com.docker.network.driver.overlay.bind_interface=eth0 --engine-opt=kv-store=consul:$(docker-machine ip consul):8500 --engine-label com.docker.network.driver.overlay.neighbor_ip=$(docker-machine ip swarm-0) swarm-1
|
||||
docker-machine --debug create \
|
||||
-d digitalocean \
|
||||
--digitalocean-image="ubuntu-14-10-x64" \
|
||||
--engine-install-url="https://experimental.docker.com" \
|
||||
--engine-opt="default-network=overlay:multihost" \
|
||||
--engine-opt="kv-store=consul:$(docker-machine ip consul):8500" \
|
||||
--engine-label="com.docker.network.driver.overlay.bind_interface=eth0" \
|
||||
--engine-label="com.docker.network.driver.overlay.neighbor_ip=$(docker-machine ip swarm-0)" \
|
||||
swarm-1
|
||||
|
||||
docker $(docker-machine config swarm-1) run -d \
|
||||
--restart="always" \
|
||||
--net="bridge" \
|
||||
swarm:latest join \
|
||||
--addr "$(docker-machine ip swarm-1):2376" \
|
||||
"token://$SWARM_TOKEN"
|
||||
|
||||
You can create more Swarm nodes if you want - it’s best to give them sensible names (swarm-2, swarm-3, etc).
|
||||
|
||||
Finally, point Docker at your swarm:
|
||||
|
||||
eval "$(docker-machine env --swarm swarm-0)"
|
||||
export DOCKER_HOST=tcp://"$(docker-machine ip swarm-0):3376"
|
||||
export DOCKER_TLS_VERIFY=1
|
||||
export DOCKER_CERT_PATH="$HOME/.docker/machine/machines/swarm-0"
|
||||
|
||||
## Run containers and get them communicating
|
||||
|
||||
|
|
Loading…
Reference in a new issue