Containers with Docker in Windows Server 2016
August 10, 2016
One of the most exciting technologies coming with Windows Server 2016 are containers with Docker. As more companies are evaluating their migration to future platforms, we've seen a lot of questions about Docker and containers in general, such as what containers are, the differences with hypervisors, benefits of using containers and more. In this blog, we'll address some of the most common questions surrounding containers with Docker to help organizations get a better idea of how this new technology is helping improve efficiencies and enable business.
What are containers?
Containers (also called operating-system-level virtualization) are multiple independent instances that can reside on the same operating system instead of the need for their own virtual machine. These are used to separate individual components, configurations, and dependencies that make up an application. This opens the possibility to have many different, or similar, containers running on a single server or fleet of servers by using a container engine like Docker.
What is the difference between a hypervisor and container?
Firstly, virtualization with products like Hyper-V, VMware, and others are not going away as containers can coexist and are typically used together. Consider containers as a method to have multiple micro-services all working together to function as a single application.
Hypervisors allow multiple virtual machines to share physical resources with their own independent kernel. With containers, the operating system resources are shared and process isolation is managed by the Docker engine.
What are the benefits to using containers?
- Containers are inherently portable. They can be shared with different team members, uploaded to different systems and run privately or in the cloud without needing to make modifications to the underlying infrastructure.
- Managing, starting, stopping, and deleting containers is very fast as we don't need to create a virtual machine, install the operating systems, configure baselines, and other initial tasks associated with setting up infrastructure. Docker provides functionality for layering the images from which the Docker runs in order to further increase the speed in which additional containers can be started.
- Provide version control for individual components of the application. This also allows greater visibility into how each component of an application performs and allows the possibility of having applications use different versions of the same container.
- Increase operational efficiency by dedicating hardware resources to individual processes and scale accordingly to business needs. Each container can be assigned a specific amount of hardware resources and monitored independently
- Each container is isolated from each other and allows different configuration and dependencies to avoid incompatibilities and provide increased security between different components of your application.
How do I get started with containers?
There are plenty of methods to use and adopt containers. Here are a few examples:
- Create a new application to either replace another or provide an answer to a new business need. This initiative should consider a cloud and micro-services based approach as they develop the code and infrastructure for the application(s).
- Lift and shift an entire application into a container. Once the production workload is moved in, developers and engineers can work to isolate and deconstruct individual components into their own independent containers. Eventually, this will result in a modern, portable, and scalable application.
- Migrate specific components that would benefit from the portability and scalability that containers offer. For example, migrating web and application servers into containers while leaving your databases on an existing shared cluster.