The opportunity for partners to take open source software and integrate it with Microsoft Azure is significant. Nearly one in three Azure virtual machines run Linux, and the Azure Marketplace has more than 1,000 Linux images, testaments to the fact that Microsoft Azure supports the open source technologies that millions of customers rely on and trust.
With the increased interest from Microsoft partners in this topic, we are now offering the Open Source Solutions (OSS) Partner Community to help you build your practice. As with our other practice-building communities, the OSS Partner Community includes a monthly call, blog series, and Yammer group, where we’ll share news, information, and resources.
Join me on October 25 for the next Open Source Solutions Partner Community call, with a focus on containers and OSS. I'm excited to announce that Ross Gardler, Principal Program Manager and president of the Apache Software Foundation, will be the guest speaker.
Overview of containers
Abstraction and virtualization techniques are key features for general purpose operating systems (OS), detangling applications from the idiosyncrasies of hardware and a machine’s given state and configuration. For example, virtual memory gives applications a standard way to use the computer’s memory, giving the appearance to the application that it holds all of the memory. There are many different types of virtualization, including desktop virtualization, hardware virtualization, and application virtualization.
Containers represent an OS-level virtualization creating one operating system kernel that allows multiple isolated user space instances. To an executing program in a container, it appears it is running in an unspoiled version of the OS. Container technology utilizes Namespaces to isolate the containers resources (files, network ports, etc.) from other containers. Groups in Linux and Job Objects in Windows allow the host OS to govern the resources (CPU, RAM, Network) utilized by the executing containers.
OS virtualization allows much faster start times than traditional hardware virtualization, and efficient use of the host's resources, because it only needs one OS kernel. This means more containers can run on the host versus traditional VMs. This is critically important for the datacenter and the public cloud, where density of compute/storage/network are essential to the bottom line.
Container concepts to know
An image is a read-only template with instructions for creating a container. For example, an image might contain an operating system or it may contain the OS and an application. You can build or update images from scratch or download and use images created by others. An image may be based on, or may extend, one or more other images. Images are critical for the portability of containers.
A container is a runnable instance of a container image. For example, with Docker you can run, start, stop, move, or delete a container using Docker API or command-line interface (CLI) commands. Containers can be provided with configuration metadata such as networking information or environment variables.
A container registry is a library of images. A registry can be public or private, and can be local to the host machine or on a totally separate server. For example, Docker registries are the distribution component of Docker.
Running images point to the shared stored image rather than copies. However, when a container tries to modify or change something a copy of the file is placed on special writeable area of the container. This is called "copy-on-write," providing the ability to track only the changes, and reducing the amount of disk space and speeding up start times.
The ability to easily and efficiently create, execute, and manage containers has attracted developers. Containers simplify the dependency complexities with software development, and mitigate the risk of applications breaking due to some change in the OS environment and the “it works on my machine” moment. And, the adoption of DevOps and its principles of continuous deployment and continuous integration has further increased demand for a container type solution. Containers promise portability, faster develop cycles, and operation cycles.
It is tempting to use the terms container and Docker interchangeably, but they are not the same. Containers have been around for many years and are enabled via OS functionality. Docker made working with this functionality easier, and there are two Docker entities: Docker's open source software, and Docker the company. Docker's open source software makes running and spawning containers easy, and it also defines a container packaging format (image). Docker Inc. creates tools (many of them open source) for making containers and their management more efficient, like Docker Compose, Docker Swarm, and Docker Registry.
Containers and beyond
Containers have matured. There is standardization and consolidation occurring at the deployment and packaging level, and the ecosystem is focusing on higher level container services. These container services pull together various solutions from a rich container ecosystem.
- Orchestration - the ability to deploy complex multi-container apps on multiple machines, e.g., Docker Datacenter; Kubernetes; Mesos and Marathon
- Configuration Management
- Container management
- Infrastructure management
- Developer tooling
Most public cloud container services pull together these solutions to provide a complete container management service:
- Amazon – ECS, a proprietary set of services
- Google – GKE, orchestration based on Kubernetes, which you have the choice to run and manage yourself
- Microsoft – Azure Container Service, which lets you work with the open source tools you know
Azure Container Service
With Azure Container Service, you deploy and manage containers using familiar tools. Select your own orchestrator and cloud - public or private - and Azure Container Service handles everything else. It's based on open source technology, so you are in control without technology lock-in.
Azure Container Services optimizes the configuration of popular open source tools and technologies specifically for Azure. You get an open solution that offers portability for both your containers and your application configuration.
In upcoming blog posts, I'll go into more depth about Azure Container Service and its open source building blocks. Stay informed about calls and posts by connecting to the community resources listed below.
Open Source Solutions (OSS) Partner Community
- Sign up for the October 25 community call with Ross Gardler
- Community call schedule
- Yammer group
- OSS Partner blog series
- Training and enablement