The Return of the Container
Posted by Maish Saidel-Keesing
Containers are not a new concept – there are several implementations that have been around for quite a number of years, be
it Solaris Containers, Linux-V-Server, OpenVZ, or LXC.
So why has this become a hot topic, something that has many people turning their head and looking at it once more. Well that is
quite simple. This is due to a huge amount of interest in Docker.
Let us first start with a brief history of who and what Docker is (some of this information is readily available on their website – or
Docker provides a high-level API extension on top of Linux Containers (LXC), providing a lightweight virtualization mechanism
that runs processes in isolation. A Docker container utilizes the underlying cgroups and LXC mechanisms on the host operating
system, that provide resource isolation (CPU, memory, block I/O, network, etc.) and separate namespaces to completely isolate
the application's view of the operating environment.
Developers dig it!
They are completely portable – that means they will run exactly the same on a developer laptop – be it OS X, Windows or
Linux, or on server hardware in your datacenter – not matter what the flavor of Linux the metal is running – or in the cloud – any
cloud provider will do.
The developers are able to build any app, in any language using any toolchain. They can get going in a jiffy by starting any one
of the ~13,000 containers available on Docker Hub. All of the changes and dependencies are tracked and changed by Docker,
making it easier for sysadmins to understand how the apps that developers build work. Developers are comfortable with the
concept of private or public repositories – where they can automate their build development workflow incorporating docker
without having to change the way they work.
The quote below from the Docker web site is completely true.
“Docker helps developers build and ship higher-quality applications, faster.”
Sysadmins think it’s groovy!!
Sysadmins (those guys who make everything just work – but no-one really knows how) use Docker to provide standardized
environments for all the difference stages of the product lifecycle. Development, QA, staging and production teams, all have the
same platform – and this reduces “works on my machine” blame game.
This is achieved “containerizing” the application platform and all its dependencies, which allow the sysadmins to provide an
abstraction layer making the differences in Operating systems and the underlying infrastructure irrelevant.
An additional benefit is that the sysadmins can decide that the container becomes the unit of deployment. This gives now them
the huge flexibility in choosing where workloads will run. On -premises bare metal, data center VMs or public clouds, they will
all use the same unit – the container.
Last but not least - the Docker Engine’s lightweight runtime, allows for insanely rapid scale-up and scale-down in response to
changes in demand on the actual application.
The quote below from the Docker web site is summarizes it well.
“Docker helps sysadmins deploy and run any app on any infrastructure, quickly and reliably. “
Hey – you just described virtual machines – didn’t you?
There a basic and fundamental difference between VM’s and containers. A VM is usually a full OS – which requires a decent
amount of resources. A container’s sole and only purpose is to run an Application – on top of an OS, it does not need to run a full
OS, only the application. Therefore that makes the container smaller – considerably smaller. It also makes containers extremely
portable. This can increase consolidation density exponentially.
What does this mean for your datacenter?
Containers will affect the way you provide services in your datacenter – to what extent is not yet clear.
It should provoke your thinking and you should ask yourselves the following questions – in preparation for the future.
Will containers replace VM’s or instances?
o I think it is too early to know, but there is a very valid use case for using containers.
Are they suitable for every single use case?
o Definitely not! But there some use cases where they fit perfectly!
Are they 100% production ready?
o Currently I would say they are not. But then again – the question you should be asking yourself – is
production the correct use case?
Will this change the datacenter of the future?
o Yes – but exactly how I think will still evolve over the next couple of years.
Should you start looking at containers today?
o A definite yes! I think you would prefer to be that company that acts proactively – ahead of the curve – and
not the one that has to rush to implement something because the customers already are demanding it – and
you are late in the game.