Containerization is one of the latest technology used for packaging and running applications (both Windows and Linux) in different types of environments including cloud or premise or on our local desktops.
The container provides a lightweight and isolated environment for deploying and running applications.
Container can start and stop quickly so, it will be very useful for the apps, which requires rapid adaption of changing demands.
Why Containers?
There are thousands of applications available to install on Windows serves.
They are created using different languages, and frameworks and may have different packaging formats.
But, they may have some common dependencies such as windows common libraries or some other Applications.
These dependencies may cause the problems such as security, portability, application consistency, etc when we are trying to run our applications across multiple hosts.
To prevent such challenges, we have the option to start using Windows containers.
One of the main advantage of container is portability.
This means, we can take the container and run it across our desktop or servers in the data centers or in cloud environments.
Since the container ensures consistency, we can confidently promote the container from development environment to testing environment and at last in to production environment.
If our containerized application is working in development environment then it will work in other environments such as testing or production environments.
As we can see in the above diagram, we can promote the same containerized application to multiple hosting environment.
Windows Containers
When we are thinking about containers, the main point which comes to our mind is about Linux operating system.
But, few years back, Microsoft formed a commercial partnership with Docker – the company that made container easy and cool in Linux for creating windows based containers.
This partnership includes the joint promotion of Docker data center solutions as well as joint push to containerize legacy applications, especially Windows based applications.
They created Windows based containers and is a commercial version available with Windows Server 2016 onwards without additional cost.
If we go to hub.docker.com, we can find 100+ containers published by Microsoft for .Net Core, Windows IIS, SQL, Windows Communication Framework, etc.
Key strengths of containers
Flexibility
Containers are flexible and they allow any application to containerize and no matter if it is a Windows or Linux based application or how complex the application is.
Lightweight
Containers are lightweight because it doesn’t require s separate operating system in it.
It uses the host operating system. It will share the running operating system.
Interchangeable
Containers are interchangeable. We can easily update or replace a container
Portable
It is very easy to move the containers from our local machine to the data centers or into cloud environments or any other environment that has container engine without any modifications.
Containers are Scalable
Containers are highly scalable. We can easily add or remove any number of containers as per our demands.
It might take few seconds to set up thousands of containers and also a few seconds to stop or remove thousands of containers as well.
Some statics says Google starts over 2 billion containers per week and 3000 per second!!
Containers are stackable
We can create a stack of containers that represents the hierarchy of interrelated services.
It will share common dependencies and we can easily orchestrate and scale them together.
If we are using Docker with Docker Swarm, it will called Stacks and if we are using Docker with Kubernetes, then it will be called Pods.
The names are different, but the concept is same.
Summary
Containers are software based and executable component. They are standalone and lightweight. They are small compared to traditional virtual machines.
We can start and stop containers quickly. We can run a Docker container on a Windows host if it is Windows container. If our Docker container is a Linux container, we can run on a Linux host.
We can run the container in our desktop machine as well as cloud.
Container also provide higher level of security. Everything happening inside the container is isolated from the other things that are happening in the host operating system.
And, finally containers include everything required to run the application. We can simply download the container and run it right away without worrying about the installation of operating system or other applications