Microsoft Azure Stack is an extension of Azure – bringing the agility and innovation of cloud computing to your on-premises environment and enabling the only hybrid cloud that allows you to build and deploy hybrid apps anywhere. We bring together the best of the edge and cloud to deliver Azure services anywhere in your environment.

Azure Container Service: Now and the Future

Today, at AzureCon, we announced the next phase of our support for containerized applications on Azure. Azure Container Service builds on our work with Docker and Mesosphere to create and manage scalable clusters of host machines onto which containerized applications can be deployed, orchestrated, and managed.

What did we announce today?

We announced two things today, firstly, we will provide an Azure Container Service Resource Provider for Azure Resource Manager (ARM), and secondly we have made available an early prototype implementation of this service in the form of an Azure QuickStart Template. Let’s look at the Azure Container Service announcement first.

By leveraging ARM, Azure Container Service will make it easy for you to create and manage clusters of hosts pre-configured with Docker, Apache Mesos, Marathon and Docker Swarm. This work couples Azure's hyper-scale and enterprise-grade cloud with proven open source technologies to deliver the foundation for the container deployment, orchestration, and management service any team building container apps will need.

This open approach to container application management means you can choose the technologies you prefer and layer them on top of the Azure Container Service. Furthermore, by supporting community defined APIs at every level of the service we ensure that you can maintain portability of your code from developer workstations, to on-premises private clouds, and to Azure. The Azure Container Service simplifies the creation and management of Azure infrastructure, while the Docker ensures your application code will remain portable to any environment where Docker is supported.

What can you try today?

We are eager to hear your feedback, to this end we have decided to adopt the open source principle of “release early, release often.” You can deploy a Docker capable, Apache Mesos cluster today from the Azure QuickStart project (if you don't yet have an Azure account, a free trial is a few clicks away). This Azure QuickStart template serves as the basis for the final Azure Container Service that we will release later this year, so it will give you a preview of the Azure Container Service experience before it is available.

When you deploy this template, it provisions the architecture pictured below. Using this fully-functional Mesos cluster, you can build and deploy Docker based applications using any tooling that conforms to the adopted API’s.

If you are new to Docker then you might like to read Mark Russinovich’s blog post, Containers: Docker, Windows and Trends. For hands on material take a look at Corey Sanders' introduction to Docker and my deeper dive. In these sessions, we cover everything from installing Docker to the container developer workflow and deployment/scaling of complete containerized applications. For more in-depth coverage of Docker on Azure check the Azure documentation site. In the coming weeks and months we will be blogging about the Azure Container Service in more detail.

Where is the Azure Container Service heading?

The template available today is a working prototype of Azure Container Service. While you can deploy and run workloads on the resulting infrastructure there are many more features planned. The first goal of the Azure Container Service is to simplify the creation and configuration of a cluster. The default configuration of this cluster includes Docker and Docker Swarm for code portability and Marathon, Chronos and Apache Mesos to ensure that these applications can be scaled to thousands, even tens of thousands of containers.

The forthcoming Azure Container Service Resource Provider for ARM will enable users to define and manage the resulting cluster using standard ARM APIs. At present this configuration requires thousands of lines of code, not to mention a deep understanding of the technologies involved. Our Resource Provider will abstract away much of this complexity. Those thousands of lines will be reduced to tens of lines for default configurations. This simplification means fewer configuration errors when deploying and managing these complex clusters.

This new Resource Provider will also allow you to utilize Azure features such as integrated tagging of resources, Role-Based Access Control (RBAC) and the Azure management portal. The result is that you can take advantage of the enterprise grade features of Azure while still maintaining code portability from the orchestration layer up.

In any truly scalable application it is necessary to scale the hardware as well as software components. For this reason another goal is to leverage Azure’s new Virtual Machine Scale Sets (VMSS). VMSS is an upcoming service that enables operations such as create/delete/update on a group of identical VMs through a single API call. For Azure Container Service those identical VMs are the agents on which containers will be hosted. Since all VMs in a VMSS have the same configuration, VMSS supports rapid auto scaling of VMs.

But what about Windows Server Containers? At the risk of stating the obvious we plan to fully integrate Windows Server Containers into the service. The core pieces are already in place since Windows Server TP3 has support for the Docker Engine and, as announced in August a joint effort between Mesosphere and Microsoft will port Apache Mesos to Windows Server. Through this work we are bringing Windows Server Container support to Azure Container Service and thus ensuring you are able to manage containers on whichever operating system is most appropriate to your needs.