Docker Inc. launched its answer to Amazon ECS into public beta at the end of last year: an AWS-compatible service for managing and orchestrating Docker containers. Now, Docker for AWS is generally available.
With its public beta announcement, Docker Inc. noted several new enhancements. All container logs are now shipped to AWS CloudWatch for improved aggregation, analytics, reporting and monitoring, reducing the need for using SSH to log into individual hosts. The service also comes with a diagnosis tool, which can be used to facilitate support. Furthermore, a new option allows selection of a broader range of root volumes, which means that host-local SSDs are now available. A demo of Docker for AWS is available.
When InfoQ asked Docker Inc. about how Docker for AWS compares to Amazon’s ECS, Suzanne Panoplos, director of corporate communications, explained:
Docker for AWS is built and shipped by Docker Inc. Releases are synced with regular Docker releases, so with Docker for AWS you can always get the latest and greatest Docker version.
Docker for AWS sets up a standard Docker environment with swarm mode enabled. That means you can use Docker’s built-in secure and high-performance orchestrator, without extra configuration steps. Docker with swarm-mode capabilities is available for use on any infrastructure. ECS uses its own scheduler designed for use only in an AWS environment. ECS uses different tools than what those developing with Docker are used to: e.g. to deploy apps with ECS, you cannot use `docker` or `docker-compose`, but have to use the ECS CLI which doesn’t support the same things as the open-source Docker tools.
At the time of writing, Amazon ECS supports versions of Docker up to 1.12.6, although the latest stable release of the Docker Engine at the time of writing is 1.13.0.
Although Docker for AWS is a managed service, it provides the full breadth of the Docker CLI (via SSH). Amazon ECS may require significant effort to implement any scheduling beyond the rudimentary. To address this shortcoming, Amazon recently introduced Blox, a scheduling framework for ECS. Blox ships with two components, a daemon-scheduler, which executes a task on every container, and a cluster-state-service, which monitors an SQS queue for CloudWatch events emitted from ECS and provides convenient, current state for scheduler components through a REST API. This provides the foundation for building more complex scheduling capabilities across the cluster.
However, Docker does not plan to add support for Blox in Docker for AWS. According to Panoplos, “Docker for AWS uses Docker’s built-in swarm-mode orchestration and scheduling and has been developed based upon the feedback and requirements of our millions of users.” Instead of support for Blox, Docker has been collaborating with Amazon on decoupling its core container runtime, containerd, which it hopes will be used by Blox in the future.
Before its GA release, the public beta announcement was a follow-up to Docker’s previously announced private beta program for Docker for AWS, which integrated with AWS Elastic Load Balancing and EC2 Security Group and KeyPair security features.