Docker Blog

Discussions and forums that give you the insights you need to ship world class experiences.

Introducing the Docker for AWS and Azure Beta

Today, we’re excited to announce Docker for AWS and Docker for Azure: the best ways to install, configure and maintain Docker deployments on AWS and 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
ID               NAME                                         MEMBERSHIP  STATUS  AVAILABILITY  MANAGER STATUS  LEADER
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
a3ja7sa3kjtinxh72a5aywcl1
~ # docker service create --name nginx --network nginx-net -p 80:80/tcp nginx
04bg57rlenz4mvyj4ojp4i6kl

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
nginx
~ # docker service tasks nginx
ID                         NAME     SERVICE  IMAGE  LAST STATE            DESIRED STATE  NODE
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.


 

Summary

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 Mac and Windows 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!


 

Learn More about Docker

, , , , , ,

Introducing the Docker for AWS and Azure Beta


One Response to “Introducing the Docker for AWS and Azure Beta”

  1. André Cruz

    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.

    Reply

Leave a Reply

Get the Latest Docker News by Email

Docker Weekly is a newsletter with the latest content on Docker and the agenda for the upcoming weeks.