Michael Friis

Introducing the Docker for AWS and Azure Beta

Michael Friis

Today, we’re excited to announce Docker for AWS and Docker for Azure.

Our goals for Docker for AWS and Azure are the same as for Docker for Mac and Windows:

  • Deploy a standard Docker platform to ensure teams can seamlessly move apps from developer laptops to Docker staging and production environments, without risk of incompatibilities or lock-in.
  • Integrate deeply with underlying infrastructure to make sure Docker takes advantage of the host environment’s native capabilities and exposes a familiar interface to administrators.
  • Deploy the Docker platform to all the places where you want to run containerized apps, simply and efficiently and at no extra cost.
  • Make sure the latest and greatest Docker versions are available for the hardware, OSs, and infrastructure you love, and provide solid upgrade paths from one Docker version to the next.

To make Docker an awesome experience on AWS and Azure, we’ve carefully integrated with both:

  • Use an SSH key already associated with your IaaS account for access control
  • Provision infrastructure load balancers and update them dynamically as apps are created and updated
  • Configure security groups and virtual networks to create secure Docker setups that are easy for operations to understand and manage

Docker for AWS and Azure both start a fleet of Docker 1.12 Engines with swarm mode enabled out of the box. Swarm mode means that the individual Docker engines form into a self-organizing, self-healing swarm, distributed across availability zones for durability. Docker 1.12 also introduces powerful new concepts for running complex multi-container apps including: Service deployment API with health checks and rolling updates, built-in container-aware load balancing, and node communication secured with TLS out of the box.

The swarm can be scaled seamlessly with new worker nodes joining or leaving as required.

We will release updates to both Docker for AWS and Azure in lockstep with Docker RC and GA releases. Updating to a new Docker version is seamless: Docker will gradually start new manager nodes and switch them into the manager quorum. Worker nodes are then drained of containers before incrementally getting switched onto the new version to complete the update. The new services and state reconciliation features of Docker 1.12 ensure that apps running on the swarm are minimally affected by the update.

Docker for AWS and Azure are available in private beta for testing. Same as for Docker for Mac and Windows, they’re free to use (AWS and Azure charges for resource use still apply). Sign up here and we’ll be in touch shortly. To learn more about the installation process and features, check out the docs for Docker for Azure and AWS.

Getting Started

Docker uses AWS CloudFormation and Azure Resource Manager templates to bootstrap a quorum of manager nodes, add worker nodes, and to configure other infrastructure required to run Docker apps on AWS and Azure. When you get access to the private beta, you will receive an email with a link to the templates. You can install using either IaaS web consoles, CLIs or APIs.

The installers will prompt for initial manager and worker counts and desired instance sizes. Worker count and instance size can be changed later.

This is what setting up looks like using the AWS web console:


And similarly using the Azure portal:


Creating the swarm takes a few minutes. When complete, you can inspect the resources created to run Docker: Manager and worker nodes in autoscaling groups / scale-sets, load balancers, virtual networks and security groups.

In the “Output” tab, you’ll find an SSH command that you can use to access your running Docker installation:

$ ssh root@friism-test-1-ELB-473967506.us-west-1.elb.amazonaws.com
Welcome to Docker!
~ # docker node ls
2a1lilbggkoku ip-192-168-34-83.us-west-1.compute.internal Accepted Ready Active
2ivgs0kt0bjdu * ip-192-168-33-18.us-west-1.compute.internal Accepted Ready Active Reachable Yes

That’s it! Start using the power of your fully configured and scaled Swarm to deploy Docker apps on IaaS.


Deploying apps

To test the new Docker deployment, let’s deploy nginx:

~ # docker network create -d overlay nginx-net
~ # docker service create --name nginx --network nginx-net -p 80:80/tcp nginx

Find the Default DNS target in the stack “output” section on either AWS and Azure and open it in your browser to see nginx serving requests. Docker’s integration with the underlying IaaS updates the load balancer configuration to make services publicly available as they are created and destroyed.

Scaling services is simple:

~ # docker service scale nginx=5
~ # docker service tasks nginx
6lyu6y4zeysy3c0i9ny1atuyu nginx.1 nginx nginx RUNNING 8 seconds RUNNING ip-192-168-33-238.us-west-1.compute.internal
7rg5k95xe5q7u8lhwn8ub7nl6 nginx.2 nginx nginx RUNNING 8 seconds RUNNING ip-192-168-33-238.us-west-1.compute.internal
cnylm3cbz73yno62aqmfasmnn nginx.3 nginx nginx PREPARING 19 seconds RUNNING ip-192-168-33-238.us-west-1.compute.internal
1nod0lmwm6256tkfd5mu2b3kp nginx.4 nginx nginx RUNNING 16 seconds RUNNING ip-192-168-34-79.us-west-1.compute.internal
6pfpfz5lia4xk82zd9odzwt28 nginx.5 nginx nginx RUNNING 17 seconds RUNNING ip-192-168-34-79.us-west-1.compute.internal

You can point DNS records at the DNS target and apply SSL certificates to the load balancer for full HTTPS support on a domain of your choosing.

Scaling the swarm is just as simple—simply update the worker autoscaling group or scale-set and the swarm will automatically grow as additional IaaS VMs are spun up. Docker for AWS and Azure are fully integrated with the platform load balancing features, and no additional configuration or changes are required.

For deploying complex apps with multiple services, Docker for AWS and Azure support docker deploy using the new experimental bundle format announced with Docker 1.12.

Check out the docs for details on how to use Docker for AWS and Docker for Azure to run Docker apps in the cloud.


Docker for AWS and Azure are to ops what Docker for Mac and Windows are to developers: The best way to deploy, operate and upgrade secure and optimized Docker IaaS installations. Docker for AWS and Azure are designed to take optimal advantage of the underlying infrastructure without compromising portability. Combining Docker for Mac and Windows for developers with Docker for AWS and Azure for ops, your team is free to build deployment pipelines that move Docker apps from developers’ laptops through staging and onto production in the cloud.

Sign up for the beta and check out the preliminary docs. We’re looking forward to your feedback!


16 thoughts on “Introducing the Docker for AWS and Azure Beta

  1. What about persistent Docker volumes in Azure? Are they supported using Azure Blob service? AzureFile seems to have some limitations when used as data volume for DBs.

    • Michael Friis

      Michael Friis

      We're still working on persistence. The plan is to use appropriate Docker storage plugins for the underlying infrastructure.

  2. Any chance the integration of port exposure with ELBs will be available outside of this product? We can't use a template like this due to some custom requirements, but the ELB auto-registration would be great to have.

    • Michael Friis

      Michael Friis

      I'd love to understand what your constraints are. Feel free to reach out to michael.friis@docker.com. I suspect we'll open-source the controllers that manage the interaction between Docker and the infrastructure, as we do with most things.

  3. Very excited to see how this rolls out, and wondering how it compares to the AWS ECS (elastic container service) offering.

  4. I noticed a minor error:

    "Combining Docker for Mac and Windows for developers with Docker for Mac and Windows for ops, "

    should be

    "Combining Docker for Mac and Windows for developers with Docker for AWS and Azure for ops, "

  5. Any update on public beta timeline? Signed up for private beta when this was announced but still haven't gotten it =/

  6. Hello ,i used the centos image ,it is can't running .
    The command :
    "docker service create –name centos5 centos:5"
    The results:
    sometimes is running,sometimes is ready,and sometimes is shutdown.
    Can you test it ?
    Thank you very much!

  7. Thanks man! Works fine, but, i want know why only works with servers in USA, thanks!

  8. Muhammad Rehan Saeed

    Docker for AWS is currently Beta 6. Is there a release schedule? A really really rough guestimate would be acceptable.

  9. How does this compare to ECS?

  10. Anybody come across `apk` commands failing in userdata for Moby Alpine Linux OS? (specifically: Moby Linux aws-v1.13.0-rc2-beta12 – ami-71bb1411)

  11. can't seem to get the https://blog.docker.com/2016/06/azure-aws-beta/ to produce a ssh command in the output tab…

    launching 1.13.0-rc4-beta14
    all resources are created ok

    except I notice there is no SSHLoadBalancer resource as there is listed in your video…

    Cloudformation Output Tab has only 3 items:

    Nothing for SSH

    • Seems this isn't clearly documented…and was hidden away in an old Release Notes for 1.12.3-beta10


      Manager nodes
      Obtain the public IP and/or port for the manager node as instructed above and using the provided SSH key to begin administrating your swarm:

      $ ssh -i <path-to-ssh-key> docker@<ssh-host>
      Welcome to Docker!

  12. On AWS the worker nodes are in an Auto Scaling Group, but if a scaling policy triggers, your number of nginx instances is fixed at 5 "docker service scale nginx=5".

    Any way to tie ASG scaling to docker service scaling?

    Bonus points for a solution with multiple services running (this is the real world after all).

Leave a Reply