Add Swarm tutorial documentation #23364

Merged
merged 1 commit into from Jun 14, 2016

Projects

None yet

10 participants

@sfsmithcha
Contributor
sfsmithcha commented Jun 8, 2016 edited

Add Swarm tutorial documentation.

Signed-off-by: Charles Smith charles.smith@docker.com

@icecrime icecrime changed the title from add tutorial to Add Swarm tutorial documentation Jun 8, 2016
@icecrime icecrime added this to the 1.12.0 milestone Jun 8, 2016
@SvenDowideit
Collaborator

the checker doesn't like docs/swarm/swarm-tutorial/delete-service.md - it looks like an empty file.

please add at least some frontmatter :)

@thaJeztah thaJeztah commented on an outdated diff Jun 8, 2016
docs/swarm/swarm-tutorial/add-nodes.md
+ Swarm management commands like `docker node ls` only work on manager nodes.
+
+4. Repeat these steps for your your second worker node: `worker2`. When you run `docker node ls` from your manager node, you can see all three nodes--one manager and two workers:
+
+ ```bashtext
+ $ docker node ls
+
+ ID NAME STATUS AVAILABILITY/MEMBERSHIP MANAGER STATUS LEADER
+ 0biocneuj4h2 * manager1 READY ACTIVE REACHABLE Yes
+ 0e1viboabog2 worker1 READY ACTIVE
+ 24kgbigepmuq worker2 READY ACTIVE
+ ```
+
+Now your Swarm consists of a manager and two worker nodes. In the next step of the tutorial, you [deploy a service](deploy-service.md) to the Swarm.
+
+<p style="margin-bottom:300px">&nbsp;</p>
@thaJeztah
thaJeztah Jun 8, 2016 Member

Is this needed? Or is this to prevent the bottom "wave" from overlapping the content? Perhaps we can address this somehow in a general style

@thaJeztah
Member

Could you wrap to 80 chars as well?

@thaJeztah thaJeztah commented on an outdated diff Jun 8, 2016
docs/swarm/index.md
@@ -0,0 +1,80 @@
+<!--[metadata]>
++++
+title = "Swarm overview"
+description = "Docker Swarm overview"
+keywords = ["docker, container, cluster, swarm"]
+[menu.main]
+identifier="swarm_overview"
+parent="engine_swarm"
+weight="1"
++++
+<![end-metadata]-->
+# Docker Swarm overview #
@thaJeztah
thaJeztah Jun 8, 2016 Member

Hm did that plugin add the trailing #?

@sanscontext sanscontext commented on an outdated diff Jun 8, 2016
docs/swarm/key-concepts.md
+scale you can add more managers to make the cluster more fault-tolerant. If you
+require high availability Swarm management, Docker recommends three or five
+Managers in your cluster.
+
+Because Swarm manager nodes share data using Raft, there must be an odd number
+of managers. The Swarm cluster can continue functioning in the face of up to
+`N/2` failures where `N` is the number of manager nodes. More than five
+managers is likely to degrade cluster performance and is not recommended.
+
+**Worker nodes** receive and execute tasks dispatched from manager nodes.
+
+### Services and tasks
+
+A **service** is the definition of how to run the various tasks that make up
+your application. For example, you may want to run a Redis service in your
+Swarm.
@sanscontext
sanscontext Jun 8, 2016 edited

This part is a little confusing to me. How is a service related to a Docker image? In Cloud a "service" is one or more containers of the same image. It might be worth briefly touching on this relationship.

@sanscontext sanscontext commented on an outdated diff Jun 8, 2016
docs/swarm/key-concepts.md
+
+**Worker nodes** receive and execute tasks dispatched from manager nodes.
+
+### Services and tasks
+
+A **service** is the definition of how to run the various tasks that make up
+your application. For example, you may want to run a Redis service in your
+Swarm.
+
+A **task** is the atomic scheduling unit of Swarm. For example a task may be to
+schedule a Redis container to run on a worker node.
+
+
+### Scheduling
+
+Docker Swarm allows you to schedule service on nodes in the Swarm in the
@sanscontext
sanscontext Jun 8, 2016

a service? services?

@sanscontext sanscontext and 2 others commented on an outdated diff Jun 8, 2016
docs/swarm/key-concepts.md
+your application. For example, you may want to run a Redis service in your
+Swarm.
+
+A **task** is the atomic scheduling unit of Swarm. For example a task may be to
+schedule a Redis container to run on a worker node.
+
+
+### Scheduling
+
+Docker Swarm allows you to schedule service on nodes in the Swarm in the
+following ways:
+
+**Service scheduling** distributes tasks among nodes for long-running,
+persistent services.
+
+**Fill scheduling** runs tasks on every available node.
@sanscontext
sanscontext Jun 8, 2016

This part is a little unclear - does service scheduling only distribute tasks among specific nodes? Does fill scheduling do something special before running tasks on every node? How do these two relate/differ?

@aluzzardi
aluzzardi Jun 9, 2016 Contributor

This should be "global services"

@sfsmithcha
sfsmithcha Jun 9, 2016 Contributor

@aluzzardi is this accurate:

"Global services scheculing distributes tasks among the number of nodes according to the the desired state for long-running, persistent services."

So the answer to @sanscontext 's question is that Replicated services run on all nodes in the Swarm regardless of the desired state. Global services only run on the number of nodes according to the desired state.

@aaronlehmann aaronlehmann and 1 other commented on an outdated diff Jun 8, 2016
docs/swarm/key-concepts.md
+
+A **service** is the definition of how to run the various tasks that make up
+your application. For example, you may want to run a Redis service in your
+Swarm.
+
+A **task** is the atomic scheduling unit of Swarm. For example a task may be to
+schedule a Redis container to run on a worker node.
+
+
+### Scheduling
+
+Docker Swarm allows you to schedule service on nodes in the Swarm in the
+following ways:
+
+**Service scheduling** distributes tasks among nodes for long-running,
+persistent services.
@aaronlehmann
aaronlehmann Jun 8, 2016 Contributor

Should this be "replicated scheduling"? cc @dongluochen

@aluzzardi
aluzzardi Jun 9, 2016 Contributor

This should be "replicated services"

@sanscontext sanscontext commented on an outdated diff Jun 8, 2016
docs/swarm/swarm-tutorial/tutorial-setup.md
@@ -0,0 +1,80 @@
+<!--[metadata]>
++++
+title = "Setup for the tutorial"
@sanscontext
sanscontext Jun 8, 2016

setup -> "set up" so we match the verb-first page names.

@sanscontext sanscontext commented on an outdated diff Jun 8, 2016
docs/swarm/swarm-tutorial/tutorial-setup.md
+* the IP address of each of the machines you use for the tutorial
+
+ The IP address must be assigned to an a network interface available to the
+ host operating system. Run `ifconfig` to see a list of the available network
+ interfaces:
+
+ ```
+ $ ifconfig
+
+ ...snip...
+ eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
+ inet 168.0.32.137 netmask 255.255.0.0 broadcast 168.0.255.255
+ inet6 fe80::d8:f5ff:fe48:cabb prefixlen 64 scopeid 0x20<link>
+ ...snip...
+ ```
+
@sanscontext
sanscontext Jun 8, 2016

And then what? When I run ifconfig I get a bunch of output I'm not sure how to parse. Am I looking for eth0 ? Am I looking for something else? Am I doing this for each of the three networked machines?

@sanscontext sanscontext commented on an outdated diff Jun 8, 2016
docs/swarm/swarm-tutorial/tutorial-setup.md
+ $ ifconfig
+
+ ...snip...
+ eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
+ inet 168.0.32.137 netmask 255.255.0.0 broadcast 168.0.255.255
+ inet6 fe80::d8:f5ff:fe48:cabb prefixlen 64 scopeid 0x20<link>
+ ...snip...
+ ```
+
+ For the manager node, the ip address serves as the VXLAN tunnel endpoint
+ (VTEP) for the Swarm.
+
+ This tutorial uses the following host names and ip addresses :
+ * `manager1` : `192.168.99.100`
+ * `worker1` : `192.168.99.102`
+ * `worker2` : `192.168.99.100`
@sanscontext
sanscontext Jun 8, 2016

I read that a manager can also be a worker, but is that something we want to explain here? Otherwise it looks like a typo and one of our IPs is off by one.

@sanscontext sanscontext commented on an outdated diff Jun 8, 2016
docs/swarm/swarm-tutorial/tutorial-setup.md
+ The IP address must be assigned to an a network interface available to the
+ host operating system. Run `ifconfig` to see a list of the available network
+ interfaces:
+
+ ```
+ $ ifconfig
+
+ ...snip...
+ eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
+ inet 168.0.32.137 netmask 255.255.0.0 broadcast 168.0.255.255
+ inet6 fe80::d8:f5ff:fe48:cabb prefixlen 64 scopeid 0x20<link>
+ ...snip...
+ ```
+
+ For the manager node, the ip address serves as the VXLAN tunnel endpoint
+ (VTEP) for the Swarm.
@sanscontext
sanscontext Jun 8, 2016

This is a lot of acronyms. Expand and/or explain?

@sanscontext sanscontext commented on an outdated diff Jun 8, 2016
docs/swarm/swarm-tutorial/tutorial-setup.md
+ eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
+ inet 168.0.32.137 netmask 255.255.0.0 broadcast 168.0.255.255
+ inet6 fe80::d8:f5ff:fe48:cabb prefixlen 64 scopeid 0x20<link>
+ ...snip...
+ ```
+
+ For the manager node, the ip address serves as the VXLAN tunnel endpoint
+ (VTEP) for the Swarm.
+
+ This tutorial uses the following host names and ip addresses :
+ * `manager1` : `192.168.99.100`
+ * `worker1` : `192.168.99.102`
+ * `worker2` : `192.168.99.100`
+
+
+* Docker recommends that every node in the cluster be on the same L3 subnet with
@sanscontext
sanscontext Jun 8, 2016

This is a bit jargony. Expand/explain what an L3 subnet is?

@sanscontext
sanscontext Jun 8, 2016

Actually, I might reverse these two - assume that they have all ports blocked and that they have to open these minimal ones, but mention (maybe as a Tip) that we recommend all traffic be permitted.

@sanscontext sanscontext commented on an outdated diff Jun 8, 2016
docs/swarm/swarm-tutorial/tutorial-setup.md
+ * `manager1` : `192.168.99.100`
+ * `worker1` : `192.168.99.102`
+ * `worker2` : `192.168.99.100`
+
+
+* Docker recommends that every node in the cluster be on the same L3 subnet with
+all traffic permitted between nodes.
+
+ If security policies require you to restrict traffic, you must open the
+ following ports between nodes in the cluster:
+
+ * **TCP port 2377** for cluster management communications
+ * **TCP** and **UDP port 7946** for communication among nodes
+ * **TCP** and **UDP port 4789** for overlay network traffic
+
+After you have setup your environment, you're ready to [create a Swarm](create-swarm.md).
@sanscontext
sanscontext Jun 8, 2016

I actually missed this reading it live in my instance. Maybe add an H2 that says "What's next?"

@sanscontext sanscontext and 1 other commented on an outdated diff Jun 8, 2016
docs/swarm/swarm-tutorial/create-swarm.md
@@ -0,0 +1,76 @@
+<!--[metadata]>
++++
+title = "Create a Swarm"
+description = "Initialize the Swarm"
+keywords = ["tutorial, cluster management, swarm"]
+[menu.main]
+identifier="initialize-swarm"
+parent="swarm-tutorial"
+weight=12
++++
+<![end-metadata]-->
+
+## Create a Swarm
+
+After you install Docker on your networked machines and start the Docker Engine
@sanscontext
sanscontext Jun 8, 2016

This seems a bit weird to have prereqs here in prose. Let's make sure we explicitly tell them to start Docker Engine on the nodes in the previous file, and then we can just recap the prereqs here as a short bullet list.

@sfsmithcha
sfsmithcha Jun 8, 2016 Contributor

@sanscontext : Maybe so that we don't have the prereqs in a 3rd list , we can say "After you finish the tutorial setup?"

@sanscontext
sanscontext Jun 8, 2016

I think that's totally reasonable. (But yeah, we do have to tell them to make sure Engine is running. Probably as part of the prereqs)

@sanscontext sanscontext commented on an outdated diff Jun 8, 2016
docs/swarm/swarm-tutorial/create-swarm.md
+identifier="initialize-swarm"
+parent="swarm-tutorial"
+weight=12
++++
+<![end-metadata]-->
+
+## Create a Swarm
+
+After you install Docker on your networked machines and start the Docker Engine
+daemon, you're ready to create a Swarm. If you haven't already, read the through
+the [tutorial setup](tutorial-setup.md).
+
+1. Open a terminal and ssh into the machine where you want to run your manager
+node. For example, the tutorial uses a machine named `manager1`.
+
+2. To create a new Swarm, run the following command:
@sanscontext
sanscontext Jun 8, 2016

I'd make this imperative so you can combine the follow-on into one line:
"Create a swarm and initialize a new node by running command."

@sanscontext sanscontext and 1 other commented on an outdated diff Jun 8, 2016
docs/swarm/swarm-tutorial/add-nodes.md
+ ```
+ $ docker swarm join MANAGER-IP:PORT
+ ```
+
+ For example, to join the Swarm on `manager1` node for the tutorial:
+
+ ```
+ $ docker swarm join 192.168.99.100:2377
+
+ This node is attempting to join a Swarm.
+ ```
+
+3. Open a terminal and ssh into the machine where the manager node runs and run
+the `docker node ls` command to see the new worker node:
+
+ ```bashtext
@sanscontext
sanscontext Jun 8, 2016

This cue is making it render ignoring the code block frame on my machine. Not your fault, but weird nonetheless.

@sfsmithcha
sfsmithcha Jun 9, 2016 Contributor

@sanscontext , will render properly with updated skin. cue is to prevent it from mangling the font color (which might be less of an issue now the column title doesn't have an apostrophe.

@sanscontext sanscontext commented on an outdated diff Jun 8, 2016
docs/swarm/swarm-tutorial/add-nodes.md
+
+ ```bashtext
+ $ docker node ls
+
+ ID NAME STATUS AVAILABILITY/MEMBERSHIP MANAGER STATUS LEADER
+ 0biocneuj4h2 * manager1 READY ACTIVE REACHABLE Yes
+ 0e1viboabog2 worker1 READY ACTIVE
+ ```
+
+ The `MANAGER` column identifies the manager nodes in the Swarm. The empty
+ status in this column for `worker1` identifies it as a worker node.
+
+ Swarm management commands like `docker node ls` only work on manager nodes.
+
+4. Repeat these steps for your your second worker node: `worker2`. When you run
+`docker node ls` from your manager node, you can see all three nodes--one
@sanscontext
sanscontext Jun 8, 2016

I would split these. For step 4, reiterate the command. Then make a separate verification step where you look at the swarm membership.

@sanscontext sanscontext commented on an outdated diff Jun 8, 2016
docs/swarm/swarm-tutorial/deploy-service.md
+identifier="deploy-application"
+parent="swarm-tutorial"
+weight=16
++++
+<![end-metadata]-->
+
+## Deploy a service to the Swarm
+
+After you [create a Swarm](create-swarm.md), you can deploy a service to the
+Swarm. For this tutorial, you also [added worker nodes](add-nodes.md), but that
+is not a requirement to deploy a service.
+
+1. Open a terminal and ssh into the machine where you run your manager node. For
+example, the tutorial uses a machine named `manager1`.
+
+2. Using the `docker service create` command, you can do the following:
@sanscontext
sanscontext Jun 8, 2016 edited

You can do these things, but which of them should we be doing for this tutorial? If this is purely informational, we should consider either removing it, or reworking it so that you demonstrate it in the tutorial.

@aluzzardi aluzzardi and 1 other commented on an outdated diff Jun 9, 2016
docs/swarm/key-concepts.md
+`N/2` failures where `N` is the number of manager nodes. More than five
+managers is likely to degrade cluster performance and is not recommended.
+
+**Worker nodes** receive and execute tasks dispatched from manager nodes.
+
+### Services and tasks
+
+A **service** is the definition of how to run the various tasks that make up
+your application. For example, you may want to run a Redis service in your
+Swarm.
+
+A **task** is the atomic scheduling unit of Swarm. For example a task may be to
+schedule a Redis container to run on a worker node.
+
+
+### Scheduling
@aluzzardi
aluzzardi Jun 9, 2016 Contributor

Not sure if this should be phrased as "scheduling" or simply as "service types"

@sfsmithcha
sfsmithcha Jun 9, 2016 Contributor

@aluzzardi propposed update:

"""

Service types

Docker Swarm schedules service tasks on nodes in the Swarm based upon the service type:

Swarm distributes tasks for global services among nodes according to the number in the desired state for long-running, persistent services.

Swarm schedules tasks on every available node for replicated services.
"""

@HackToday
Contributor

Good to know to have swarmkit related docs here, would be helpful to understand what it relation between swarm and swarmkit and engine etc. As introduced many tools in docker world.

@thaJeztah thaJeztah and 1 other commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/add-nodes.md
+ $ docker swarm join 192.168.99.100:2377
+
+ This node joined a Swarm as a worker.
+ ```
+
+3. Open a terminal and ssh into the machine where you want to run a second
+worker node. This tutorial uses the name `worker2`.
+
+4. Run `docker swarm join MANAGER-IP:PORT` to create a worker node joined to
+the existing Swarm. Replace MANAGER-IP address of the manager node and the port
+where the manager listens.
+
+5. Open a terminal and ssh into the machine where the manager node runs and run
+the `docker node ls` command to see the worker nodes:
+
+ ```bashtext
@thaJeztah
thaJeztah Jun 13, 2016 Member

can you remove the bashtext? Looks like it doesn't really render properly;

screen shot 2016-06-13 at 15 57 31

@sfsmithcha
sfsmithcha Jun 13, 2016 Contributor

that is the old css, think it is ok in the new one. however, this a suggestion from @SvenDowideit to solve a problem where an apostrophe in the column title causes everything after it to print red. that problem has gone away so setting to bash appears to work.

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/deploy-service.md
+advisory = "rc"
++++
+<![end-metadata]-->
+
+## Deploy a service to the Swarm
+
+After you [create a Swarm](create-swarm.md), you can deploy a service to the
+Swarm. For this tutorial, you also [added worker nodes](add-nodes.md), but that
+is not a requirement to deploy a service.
+
+1. Open a terminal and ssh into the machine where you run your manager node. For
+example, the tutorial uses a machine named `manager1`.
+
+2. Run the the following command:
+
+ ```bashtext
@thaJeztah
thaJeztah Jun 13, 2016 Member

same here (bashtext)

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/inspect-service.md
+
+ ID: 2zs4helqu64f3k3iuwywbk49w
+ Name: helloworld
+ Mode: REPLICATED
+ Scale: 1
+ Placement:
+ Strategy: SPREAD
+ UpateConfig:
+ Parallelism: 1
+ ContainerSpec:
+ Image: alpine
+ Command: ping docker.com
+ ```
+
+>**Tip**: To return the service details in json format, run the same command
+without the `--pretty` flag.
@thaJeztah
thaJeztah Jun 13, 2016 Member

Perhaps the Tip needs to be indented as well, because the code block below now shows the "fences" (backticks);

screen shot 2016-06-13 at 15 59 17

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/inspect-service.md
+
+ In this case, the one instance of the `helloworld` service is running on the
+ `manager1` node. Manager nodes in a Swarm can execute tasks just like worker
+ nodes.
+
+ Swarm also shows you the `DESIRED STATE` and `LAST STATE` of the service
+ task so you can see if tasks are running according to the service
+ definition.
+
+4. Run `docker ps` on the node where the instance of the service is running to
+see the service container.
+
+>**Tip**: If `helloworld` is running on a node other than your manager node, you
+must ssh to that node.
+
+ ```bashtext
@thaJeztah
thaJeztah Jun 13, 2016 Member

Looks like this line is indented too much; either keep the indent and remove the "fence", or reduce indentation with four spaces. Also, please remove the bashtext code-hint;

screen shot 2016-06-13 at 16 01 27

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/scale-service.md
+<![end-metadata]-->
+
+## Scale the service in the Swarm
+
+Once you have [deployed a service](deploy-service.md) to a Swarm, you are ready
+to use the Docker CLI to scale the number of service tasks in
+the Swarm.
+
+1. If you haven't already, open a terminal and ssh into the machine where you
+run your manager node. For example, the tutorial uses a machine named
+`manager1`.
+
+2. Run the following command to change the desired state of the
+service runing in the Swarm:
+
+ ```bashtext
@thaJeztah
thaJeztah Jun 13, 2016 Member

can you remove the bashtext here

@thaJeztah
thaJeztah Jun 13, 2016 Member

should be bash for this example

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/scale-service.md
+
+1. If you haven't already, open a terminal and ssh into the machine where you
+run your manager node. For example, the tutorial uses a machine named
+`manager1`.
+
+2. Run the following command to change the desired state of the
+service runing in the Swarm:
+
+ ```bashtext
+ $ docker service update --scale NUMBER-OF-TASKS SERVICE-ID
+ ```
+
+ The `--scale` flag indicates the number of tasks you want in the new desired
+ state. For example:
+
+ ```bashtext
@thaJeztah
thaJeztah Jun 13, 2016 Member

same here

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/rolling-update.md
+<![end-metadata]-->
+
+## Apply rolling updates to a service
+
+In a previous step of the tutorial, you [scaled](scale-service.md) the number of
+instances of a service. In this part of the tutorial, you deploy a new Redis
+service and upgrade the service using rolling updates.
+
+1. If you haven't already, open a terminal and ssh into the machine where you
+run your manager node. For example, the tutorial uses a machine named
+`manager1`.
+
+2. Deploy Redis 3.0.6 to all nodes in the Swarm and configure
+the swarm to update one node every 10 seconds:
+
+ ```bashtext
@thaJeztah
thaJeztah Jun 13, 2016 Member

same here (bashtext)

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/rolling-update.md
+ Name: redis
+ Mode: REPLICATED
+ Scale: 3
+ Placement:
+ Strategy: SPREAD
+ UpateConfig:
+ Parallelism: 1
+ Delay: 10s
+ ContainerSpec:
+ Image: redis:3.0.6
+ ```
+
+4. Now you can update the container image for `redis`. Swarm applies the update
+to nodes according to the `UpdateConfig` policy:
+
+ ```bashtext
@thaJeztah
thaJeztah Jun 13, 2016 Member

and here

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/add-nodes.md
@@ -0,0 +1,64 @@
+<!--[metadata]>
++++
+title = "Add nodes to the Swarm"
+description = "Add nodes to the Swarm"
+keywords = ["tutorial, cluster management, swarm"]
+[menu.main]
+identifier="add-nodes"
+parent="swarm-tutorial"
+weight=13
+advisory = "rc"
++++
+<![end-metadata]-->
+
+## Add nodes to the Swarm
@thaJeztah
thaJeztah Jun 13, 2016 Member

This should be a H1 (#)

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/create-swarm.md
@@ -0,0 +1,77 @@
+<!--[metadata]>
++++
+title = "Create a Swarm"
+description = "Initialize the Swarm"
+keywords = ["tutorial, cluster management, swarm"]
+[menu.main]
+identifier="initialize-swarm"
+parent="swarm-tutorial"
+weight=12
+advisory = "rc"
++++
+<![end-metadata]-->
+
+## Create a Swarm
@thaJeztah
thaJeztah Jun 13, 2016 Member

This should be a H1 (#)

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/delete-service.md
@@ -0,0 +1,44 @@
+<!--[metadata]>
++++
+title = "Delete the service"
+description = "Remove the service on the Swarm"
+keywords = ["tutorial, cluster management, swarm, service"]
+[menu.main]
+identifier="swarm-tutorial-delete-service"
+parent="swarm-tutorial"
+weight=19
+advisory = "rc"
++++
+<![end-metadata]-->
+
+## Delete the service running on the Swarm
@thaJeztah
thaJeztah Jun 13, 2016 Member

This should be a H1 (#)

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/deploy-service.md
@@ -0,0 +1,50 @@
+<!--[metadata]>
++++
+title = "Deploy a service"
+description = "Deploy the application"
+keywords = ["tutorial, cluster management, swarm"]
+[menu.main]
+identifier="deploy-application"
+parent="swarm-tutorial"
+weight=16
+advisory = "rc"
++++
+<![end-metadata]-->
+
+## Deploy a service to the Swarm
@thaJeztah
thaJeztah Jun 13, 2016 Member

This should be a H1 (#)

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/drain-node.md
@@ -0,0 +1,129 @@
+<!--[metadata]>
++++
+title = "Drain a node"
+description = "Drain nodes on the Swarm"
+keywords = ["tutorial, cluster management, swarm, service, drain"]
+[menu.main]
+identifier="swarm-tutorial-drain-node"
+parent="swarm-tutorial"
+weight=21
++++
+<![end-metadata]-->
+
+## Drain a node on the Swarm
@thaJeztah
thaJeztah Jun 13, 2016 Member

This should be a H1 (#)

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/index.md
@@ -0,0 +1,87 @@
+<!--[metadata]>
++++
+title = "Set up for the tutorial"
+description = "Getting Started tutorial for Docker Swarm"
+keywords = ["tutorial, cluster management, swarm"]
+[menu.main]
+identifier="tutorial-setup"
+parent="swarm-tutorial"
+weight=11
+advisory = "rc"
++++
+<![end-metadata]-->
+
+## Getting Started with Docker Swarm
@thaJeztah
thaJeztah Jun 13, 2016 Member

This should be a H1 (#)

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/inspect-service.md
@@ -0,0 +1,124 @@
+<!--[metadata]>
++++
+title = "Inspect the service"
+description = "Inspect the application"
+keywords = ["tutorial, cluster management, swarm"]
+[menu.main]
+identifier="inspect-application"
+parent="swarm-tutorial"
+weight=17
+advisory = "rc"
++++
+<![end-metadata]-->
+
+## Inspect a service on the Swarm
@thaJeztah
thaJeztah Jun 13, 2016 Member

This should be a H1 (#)

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/rolling-update.md
@@ -0,0 +1,105 @@
+<!--[metadata]>
++++
+title = "Apply rolling updates"
+description = "Apply rolling updates to a service on the Swarm"
+keywords = ["tutorial, cluster management, swarm, service, rolling-update"]
+[menu.main]
+identifier="swarm-tutorial-rolling-update"
+parent="swarm-tutorial"
+weight=20
+advisory = "rc"
++++
+<![end-metadata]-->
+
+## Apply rolling updates to a service
@thaJeztah
thaJeztah Jun 13, 2016 Member

This should be a H1 (#)

@thaJeztah thaJeztah commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/scale-service.md
@@ -0,0 +1,75 @@
+<!--[metadata]>
++++
+title = "Scale the service"
+description = "Scale the service running in the Swarm"
+keywords = ["tutorial, cluster management, swarm, scale"]
+[menu.main]
+identifier="swarm-tutorial-scale-service"
+parent="swarm-tutorial"
+weight=18
+advisory = "rc"
++++
+<![end-metadata]-->
+
+## Scale the service in the Swarm
@thaJeztah
thaJeztah Jun 13, 2016 Member

This should be a H1 (#)

@mlaventure mlaventure commented on an outdated diff Jun 13, 2016
docs/swarm/swarm-tutorial/add-nodes.md
+the `docker node ls` command to see the new worker node:
+
+ ```bashtext
+ $ docker node ls
+
+ ID NAME STATUS AVAILABILITY/MEMBERSHIP MANAGER STATUS LEADER
+ 0biocneuj4h2 * manager1 READY ACTIVE REACHABLE Yes
+ 0e1viboabog2 worker1 READY ACTIVE
+ ```
+
+ The `MANAGER` column identifies the manager nodes in the Swarm. The empty
+ status in this column for `worker1` identifies it as a worker node.
+
+ Swarm management commands like `docker node ls` only work on manager nodes.
+
+4. Repeat these steps for your your second worker node: `worker2`. When you run
@mlaventure
mlaventure Jun 13, 2016 Contributor

There's an extra your here.

@sfsmithcha sfsmithcha add tutorial
Signed-off-by: Charles Smith <charles.smith@docker.com>
607a7ea
@icecrime
Member

LGTM 👍 Merging as this is going into swarm branch for now.

@icecrime icecrime merged commit 8a378f2 into docker:swarm Jun 14, 2016

2 checks passed

docker/dco-signed All commits signed
Details
documentation success
Details
@sfsmithcha sfsmithcha deleted the sfsmithcha:swarm-docs branch Jul 12, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment