Amazon Adds Docker Support to Elastic Beanstalk
Amazon have announced the availability of Docker within its autoscaling Infrastructure as a Service (IaaS) Elastic Beanstalk. This adds Docker based applications to the capabilities that already existed for Node.js, PHP, Python, .Net, Java and Ruby. The use of Docker containers greatly expands the available language and framework support of Elastic Beanstalk, as almost anything can be placed inside a container. The promise of Docker on Elastic Beanstalk is that developers can build something on their local machine, and deploy it at cloud scale.
Amazon previously announced support for Docker in its own Amazon Linux 2014.03 release, so it’s been possible for a little while to run Docker containers inside VMs on Amazon’s cloud using that (or any other linux with the required kernel for Docker). Elastic Beanstalk adds automated provisioning, load balancing, scaling and application health monitoring. The system is still inherently VM based, and one drawback may be that (unlike a PaaS) whilst it’s possible to scale a container up, it’s not possible to run many containers together on a single instance.
Configuration of the service is based on Dockerfile, and the service can use plain Dockerfiles or Amazon’s own Docker.aws.json representation. In either case additional files can be added to the application by placing them into a zip archive along with the Dockerfile (or Docker.aws.json file). Mandating the use of Dockerfile doesn’t preclude the use of existing Docker images from public or private repositories, as each Dockerfile must start with a FROM instruction that points to a base image. In this case a base image might be a minimal operating system, or it might be an entire application along with all of its dependencies.
The Docker version used by this release of Elastic beanstalk is 0.9 - the first to use libcontainer rather than LXC. 0.9 was released in March, and contained a number of bugs that were fixed in 0.9.1, most notably a console issue that stopped SSH from working in daemon mode. As Docker is now on a monthly release cycle this puts Amazon around 6 weeks behind the leading edge, as 0.10.0 (the first release candidate for 1.0) was put out on 8 Apr 2014.
Elastic Beanstalk was first launched in January 2011, but still carries a (Beta) label on it’s product home page. It brings together a number of AWS services including EC2, S3, SNS, ELB and auto scaling. Elastic Beanstack also offers straightforward integration to Amazon’s data management services such as RDS. It doesn’t have its own billing, and customers are billed for their use of resources from the underlying services.