Windows-based containers: Modern app development with enterprise-grade control
Microsoft on October 15th 2014 announced that it will deliver new container technologies in the upcoming wave of Windows Server releases. In addition, a new partnership between Microsoft Corp. and Docker Inc. will bring Windows Server support to Docker tools. MS Open Tech will contribute to this partnership, and will build upon our existing support for Linux hosted containers on Microsoft Azure.
As part of this announcement, MS Open Tech is contributing code to the Docker client that supports the provisioning of multi-container Docker applications on Azure. This code removes the need for our cross-platform CLI to bootstrap the Docker host. In other words, we have taken a simple process and made it even simpler. A demonstration of this new capability will be a part of Docker’s Global Hack Day as well as the Microsoft TechEd Europe conference. For more information on other aspects of this partnership, see the Azure blog.
Docker is an open source engine that automates the deployment of any application as a portable, self-sufficient container that can run almost anywhere. This partnership will enable the Docker client to manage multi-container applications using both Linux and Windows containers, regardless of the hosting environment or cloud provider. This level of interoperability is what we at MS Open Tech strive to deliver through contributions to open source projects such as Docker.
Docker and Microsoft: How Azure is Bringing the World of Windows and Linux Together
What are containers?
They are an isolated, resource controlled and portable operating environment.
Basically, a container is an isolated place where an application can run without affecting the rest of the system and without the system affecting the application. Containers are the next evolution in virtualization.
If you were inside a container, it would look very much like you were inside a physical computer or a virtual machine. And, to Docker, a Windows Server Container looks like any other container.
Containers for Developers
When you containerize an app, only the app and the components needed to run the app are combined into an "image". Containers are then created from this image as you need them. You can also use an image as a baseline to create another image, making image creation even faster. Multiple containers can share the same image, which means containers start very quickly and use fewer resources. For example, you can use containers to spin up light-weight and portable app components – or ‘micro-services’ – for distributed apps and quickly scale each service separately.
Windows Containers: What, Why and How
Because the container has everything it needs to run your application, they are very portable and can run on any machine that is running Windows Server 2016. You can create and test containers locally, then deploy that same container image to your company's private cloud, public cloud or service provider. The natural agility of Containers supports modern app development patterns in large scale, virtualized and cloud environments.
- With containers, developers can build an app in any language. These apps are completely portable and can run anywhere - laptop, desktop, server, private cloud, public cloud or service provider - without any code changes.
- Containers helps developers build and ship higher-quality applications, faster.
Containers for IT Professionals
- IT Professionals can use containers to provide standardized environments for their development, QA, and production teams. They no longer have to worry about complex installation and configuration steps. By using containers, systems administrators abstract away differences in OS installations and underlying infrastructure.
- Containers help admins create an infrastructure that is simpler to update and maintain.
What else do I get?
- Containers and the container ecosystem provide agility, productivity, and freedom-of-choice in building, deploying, and managing modern apps.
- When combined with Docker, Visual Studio, and Azure, containers become an important part of a robust ecosystem. Read more about the Windows Server Container ecosystem.
Docker containers simplify the development of software applications that consist of micro-services. Each service then operates as an isolated execution unit on the host. Common use cases for Docker include:
Automating the packaging and deployment of applications
Creation of lightweight, private PaaS environments
Automated testing and continuous integration/deployment
Deploying and scaling web apps, databases and backend services
Docker’s container technology aims to drive developer productivity and agility. Containers do not include a full operating system, consequently rapid development and scaling of container-based applications is possible through very quick boot and restart operations. Furthermore, highly efficient creation of modified container images, by virtue of only capturing the differences between the original and new containers, enables improved management and distribution of containerized applications; the resulting images are both small and highly portable across almost any platform.
This partnership brings the .NET and Windows Server ecosystem together with Docker's expertise and open source community to deliver uniform container functionality across Linux and Windows Server containers.
In June MS Open Tech announced the availability of Docker Engine on Microsoft Azure, to coincide with the 1.0 release of the Docker tools. That work provided the ability to create Azure virtual machines with the Docker Engine already installed. The resulting virtual machines become hosts for Docker containers, the standard Docker tooling then provides management of containers on those hosts. Our goal with this project is to make it as simple as possible to get started with Docker on Azure. Since June, we have continued to work with the Docker community to make things even simpler.
Last October, Microsoft and Docker, Inc. jointly announced plans to bring containers to developers across the Docker and Windows ecosystems via Windows Server Containers, available in the next version of Windows Server. We will be unveiling the first live demonstration in a few weeks, starting at the BUILD conference. Today, we are taking containerization one step further by expanding the scenarios and workloads developers can address with containers:
• Hyper-V Containers, a new container deployment option with enhanced isolation powered by Hyper-V virtualization
• Nano Server, a minimal footprint installation of Windows Server that is highly optimized for the cloud, and ideal for containers.
First-of-Their-Kind Hyper-V Containers
Leveraging our deep virtualization experience, Microsoft will now offer containers with a new level of isolation previously reserved only for fully dedicated physical or virtual machines, while maintaining an agile and efficient experience with full Docker cross-platform integration. Through this new first-of-its-kind offering, Hyper-V Containers will ensure code running in one container remains isolated and cannot impact the host operating system or other containers running on the same host.
While Hyper-V containers offer an additional deployment option between Windows Server Containers and the Hyper-V virtual machine, you will be able to deploy them using the same development, programming and management tools you would use for Windows Server Containers. In addition, applications developed for Windows Server Containers can be deployed as a Hyper-V Container without modification, providing greater flexibility for operators who need to choose degrees of density, agility, and isolation in a multi-platform, multi-application environment.
Microsoft Containers in the Docker Ecosystem
Windows Server Containers
Docker plays an important part in enabling the container ecosystem across Linux, Windows Server and the forthcoming Hyper-V Containers. We have been working closely with the Docker community to leverage and extend container innovations in Windows Server and Microsoft Azure, including submitting the development of the Docker engine for Windows Server Containers as an open contribution to the Docker repository on GitHub. In addition, we’ve made it easier to deploy the latest Docker engine using Azure extensions to setup a Docker host on Azure Linux VMs and to deploy a Docker-managed VM directly from the Azure Marketplace. Finally, we’ve added integration for Swarm, Machine and Compose into Azure and Hyper-V.
“Microsoft has been a great partner and contributor to the Docker project since our joint announcement in October of 2014,” said Nick Stinemates, Head of Business Development and Technical Alliances. “They have made a number of enhancements to improve the developer experience for Docker on Azure, while making contributions to all aspects of the Docker platform including Docker orchestration tools and Docker Client on Windows. Microsoft has also demonstrated its leadership within the community by providing compelling new content like dockerized .NET for Linux. At the same time, they’ve been working to extend the benefits of Docker containers- application portability to any infrastructure and an accelerated development process--to its Windows developer community.”
Introducing Nano Server: The Nucleus of Modern Apps and CloudNano Server: The Future of Windows Server Starts Now
The operating system has evolved dramatically with the move to the cloud. Many customers today need their OS for the primary purpose of powering born-in-the-cloud applications. Leveraging our years of experience building and running hyper-scale datacenters, Microsoft is uniquely positioned to provide a purpose-built OS to power modern apps and containers.
The result is Nano Server, a minimal footprint installation option of Windows Server that is highly optimized for the cloud, including containers. Nano Server provides just the components you need – nothing else, meaning smaller server images, which reduces deployment times, decreases network bandwidth consumption, and improves uptime and security. This small footprint makes Nano Server an ideal complement for Windows Server Containers and Hyper-V Containers, as well as other cloud-optimized scenarios. A preview will be available in the coming weeks, and you can read more about the technology on the Windows Server blog. http://blogs.technet.com/b/windowsserver/archive/2015/04/08/microsoft-announces-nano-server-for-modern-apps-and-cloud.aspx?WT.mc_id=Blog_ServerCloud_Announce_TTD
Containers are bringing speed and scale to the next level in today’s cloud-first world. Microsoft is uniquely positioned to propel more organizations forward into the next era of containerization, by offering flexibility and choice through Windows Server containers, Linux containers, and Hyper-V containers both in the cloud and on-premises. Today’s announcements are just the beginning of what’s to come, as we continue to fuel both the growth of containers in the industry, and new levels of application innovation for all developers.