Prechádzať zdrojové kódy

Merge pull request #14111 from bfirsh/update-compose-swarm-docs

Fix compose/swarm/network docs
moxiegirl 10 rokov pred
rodič
commit
51264fa63c

+ 1 - 0
experimental/README.md

@@ -47,6 +47,7 @@ Unlike the regular Docker binary, the experimental channels is built and updated
 * [Support for Docker plugins](plugins.md)
   * [Volume plugins](plugins_volume.md)
 * [Native Multi-host networking](networking.md)
+* [Compose, Swarm and networking integration](compose_swarm_networking.md)
 
 ## How to comment on an experimental feature
 

+ 64 - 10
experimental/compose_swarm_networking.md

@@ -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)
-
-Create a Swarm master:
-
-    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
+    export SWARM_TOKEN=$(docker run swarm create)
+
+Next, you create a Swarm master with Machine: 
+
+    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