At Bank Mendes Gans, our System Team introduced Containers to the large and international team of developers. We tried to help our introduction to containers by explaining a very Dutch phenomenon: Summer Holiday Caravanning (to France) and bringing all food and supplies with you for the holiday. You could basically survive on the camp site, never needing to go to a local supermarket. With only a bit of electricity and a lavatory close by for 3 weeks. Growing up in a middle class family in The Netherlands this way of ‘celebrating holidays' was very well known to most Dutchies in the room.
With all this Caravanning information now known; how is this related to Docker and Containers you might ask? Let’s move on and you’ll see where these concepts are related.
What is a container?
The innovation of containers started somewhere in the early 2000s with (now) Big-Tech companies like Google investing into Linux Control Groups. The reason behind this is mostly because Containers save a lot of energy when compared to Virtualisation. Containers are like virtual machines, but much smaller. Although the start was in the 2000s, it was not until very recently that the container innovation started to accelerate and become mainstream.
A quick recap
In the iron age (left) you see just 3 layers, Hardware, Operating System and Apps. There is little flexibility and there was much operations work in managing both hardware and operating system. Then the Application’s environment/dependencies again required more operations and management.
We quickly (around 2005) moved into the Virtual Age where a Hypervisor made sure you had your own Virtual Machine with OS in isolation. This was again a revolution because it allowed to organisations and sysadmins to provide a standardised environment without the huge waste of idling machines. VMware was the ‘Oprah’ of environments: “you get a VM, you get a VM, everyone gets a virtual machine!”.
Then the current revolution we’re in the middle of; the Container Age (I Promise this is the last time I use the word revolution). A Container centers around packaging a single process. You build the container once, then you run it anywhere (like a VM, but much smaller). It is therefor much more lightweight than a VM. This is like the Caravan we talked about earlier, all the supplies (binaries, dependencies) are inside the container. The only thing the container runtime needs to do is “press play” on the container!
Properties of a container
Lightweight environment for running applications
Hermetically sealed static binaries
No External Dependencies
Isolated Applications running on a single host
Resources, Users, Filesystem, Network
Moves us from ‘Idealised Hardware’ to an ‘Idealised OS’
Why Should Developers Care?
When you are a developer, why should you care about containers? We are confident that you should care a lot about containers because world is moving towards DevOps quickly. This means that a number of previously Operations tasks are entering the developer sphere.
Static application environments
No stress deployments
Repeatable runnable artifact
Develop here, run there Pick your cloud solely on its merit
Easier to build and manage
Compose application from micro-services facilitates re-use
Containers offer an environment where you build the production environment during development, then never having to change it. the exact same binary that runs locally, will run on production: practically solving all configuration management nightmare scenarios
‘Bring everything you need' is a concept important to both Caravanning and Containers 😉 Using Containers you solve the 'Works on my machine’ configuration management nightmare and can enjoy reliable deployments and portability between environments.