Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Amazon's Managed Container Service Adds Support for Docker on Windows

Amazon's Managed Container Service Adds Support for Docker on Windows

This item in japanese

Amazon has beaten Microsoft to the table, bringing managed Windows container support to AWS in the EC2 Container Service before it's available in Azure - albeit as a beta service with several caveats. Amazon provides a CloudFormation template which creates a Windows-based EC2 container cluster, so you can get started in a few clicks. In Jeff Bar's blog post the service is stated as being ready "to containerize and test your Windows applications while we finalize this feature ahead of production use".

Docker support has been available in Windows Server 2016 since the operating system launched in September 2016. To run containers you need to enable a Windows feature, download the Docker runtime, and use images baesd on Microsoft's Windows Server Core or Nano Server images. AWS have built a custom Windows Server machine image with Docker already configured, which the CloudFormation template uses to create virtual machines in EC2. Amazon recommends running containerized Windows workloads in a separate cluster from Linux workloads, but within the cluster you can use images from Docker Hub or the EC2 Container Registry.

The user experience with Windows hosts is the same as the existing Linux-based platform - the container hosts run as EC2 virtual machines, and you spin up containers using AWS task definitions. Not all task features are available for Windows task definitions, and some supported features are listed as having unknown behavior. Many of the missing features are in the networking stack, and links between containers and custom DNS settings are not supported.

Those missing features, and the fact that Windows doesn't support overlay networks, limits what you can do with Windows containers in AWS right now. Without overlay networking, you can't have communication between containers running on different hosts, so a web application container can't publish to a message queue container or save data to a database container unless they're all hosted on the same EC2 instance. That limitation will be addressed in a Windows update, but there's no public timeline for that release. Until then, the service is suitable for stateless architectures, where application components run in containers and use other parts of the platform - like the Simple Queue Service for communication and the Relational Database Service for storage.

When overlay networking does arrive, you will be able to run hosts from different operating systems in the same Docker Swarm, so the ECS advice to keep clusters separate could change. Running Linux and Windows Docker engines in the same cluster lets you run a hybrid solution, using the best technology from any stack and letting the platform do the plumbing between them. A distributed solution could use Nginx containers on Linux, proxying full ASP.NET apps running on Windows containers, but utilising the same ECS infrastructure and management interface for all components.

Managed Windows container support is not yet available in Azure Container Service or Google Container Engine, although there are IaaS options available in those clouds. Microsoft provide an ARM template to run Windows Server 2016 VMs pre-configured with Docker, and with the Windows Server Docker images already downloaded onto the VM. Google Compute Engine supports Windows containers running on VMs, but without a custom machine image, so you need to configure Docker on Windows manually.

Support for Docker in Windows is beginning to feed through into container orchestration platforms too. Kubernetes 1.5 has Windows support as an alpha feature, and DC/OS states Windows support is coming soon. With the commercial partnership between Docker and Microsoft, it's likely we'll also soon have a Windows version of Docker Datacenter. Then users will have a comprehensive set of products to choose from, for managing containers on-premises or in the cloud.

Rate this Article