At its re:invent developer conference in Las Vegas, Amazon today announced its first Docker-centric product: the EC2 Container Service for managing Docker containers on its cloud computing platform. The service is available in preview now and developers who want to use it can do so free of charge.
As Amazon CTO Werner Vogels noted today, despite all of their advantages, it’s still often hard to schedule containers and manage them. “What if you could get all the benefits of containers without the overhead?” he asked. With this new service, developers can now run containers on EC2 across an automatically managed cluster of instances.
As Amazon notes, you won’t have to install specific cluster-management software or hardware or match your hardware to your software needs. Instead, the EC2 Container Service will manage all of that for you. You launch some instances in a cluster, define tasks and start them. From there, the service will handle the rest. Users can extend the service with other Docker-related products like Mesos, too. Amazon, of course, is also launching a number of new APIs to manage these containers programmatically.
Here is what Amazon has to say about the advantages of the service:
- Easy Cluster Management – ECS sets up and manages clusters made up of Docker containers. It launches and terminates the containers and maintains complete information about the state of your cluster. It can scale to clusters that encompass tens of thousands of containers across multiple Availability Zones.
- High Performance – You can use the containers as application building blocks. You can start, stop, and manage thousands of containers in seconds.
- Flexible Scheduling – ECS includes a built-in scheduler that strives to spread your containers out across your cluster to balance availability and utilization. Because ECS provides you with access to complete state information, you can also build your own scheduler or adapt an existing open source scheduler to use the service’s APIs.
- Extensible & Portable – ECS runs the same Docker daemon that you would run on-premises. You can easily move your on-premises workloads to the AWS cloud and back.
- Resource Efficiency – A containerized application can make very efficient use of resources. You can choose to run multiple, unrelated containers on the same EC2 instance in order to make good use of all available resources. You could, for example, to run a mix of short-term image processing jobs and long-running web services on the same instance.
- AWS Integration – Your applications can make use of AWS features such as Elastic IP addresses, resource tags, and Virtual Private Cloud (VPC). The containers are, in effect, a new base-level building block in the same vein as EC2 and S3.
- Secure – Your tasks run on EC2 instances within an Amazon Virtual Private Cloud. The tasks can take advantage of IAM roles, security groups, and other AWS security features. Containers run in a multi-tenant environment and can communicate with each other only across defined interfaces. The contained are launched on EC2 instances that you own and control.
With this, Amazon follows in the footsteps of other large cloud vendors. Google, for example, is making major investments in adding more Docker capabilities to its Cloud Platform, including its efforts around Kubernetes, a deep integration into App Engine and its recently launched Container Engine. Microsoft, too, is adding more support for Docker to its Azure platform and is even going as far as supporting the Google-sponsored Kubernetes project.
As an Amazon executive told me yesterday — without mentioning today’s announcements — Amazon likes to offer the services that its customers are asking for. Clearly, the company has now heard its customers wishes.