From b88cb64358908b8e0c3fddd402d23088ed633ef9 Mon Sep 17 00:00:00 2001 From: Rolfe Dlugy-Hegwer Date: Mon, 1 Feb 2016 23:57:30 -0500 Subject: [PATCH] new content for install-on-aws and images for other topics Issues #1606 #1605 Signed-off-by: Rolfe Dlugy-Hegwer --- docs/images/virtual-box.png | Bin 107054 -> 0 bytes docs/install-manual.md | 327 ++++++++++++++++++--------------- docs/install-w-machine.md | 295 +++++++++++++---------------- docs/overview.md | 2 +- docs/plan-for-production.md | 2 +- docs/provision-with-machine.md | 4 +- docs/secure-swarm-tls.md | 2 +- docs/swarm_at_scale.md | 4 +- 8 files changed, 311 insertions(+), 325 deletions(-) delete mode 100644 docs/images/virtual-box.png diff --git a/docs/images/virtual-box.png b/docs/images/virtual-box.png deleted file mode 100644 index e0e099ef2128abf2dfbdc0c718f1f9f35317cc01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107054 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

)7yKR`@d+hsk!08=>qLP8b~n;4!wd-hpRy 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�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 +++ -title = "Create a swarm for development" -description = "Swarm: a Docker-native clustering system" -keywords = ["docker, swarm, clustering"] +title = "Build a Swarm cluster for production" +description = "Deploying Swarm on AWS EC2 AMI's in a VPC" +keywords = ["docker, swarm, clustering, examples, Amazon, AWS EC2"] [menu.main] parent="workw_swarm" +weight=-40 +++ -# Create a swarm for development -This section tells you how to create a Docker Swarm on your network to use only for debugging, testing, or development purposes. You can also use this type of installation if you are developing custom applications for Docker Swarm or contributing to it. +# Build a Swarm cluster for production -> **Caution**: Only use this set up if your network environment is secured by a firewall or other measures. +This example shows you how to deploy a high-availability Docker Swarm cluster. Although this example uses the Amazon Web Services (AWS) platform, you can deploy an equivalent Docker Swarm cluster on many other platforms. + +The Swarm cluster will contain three types of nodes: +- Swarm manager +- Swarm node (aka Swarm agent) +- Discovery backend node running consul + +This example will take you through the following steps: You establish basic network security by creating a security group that restricts inbound traffic by port number, type, and origin. Then, you create four hosts on your network by launching Elastic Cloud (EC2) instances, applying the appropriate security group to each one, and installing Docker Engine on each one. You create a discovery backend by running an consul container on one of the hosts. You create the Swarm cluster by running two Swarm managers in a high-availability configuration. One of the Swarm managers shares a host with consul. Then you run two Swarm nodes. You communicate with the Swarm via the primary manager, running a simple hello world application and then checking which node ran the application. To finish, you test high-availability by making one of Swarm managers fail and checking the status of the managers. + +For a gentler introduction to Swarm, try the [Evaluate Swarm in a sandbox](install-w-machine) page. + + ## Prerequisites -You install Docker Swarm on a single system which is known as your Docker Swarm -manager. You create the cluster, or swarm, on one or more additional nodes on -your network. Each node in your swarm must: +- An Amazon Web Services (AWS) account +- Familiarity with AWS features and tools, such as: + - Elastic Cloud (EC2) Dashboard + - Virtual Private Cloud (VPC) Dashboard + - VPC Security groups + - Connecting to an EC2 instance using SSH -* be accessible by the swarm manager across your network -* have Docker Engine 1.6.0+ installed -* open a TCP port to listen for the manager -* *do not* install on a VM or from an image created through cloning +## Update the network security rules -Docker generates a unique ID for the Engine that is located in the -`/etc/docker/key.json` file. If a VM is cloned from an instance where a -Docker daemon was previously pre-installed, Swarm will be unable to differentiate -among the remote Docker engines. This is because the cloning process copied the -the identical ID to each image and the ID is no longer unique. +AWS uses a "security group" to allow specific types of network traffic on your VPC network. The **default** security group's initial set of rules deny all inbound traffic, allow all outbound traffic, and allow all traffic between instances. You're going to add a couple of rules to allow inbound SSH connections and inbound container images. This set of rules somewhat protects the Engine, Swarm, and Consul ports. For a production environment, you would apply more restrictive security measures. Do not leave Docker Engine ports unprotected. -If you forget this restriction and create a node anyway, Swarm displays a single -Docker engine as registered. To workaround this problem, you can generate a new -ID for each node with affected by this issue. To do this stop the daemon on a node, -delete its `/etc/docker/key.json` file, and restart the daemon. +From your AWS home console, click **VPC - Isolated Cloud Resources**. Then, in the VPC Dashboard that opens, navigate to **Security Groups**. Select the **default** security group that's associated with your default VPC and add the following two rules. (The **Allows** column is just for your reference.) -If you use `ssh` to start the Engine `daemon`, make sure the daemon runs in the -background. You can do this using `disown` or `nohup` in combination with the `&` -(ampersand). Or you could launch the `daemon` through `systemd` or any other -Linux-distribution-specific method. Regardless of which launch method you -choose, make sure the daemon process does not stop when your session on a node -ends. - -You can run Docker Swarm on Linux 64-bit architectures. You can also install and -run it on 64-bit Windows and Max OSX but these architectures are *not* regularly -tested for compatibility. - -Take a moment and identify the systems on your network that you intend to use. -Ensure each node meets the requirements listed above. - -## Pull the swarm image and create a cluster. - -The easiest way to get started with Swarm is to use the -[official Docker image](https://registry.hub.docker.com/_/swarm/). - -1. Pull the swarm image. - - $ docker pull swarm - -1. Create a Swarm cluster using the `docker` command. - - $ docker run --rm swarm create - 6856663cdefdec325839a4b7e1de38e8 # - - The `create` command returns a unique cluster ID (`cluster_id`). You'll need - this ID when starting the Docker Swarm agent on a node. - -## Create swarm nodes - -Each Swarm node will run a Swarm node agent. The agent registers the referenced -Docker daemon, monitors it, and updates the discovery backend with the node's status. - -This example uses the Docker Hub based `token` discovery service (only for testing/dev, not for production). -Log into **each node** and do the following. - -1. Start the Docker daemon with the `-H` flag. This ensures that the -Docker remote API on *Swarm Agents* is available over TCP for the -*Swarm Manager*, as well as the standard unix socket which is -available in default docker installs. - - $ docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock - - > **Note**: versions of docker prior to 1.8 used the `-d` flag instead of the `docker daemon` subcommand. - -2. Register the Swarm agents to the discovery service. The node's IP must be accessible from the Swarm Manager. Use the following command and replace with the proper `node_ip` and `cluster_id` to start an agent: - - docker run -d swarm join --addr= token:// - - For example: - - $ docker run -d swarm join --addr=172.31.40.100:2375 token://6856663cdefdec325839a4b7e1de38e8 - -## Configure a manager - -Once you have your nodes established, set up a manager to control the swarm. - -1. Start the Swarm manager on any machine or your laptop. - - The following command illustrates how to do this: - - docker run -d -p :2375 swarm manage token:// - - The manager is exposed and listening on ``. - -2. Once the manager is running, check your configuration by running `docker info` as follows: - - docker -H tcp:// info - - For example, if you run the manager locally on your machine: - - $ docker -H tcp://0.0.0.0:2375 info - Containers: 0 - Nodes: 3 - agent-2: 172.31.40.102:2375 - └ Containers: 0 - └ Reserved CPUs: 0 / 1 - └ Reserved Memory: 0 B / 514.5 MiB - agent-1: 172.31.40.101:2375 - └ Containers: 0 - └ Reserved CPUs: 0 / 1 - └ Reserved Memory: 0 B / 514.5 MiB - agent-0: 172.31.40.100:2375 - └ Containers: 0 - └ Reserved CPUs: 0 / 1 - └ Reserved Memory: 0 B / 514.5 MiB - - If you are running a test cluster without TLS enabled, you may get an error. - In that case, be sure to unset `DOCKER_TLS_VERIFY` with: - - $ unset DOCKER_TLS_VERIFY - -## Using the docker CLI - -You can now use the regular Docker CLI to access your nodes: - - docker -H tcp:// info - docker -H tcp:// run ... - docker -H tcp:// ps - docker -H tcp:// logs ... +| Type | Protocol | Port Range | Source | Allows | +| -------------- | ----- | ----- | ----- | ----- | +| SSH | TCP | 22 | 0.0.0.0/0 | SSH connection | +| HTTP | TCP | 80 | 0.0.0.0/0 | Container images | -## List nodes in your cluster +## Create your hosts -You can get a list of all your running nodes using the `swarm list` command: +Here, you create five Linux hosts that are part of the "Docker Swarm Example" security group. - docker run --rm swarm list token:// - +Open the EC2 Dashboard and launch four EC2 instances, one at a time: +- During **Step 1: Choose an Amazon Machine Image (AMI)**, pick the *Amazon Linux AMI*. + +- During **Step 5: Tag Instance**, under **Value**, give each instance one of these names: + - manager0 & consul0 + - manager1 + - node0 + - node1 + +- During **Step 6: Configure Security Group**, choose **Select an existing security group** and pick the "default" security group. + +Review and launch your instances. + +## Install Docker Engine on each instance + +Connect to each instance using SSH and install Docker Engine. + +Update the yum packages, and keep an eye out for the "y/n/abort" prompt: + + $ sudo yum update + +Run the installation script: + + $ curl -sSL https://get.docker.com/ | sh + +Configure and start Docker Engine so it listens for Swarm nodes on port 2375 : + + $ sudo docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock + +Verify that Docker Engine is installed correctly: + + $ sudo docker run hello-world + +The output should display a "Hello World" message and other text without any error messages. + +Give the ec2-user root privileges: + + sudo usermod -aG docker ec2-user + + Then, enter `logout`. + +> Troubleshooting: If entering a `docker` command produces a message asking whether docker is available on this host, it may be because the user doesn't have root privileges. If so, use `sudo` or give the user root privileges. +> For this example, don't create an AMI image from one of your instances running Docker Engine and then re-use it to create the other instances. Doing so will produce errors. +> Troubleshooting: If your host cannot reach Docker Hub, the `docker run` commands that pull container images may fail. In that case, check that your VPC is associated with a security group with a rule that allows inbound traffic (e.g., HTTP/TCP/80/0.0.0.0/0). Also Check +the [Docker Hub status page](http://status.docker.com/) for service +availability. + +## Set up an consul discovery backend + +Here, you're going to create a minimalist discovery backend. The Swarm managers and nodes use this backend to authenticate themselves as members of the cluster. The Swarm managers also use this information to identify which nodes are available to run containers. + +To keep things simple, you are going to run a single consul daemon on the same host as one of the Swarm managers. + +To start, copy the following launch command to a text file. + + $ docker run -d -p 8500:8500 —name=consul progrium/consul -server -bootstrap + +Then, use SSH to connect to the "manager0 & consul0" instance. At the command line, enter `ifconfig`. From the output, copy the `eth0` IP address from `inet addr`. + +Using SSH, connect to the "manager0 & etc0" instance. Copy the launch command from the text file and paste it into the command line. + +Your consul node is up and running, providing your cluster with a discovery backend. To increase its reliability, you can create a high-availability cluster using a trio of consul nodes using the link mentioned at the end of this page. (Before creating a cluster of console nodes, update the VPC security group with rules to allow inbound traffic on the required port numbers.) + +## Create a high-availability Swarm cluster + +After creating the discovery backend, you can create the Swarm managers. Here, you are going to create two Swarm managers in a high-availability configuration. The first manager you run becomes the Swarm's *primary manager*. Some documentation still refers to a primary manager as a "master", but that term has been superseded. The second manager you run serves as a *replica*. If the primary manager becomes unavailable, the cluster elects the replica as the primary manager. + +To create the primary manager in a high-availability Swarm cluster, use the following syntax: + + $ docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise :4000 consul:// + +Because this is particular manager is on the same "manager0 & consul0" instance as the consul node, replace both `` and `` with the same IP address. For example: + + $ docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise 172.30.0.161:4000 consul://172.30.0.161:8500 + +Enter `docker ps`. From the output, verify that both a swarm and an consul container are running. Then, disconnect from the "manager0 & consul0" instance. + +Connect to the "manager1" instance and use `ifconfig` to get its IP address. Then, enter the following command, replacing ``. For example: + + $ docker run -d swarm manage -H :4000 --replication --advertise :4000 consul://172.30.0.161:8500 + +Enter `docker ps` and, from the output, verify that a swarm container is running. + +Now, connect to each of the "node0" and "node1" instances, get their IP addresses, and run a Swarm node on each one using the following syntax: + + $ docker run -d swarm join --advertise=:2375 consul://:8500 For example: - $ docker run --rm swarm list token://6856663cdefdec325839a4b7e1de38e8 - 172.31.40.100:2375 - 172.31.40.101:2375 - 172.31.40.102:2375 - -## TLS - -Swarm supports TLS authentication between the CLI and Swarm but also between -Swarm and the Docker nodes. _However_, all the Docker daemon certificates and client -certificates **must** be signed using the same CA-certificate. - -In order to enable TLS for both client and server, the same command line options -as Docker can be specified: + $ docker run -d swarm join --advertise=172.30.0.69:2375 consul://172.30.0.161:8500 - swarm manage --tlsverify --tlscacert= --tlscert= --tlskey= [...] +Your small Swarm cluster is up and running on multiple hosts, providing you with a high-availability virtual Docker Engine. To increase its reliability and capacity, you can add more Swarm managers, nodes, and a high-availability discovery backend. +## Communicate with the Swarm -Please refer to the [Docker documentation](https://docs.docker.com/articles/https/) -for more information on how to set up TLS authentication on Docker and generating -the certificates. +You can communicate with the Swarm to get information about the managers and nodes using the Swarm API, which is nearly the same as the standard Docker API. +In this example, you use SSL to connect to "manager0 & etc0" host again. Then, you address commands to the Swarm manager. -> **Note**: Swarm certificates must be generated with `extendedKeyUsage = clientAuth,serverAuth`. +Get information about the master and nodes in the cluster: + + $ docker -H :4000 info + +The output gives the manager's role as primary (`Role: primary`) and information about each of the nodes. + +Now run an application on the Swarm: + + $ docker -H :4000 run hello-world + +Check which Swarm node ran the application: + + $ docker -H :4000 ps + +## Test the high-availability Swarm managers + +To see the replica instance take over, you're going to shut down the primary manager. Doing so kicks off an election, and the replica becomes the primary manager. When you start the manager you shut down earlier, it becomes the replica. + +Using an SSH connection to the "manager0 & etc0" instance, get the container id or name of the swarm container: + + $ docker ps + +Shut down the primary master, replacing `` with the container id or name (e.g., "8862717fe6d3" or "trusting_lamarr"). + + $ docker rm -f + +Start the swarm master. For example: + + $ docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise 172.30.0.161:4000 consul://172.30.0.161:237 + +Look at the logs, replacing `` with the new container id or name: + + $ sudo docker logs + +The output shows will show two entries like these ones: + + time="2016-02-02T02:12:32Z" level=info msg="Leader Election: Cluster leadership lost" + time="2016-02-02T02:12:32Z" level=info msg="New leader elected: 172.30.0.160:4000" + +To get information about the master and nodes in the cluster, enter: + + $ docker -H :4000 info + +You can connect to the "master1" node and run the `info` and `logs` commands. They will display corresponding entries for the change in leadership. + +## Additional Resources + +- Installing Docker Engine + - [Example: Manual install on a cloud provider](http://docs.docker.com/engine/installation/cloud/cloud-ex-aws/) +- Docker Swarm + - [Docker Swarm 1.0 with Multi-host Networking: Manual Setup](http://goelzer.com/blog/2015/12/29/docker-swarmoverlay-networks-manual-method/) + - [High availability in Docker Swarm](multi-manager-setup/) + - [Discovery](discovery/) +- consul Discovery Backend + - [high-availability cluster using a trio of consul nodes](https://hub.docker.com/r/progrium/consul/) +- Networking + - [Networking](https://docs.docker.com/swarm/networking/) diff --git a/docs/install-w-machine.md b/docs/install-w-machine.md index a3ea38e72f..f9c725a9da 100644 --- a/docs/install-w-machine.md +++ b/docs/install-w-machine.md @@ -1,236 +1,189 @@ -# Install and Create a Docker Swarm +# Evaluate Swarm in a sandbox -You use Docker Swarm to host and schedule a cluster of Docker containers. This section introduces you to Docker Swarm by teaching you how to create a swarm -on your local machine using Docker Machine and VirtualBox. +This getting started example shows you how to create a Docker Swarm, the +native clustering tool for Docker. -## Prerequisites +You'll use Docker Toolbox to install Docker Machine and some other tools on your computer. Then you'll use Docker Machine to provision a set of Docker Engine hosts. Lastly, you'll use Docker client to connect to the hosts, where you'll create a discovery token, create a cluster of one Swarm manager and nodes, and manage the cluster. -Make sure your local system has VirtualBox installed. If you are using Mac OS X -or Windows and have installed Docker, you should have VirtualBox already -installed. +When you finish, you'll have a Docker Swarm up and running in VirtualBox on your +local Mac or Windows computer. You can use this Swarm as personal development +sandbox. -Using the instructions appropriate to your system architecture, [install Docker -Machine](http://docs.docker.com/machine/install-machine). +To use Docker Swarm on Linux, see [Build a Swarm cluster for production](install-manual.md). -## Create a Docker Swarm +## Install Docker Toolbox -Docker Machine gets hosts ready to run Docker containers. Each node in your -Docker Swarm must have access to Docker to pull images and run them in -containers. Docker Machine manages all this provisioning for your swarm. +Download and install [Docker Toolbox](https://www.docker.com/docker-toolbox). -Before you create a swarm with `docker-machine`, you associate each -node with a discovery service. This example uses the token discovery -service hosted by Docker Hub (only for testing/dev, not for production). -This discovery service associates a token with instances of the Docker -Daemon running on each node. Other discovery service backends such as -`etcd`, `consul`, and `zookeeper` are [available](discovery.md). +The toolbox installs a handful of tools on your local Windows or Mac OS X computer. In this exercise, you use three of those tools: -1. List the machines on your system. + - Docker Machine: To deploy virtual machines that run Docker Engine. + - VirtualBox: To host the virtual machines deployed from Docker Machine. + - Docker Client: To connect from your local computer to the Docker Engines on the VMs and issue docker commands to create the Swarm. + +The following sections provide more information on each of these tools. The rest of the document uses the abbreviation, VM, for virtual machine. + +## Create three VMs running Docker Engine + +Here, you use Docker Machine to provision three VMs running Docker Engine. + +1. Open a terminal on your computer. Use Docker Machine to list any VMs in VirtualBox. $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM - docker-vm * virtualbox Running tcp://192.168.99.100:2376 + default * virtualbox Running tcp://192.168.99.100:2376 - This example was run a Mac OSX system with Docker Toolbox installed. So, the - `docker-vm` virtual machine is in the list. +2. Optional: To conserve system resources, stop any virtual machines you are not using. For example, to stop the VM named `default`, enter: -2. Create a VirtualBox machine called `local` on your system. + $ docker-machine stop default - $ docker-machine create -d virtualbox local - INFO[0000] Creating SSH key... - INFO[0000] Creating VirtualBox VM... - INFO[0005] Starting VirtualBox VM... - INFO[0005] Waiting for VM to start... - INFO[0050] "local" has been created and is now the active machine. - INFO[0050] To point your Docker client at it, run this in your shell: eval "$(docker-machine env local)" +3. Create and run a VM named `manager`. -3. Load the `local` machine configuration into your shell. + $ docker-machine create -d virtualbox manager - $ eval "$(docker-machine env local)" +4. Create and run a VM named `agent1`. -4. Generate a discovery token using the Docker Swarm image. + $ docker-machine create -d virtualbox agent1 - The command below runs the `swarm create` command in a container. If you - haven't got the `swarm:latest` image on your local machine, Docker pulls it - for you. +5. Create and run a VM named `agent2`. - $ docker run swarm create - Unable to find image 'swarm:latest' locally - latest: Pulling from swarm - de939d6ed512: Pull complete - 79195899a8a4: Pull complete - 79ad4f2cc8e0: Pull complete - 0db1696be81b: Pull complete - ae3b6728155e: Pull complete - 57ec2f5f3e06: Pull complete - 73504b2882a3: Already exists - swarm:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security. - Digest: sha256:aaaf6c18b8be01a75099cc554b4fb372b8ec677ae81764dcdf85470279a61d6f - Status: Downloaded newer image for swarm:latest - fe0cc96a72cf04dba8c1c4aa79536ec3 - - The `swarm create` command returned the `fe0cc96a72cf04dba8c1c4aa79536ec3` - token. - - **Note**: This command relies on Docker Swarm's hosted discovery service. If - this service is having issues, this command may fail. In this case, see - information on using other types of [discovery backends](./discovery). Check - the [status page](http://status.docker.com/) for service availability. - -5. Save the token in a safe place. - - You'll use this token in the next step to create a Docker Swarm. + $ docker-machine create -d virtualbox agent2 -## Launch the Swarm manager +Each create command checks for a local copy of the *latest* VM image, called boot2docker.iso. If it isn't available, Docker Machine downloads the image from Docker Hub. Then, Docker Machine uses boot2docker.iso to create a VM that automatically runs Docker Engine. -A single system in your network is known as your Docker Swarm manager. The swarm -manager orchestrates and schedules containers on the entire cluster. The swarm -manager rules a set of agents (also called nodes or Docker nodes). +> Troubleshooting: If your computer or hosts cannot reach Docker Hub, the +`docker-machine` or `docker run` commands that pull images may fail. In that +case, check the [Docker Hub status page](http://status.docker.com/) for +service availability. Then, check whether your computer is connected to the Internet. Finally, check whether VirtualBox's network settings allow your hosts to connect to the Internet. -Swarm agents are responsible for hosting containers. They are regular docker -daemons and you can communicate with them using the Docker remote API. +## Create a Swarm discovery token -In this section, you create a swarm manager and two nodes. +Here you use the discovery backend hosted on Docker Hub to create a unique discovery token for your cluster. This discovery backend is only for low-volume development and testing purposes, not for production. Later on, when you run the Swarm manager and nodes, they register with the discovery backend as members of the cluster that's associated with the unique token. The discovery backend maintains an up-to-date list of cluster members and shares that list with the Swarm manager. The Swarm manager uses this list to assign tasks to the nodes. -1. Create a swarm manager under VirtualBox. +1. Connect the Docker Client on your computer to the Docker Engine running on `manager`. - docker-machine create \ - -d virtualbox \ - --swarm \ - --swarm-master \ - --swarm-discovery token:// \ - swarm-master + $ eval $(docker-machine env manager) - For example: + The client will send the `docker` commands in the following steps to the Docker Engine on on `manager`. - $ docker-machine create -d virtualbox --swarm --swarm-master --swarm-discovery token://fe0cc96a72cf04dba8c1c4aa79536ec3 swarm-master - INFO[0000] Creating SSH key... - INFO[0000] Creating VirtualBox VM... - INFO[0005] Starting VirtualBox VM... - INFO[0005] Waiting for VM to start... - INFO[0060] "swarm-master" has been created and is now the active machine. - INFO[0060] To point your Docker client at it, run this in your shell: eval "$(docker-machine env swarm-master)" +2. Create a unique id for the Swarm cluster. -2. Open your VirtualBox Manager, it should contain the `local` machine and the -new `swarm-master` machine. + $ docker run --rm swarm create + . + . + . + Status: Downloaded newer image for swarm:latest + 0ac50ef75c9739f5bfeeaf00503d4e6e - ![VirtualBox](images/virtual-box.png) + The `docker run` command gets the latest `swarm` image and runs it as a container. The `create` argument makes the Swarm container connect to the Docker Hub discovery service and get a unique Swarm ID, also known as a "discovery token". The token appears in the output, it is not saved to a file on the host. The `--rm` option automatically cleans up the container and removes the file system when the container exits. -3. Create a swarm node. + The discovery service keeps unused tokens for approximately one week. - docker-machine create \ - -d virtualbox \ - --swarm \ - --swarm-discovery token:// \ - swarm-agent-00 +3. Copy the discovery token from the last line of the previous output to a safe place. - For example: +## Create the Swarm manager and nodes - $ docker-machine create -d virtualbox --swarm --swarm-discovery token://fe0cc96a72cf04dba8c1c4aa79536ec3 swarm-agent-00 - INFO[0000] Creating SSH key... - INFO[0000] Creating VirtualBox VM... - INFO[0005] Starting VirtualBox VM... - INFO[0006] Waiting for VM to start... - INFO[0066] "swarm-agent-00" has been created and is now the active machine. - INFO[0066] To point your Docker client at it, run this in your shell: eval "$(docker-machine env swarm-agent-00)" +Here, you connect to each of the hosts and create a Swarm manager or node. -3. Add another agent called `swarm-agent-01`. +1. Get the IP addresses of the three VMs. For example: - $ docker-machine create -d virtualbox --swarm --swarm-discovery token://fe0cc96a72cf04dba8c1c4aa79536ec3 swarm-agent-01 - - You should see the two agents in your VirtualBox Manager. - -## Direct your swarm - -In this step, you connect to the swarm machine, display information related to -your swarm, and start an image on your swarm. + $ docker-machine ls + NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS + agent1 - virtualbox Running tcp://192.168.99.102:2376 v1.9.1 + agent2 - virtualbox Running tcp://192.168.99.103:2376 v1.9.1 + manager * virtualbox Running tcp://192.168.99.100:2376 v1.9.1 -1. Point your Docker environment to the machine running the swarm master. +2. Your client should still be pointing to Docker Engine on `manager`. Use the following syntax to run a Swarm container as the primary Swarm manager on `manager`. - $ eval $(docker-machine env --swarm swarm-master) + $ docker run -d -p :2375 -t swarm manage token:// > + For example: -2. Get information on your new swarm using the `docker` command. + $ docker run -d -p 2375:2375 -t swarm manage token://0ac50ef75c9739f5bfeeaf00503d4e6e - $ docker info - Containers: 4 - Strategy: spread - Filters: affinity, health, constraint, port, dependency - Nodes: 3 - swarm-agent-00: 192.168.99.105:2376 - └ Containers: 1 - └ Reserved CPUs: 0 / 8 - └ Reserved Memory: 0 B / 1.023 GiB - swarm-agent-01: 192.168.99.106:2376 - └ Containers: 1 - └ Reserved CPUs: 0 / 8 - └ Reserved Memory: 0 B / 1.023 GiB - swarm-master: 192.168.99.104:2376 - └ Containers: 2 - └ Reserved CPUs: 0 / 8 + The -p option maps a port on the container to a port on the host. - You can see that each agent and the master all have port `2376` exposed. When you create a swarm, you can use any port you like and even different ports on different nodes. Each swarm node runs the swarm agent container. +3. Connect Docker Client to `agent1`. - The master is running both the swarm manager and a swarm agent container. This isn't recommended in a production environment because it can cause problems with agent failover. However, it is perfectly fine to do this in a learning environment like this one. + $ eval $(docker-machine env agent1) -3. Check the images currently running on your swarm. +4. Use the following syntax to run a Swarm container as an agent on `agent1`. Replace with the IP address of the VM. - $ docker ps -a - CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES - 78be991b58d1 swarm:latest "/swarm join --addr 3 minutes ago Up 2 minutes 2375/tcp swarm-agent-01/swarm-agent - da5127e4f0f9 swarm:latest "/swarm join --addr 6 minutes ago Up 6 minutes 2375/tcp swarm-agent-00/swarm-agent - ef395f316c59 swarm:latest "/swarm join --addr 16 minutes ago Up 16 minutes 2375/tcp swarm-master/swarm-agent - 45821ca5208e swarm:latest "/swarm manage --tls 16 minutes ago Up 16 minutes 2375/tcp, 192.168.99.104:3376->3376/tcp swarm-master/swarm-agent-master + $ docker run -d swarm join --addr=: token:// -4. Run the Docker `hello-world` test image on your swarm. + For example: + $ docker run -d swarm join --addr=192.168.99.102:2375 token://0ac50ef75c9739f5bfeeaf00503d4e6e - $ docker run hello-world - Hello from Docker. - This message shows that your installation appears to be working correctly. +5. Connect Docker Client to `agent2`. - To generate this message, Docker took the following steps: - 1. The Docker client contacted the Docker daemon. - 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. - (Assuming it was not already locally available.) - 3. The Docker daemon created a new container from that image which runs the - executable that produces the output you are currently reading. - 4. The Docker daemon streamed that output to the Docker client, which sent it - to your terminal. + $ eval $(docker-machine env agent2) - To try something more ambitious, you can run an Ubuntu container with: - $ docker run -it ubuntu bash +6. Run a Swarm container as an agent on `agent2`. For example: - For more examples and ideas, visit: - http://docs.docker.com/userguide/ + $ docker run -d swarm join --addr=192.168.99.103:2375 token://0ac50ef75c9739f5bfeeaf00503d4e6e -5. Use the `docker ps` command to find out which node the container ran on. +## Manage your Swarm - $ docker ps -a - CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES - 54a8690043dd hello-world:latest "/hello" 22 seconds ago Exited (0) 3 seconds ago swarm-agent-00/modest_goodall - 78be991b58d1 swarm:latest "/swarm join --addr 5 minutes ago Up 4 minutes 2375/tcp swarm-agent-01/swarm-agent - da5127e4f0f9 swarm:latest "/swarm join --addr 8 minutes ago Up 8 minutes 2375/tcp swarm-agent-00/swarm-agent - ef395f316c59 swarm:latest "/swarm join --addr 18 minutes ago Up 18 minutes 2375/tcp swarm-master/swarm-agent - 45821ca5208e swarm:latest "/swarm manage --tls 18 minutes ago Up 18 minutes 2375/tcp, 192.168.99.104:3376->3376/tcp swarm-master/swarm-agent-master +Here, you connect to the cluster and review information about the Swarm manager and nodes. You tell the Swarm run a container and check which node did the work. +1. Connect the Docker Client to the Swarm. + + $ eval $(docker-machine env swarm) + + Because Docker Swarm uses the standard Docker API, you can connect to it using Docker Client and other tools such as Docker Compose, Dokku, Jenkins, and Krane, among others. + +2. Get information about the Swarm. + + $ docker info + + As you can see, the output displays information about the two agent nodes and the one manager node in the Swarm. + +3. Check the images currently running on your Swarm. + + $ docker ps + +4. Run a container on the Swarm. + + $ docker run hello-world + Hello from Docker. + . + . + . + +5. Use the `docker ps` command to find out which node the container ran on. For example: + + $ docker ps -a + CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES + 0b0628349187 hello-world "/hello" 20 minutes ago Exited (0) 20 minutes ago agent1 + . + . + . + + In this case, the Swarm ran 'hello-world' on the 'swarm1'. + + By default, Docker Swarm uses the "spread" strategy to choose which node runs a container. When you run multiple containers, the spread strategy assigns each container to the node with the fewest containers. ## Where to go next -At this point, you've installed Docker Swarm by pulling the latest image of -it from Docker Hub. Then, you built and ran a swarm on your local machine -using VirtualBox. If you want, you can onto read an [overview of Docker Swarm -features](index.md). Alternatively, you can develop a more in-depth view of Swarm by -[manually installing Swarm](install-manual.md) on a network. +At this point, you've done the following: + - Created a Swarm discovery token. + - Created Swarm nodes using Docker Machine. + - Managed a Swarm and run containers on it. + - Learned Swarm-related concepts and terminology. + +However, Docker Swarm has many other aspects and capabilities. +For more information, visit [the Swarm landing page](https://www.docker.com/docker-swarm) or read the [Swarm documentation](https://docs.docker.com/swarm/). diff --git a/docs/overview.md b/docs/overview.md index 46ceb98955..aa9bb438d8 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -43,7 +43,7 @@ Using Docker Machine, you can quickly install a Docker Swarm on cloud providers Using Docker Machine is the best method for users getting started with Swarm for the first time. To try the recommended method of getting started, see [Get Started with Docker Swarm](install-w-machine.md). -If you are interested manually installing or interested in contributing, see [Create a swarm for development](install-manual.md). +If you are interested manually installing or interested in contributing, see [Build a Swarm cluster for production](install-manual.md). ## Discovery services diff --git a/docs/plan-for-production.md b/docs/plan-for-production.md index 64159e7f80..5132ed21cd 100644 --- a/docs/plan-for-production.md +++ b/docs/plan-for-production.md @@ -5,7 +5,7 @@ description = "Plan for Swarm in production" keywords = ["docker, swarm, scale, voting, application, plan"] [menu.main] parent="workw_swarm" -weight=70 +weight=-45 +++ diff --git a/docs/provision-with-machine.md b/docs/provision-with-machine.md index caff675028..bc344bd8d2 100644 --- a/docs/provision-with-machine.md +++ b/docs/provision-with-machine.md @@ -26,7 +26,7 @@ company's data center. If this is the first time you are creating a Swarm cluster, you should first learn about Swarm and its requirements by [installing a Swarm for evaluation](install-w-machine.md) or [installing a Swarm for -production](install-on-aws.md). If this is the first time you have used Machine, +production](install-manual.md). If this is the first time you have used Machine, you should take some time to [understand Machine before continuing](https://docs.docker.com/machine). @@ -185,6 +185,6 @@ Name: swarm-master ## Related information * [Evaluate Swarm in a sandbox](install-w-machine.md) -* [Build a Swarm cluster for production](install-on-aws.md) +* [Build a Swarm cluster for production](install-manual.md) * [Swarm Discovery](discovery.md) * [Docker Machine](https://docs.docker.com/machine) documentation diff --git a/docs/secure-swarm-tls.md b/docs/secure-swarm-tls.md index ce15c917e2..a72221cb2a 100644 --- a/docs/secure-swarm-tls.md +++ b/docs/secure-swarm-tls.md @@ -163,5 +163,5 @@ facing production workloads exposed to untrusted networks. ## Related information -* [Configure Docker Swarm for TLS](configuire-tls.md) +* [Configure Docker Swarm for TLS](configure-tls.md) * [Docker security](https://docs.docker.com/engine/security/security/) diff --git a/docs/swarm_at_scale.md b/docs/swarm_at_scale.md index ca05bd8c6a..2012c2394d 100644 --- a/docs/swarm_at_scale.md +++ b/docs/swarm_at_scale.md @@ -5,7 +5,7 @@ description = "Try Swarm at scale" keywords = ["docker, swarm, scale, voting, application, certificates"] [menu.main] parent="workw_swarm" -weight=75 +weight=-35 +++ @@ -146,7 +146,7 @@ CloudFormation template located ### Step 1. Build and configure the VPC -This step assumes you know [how to configure a VPC](link here) either manually +This step assumes you know how to configure a VPC either manually or using the VPC wizard on Amazon. You can build the VPC manually or by using using the VPC Wizard. If you use the wizard, be sure to choose the **VPC with a Single Public Subnet** option.