Header Menu

Connect to Docker Swarm on Azure Container Service (ACS)

Once you’ve created an Azure Container Service (ACS) deployment running Docker Swarm (as opposed to DC/OS) the next step is to be able to deploy to it from your dev machine, build machine, etc… The goal here is to be able to run docker run ... and get containers running on the Swarm cluster.

Ensure Master has Public IP

The first step will be ensure that your master has a public IP and an SSH port open, if you’ve already done this skip ahead to “Connect with Swarm”. You’ll need to ensure the machine has both a public IP attached, as well as a network security group attached.

To add a public IP:

Find the master VM in your resource list

Go to Settings

Select Network Interfaces

If the first entry has both public and private IPs listed, skip ahead to the network security group portion.

Select the first entry, and go to Settings > IP Addresses

Enable the public IP address and save.

To add the network security group:

Follow steps 1-3 of adding a public IP above to get to Network Interfaces

Select Settings > Network security group

If there isn’t a group listed select Edit and then select an existing group. (If one doesn’t exist already you’ll have to create one in New Resource -> Network Security Group. Come back here after doing that)

Select your NSG and go to Settings > Inbound Security Rules

Click Add and Enter ssh for the name and 22 for the Destination Port Number.

Save.

Wait for the operation to complete and you should now be able to SSH into the master machine with the username you created when you created the cluster, and the SSH key you specified.

Connect with Swarm

Once your ACS master is properly configured with a public IP and ssh is enabled we just need two simple commands to connect to it:

Be sure to replace azureuser with your username and masterHostOrIP with the dnsname of your ACS master or the IP address of your master.

This sets up an SSH tunnel to your master, and forwards port 2375 from the master to your local machine. We then set the DOCKER_HOST environment variable to point docker to the forwarded port. If the docker info command works you should see the information for your swarm cluster printed out, containing a list of agent nodes in the cluster. You can now use regular docker commands, and even docker-compose!