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.
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.
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
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.
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!