Source for the picture: https://www.docker.com/whatisdocker
There are many benefits to containers, but the key ones are:
Small footprint and high performance – The virtualization layer for a VM is large because it requires the full guest OS (disk, processor, memory), whereas containers have a very thin virtualization layer and have been shown to perform at a similar level as a non-virtualized environment. This helps lower infrastructure costs through more efficient use from containers (consolidation to a lower footprint or better performance from an existing footprint).
Fast startup – Since each virtualized container instance doesn’t have to load the full OS and instead only loads the executables required by the container, startup times are near instantaneous—mere seconds when compared to minutes for VMs. The follow on benefits are rapid deployment, lean scalability and high uptime (for example, time to recovery).
Portability – Each container is immutable and isolated with everything it needs to run. The only target environment pre-requisite is for the Docker client to be installed. This allows containers to be easily migrated from environment to environment and behave in the exact same way. This helps reduce time to shake out an environment, provide flexibility to pursue the best infrastructure value, and realize code quality improvements (by eliminating “works on Environment X but not Environment Y” kind of issues).
So, with that introduction about containers and their importance, I wanted to discuss a new comer to the container world: Microsoft. It’s a brave new world at Microsoft in terms of Open Source Software (OSS) support and there are two ways that Microsoft supports Docker that I wanted to bring to your attention.
First, Azure supports Linux VMs, so you can run Docker on the Azure IaaS service just as you would any other infrastructure provider. Azure also has bolt-on features to enhance your Docker experience, such as Private Docker Registry, Docker Linux VM extensions, and a visual Kubernetes client.
Second, and more tangible for Windows developers, is that Microsoft is bringing Docker container features to Windows with Windows Server 2016 (now in preview).
Source for the picture: http://msopentech.com/wp-content/uploads/DockerWithWindowsSrvAndLinux.png
This will expand the benefits of Docker beyond Linux to Windows. This is an awesome development for modern IT, as hybrid IT shops are increasingly the norm than the exception. For my organization about half of our software products run on Linux and about half run on Windows. What Windows Containers will bring us is the ability to consistently package, ship and operate our products through a consistent control plane. This allows all our Business Units to realize the benefits of Docker, while simplifying our DevOps landscape.
It’s worth footnoting that the Docker Engine for Windows and the Docker Engine for Linux are dependent on their respective OS kernels—which means that for portability Windows Containers will only run on Windows hosts and the same for Linux Containers. But the portability benefits within those two OS “swim lanes” are still immense.At the time of this writing, Docker is only about 2.5 years old; it’s quite a feat that they have earned such wide adoption and interest across both Windows and Linux. I expect a lot of benefits ahead for my organization’s use of Docker. How do you plan to use Windows and/or Linux containers to realize benefits in your organization?