It’s been a while since I’ve blogged here and as I’ve been looking at the hottest thing in “hipster tech” ( see below for a defintion) in Docker thought I’d get that blogging mojo back by starting to share my thoughts on that subject!
For a detailed description of Docker there are plenty of great articles, slide decks and videos. The Docker site is a good starting point and this page what is Docker has two diagrams that graphically depict what Docker is about versus a VM. This post from Sleekd discussing the difference between Docker vs Virtualization is also a nice background read for the layman so I won’t be repeating a Docker 101 here. To set the scene though I summarise Docker like this :
- Provides Operating system level virtualization. containers run user space on top of an operating system’s kernel. That makes them lightweight and fast.
- It uses resource isolation features of the Linux kernel such as cgroups and kernel namespaces to allow independent “containers” to run within a single Linux instance
- It uses the power of Linux containers (LXC) ( although more accurate to say it has evolved from here ) and aufs (Another Union File System) to create a way of packaging and process isolation
- It Allows you to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package.
- Docker allows applications to use the same Linux kernel as the system that they’re running on and only requires applications be shipped with things not already running on the host computer. This gives a significant performance boost and reduces the size of the application.
- Ultimatley It should provide more certainty for application developers by providing a set of known abstractions that define how the application will run, no matter what hardware is underneath.
For a good initial deep dive on containers my current favourite slide deck is ths one : Inside Docker for Fedora20/RHEL7
Okay let’s start with a list of the fundamental issues that need to be solved first for mere mortals(see below for a defintion) to really get on board. No depth just headlines at this point with pointers to more info. Else I’d never have even got this post out to kickstart blogging again!
- Security – How to ensure isolation from the host? How to securely pass secrets around? How to ensure that the container is running trusted code ? etc This post from the project atomic team at RedHat is a good starting point to understand some of the security implications
- Management at scale – There are a ton of really smart folks working on this area and a number of tools are being worked on to take them out of the hipster tech arena and into the realm where you don’t have to worry about feeding & watering them. Jerome Petazonni’s deck on Shipping applications to production in containers with Docker covers some of the orchestration, service discovery and configuration management options which are all requirements for running Docker at scale
- Networking – Chris Swan’s talk at container camp London on Docker Networking articuated the issues pretty well
- Not production ready – Docker may be marked production ready and it is in production by many but those many are not mere mortals and have the resources available to work around the issues.
It’s early days and has a blossoming growing ecosystem. This lovely mindmap Makes a nice stab at illustrating the ecosytem that has been building around it ( Personally I would not have placed some of the tech in the sections they have been put in but hey it’s still lovely). Equally it shows the bewildering choices that have yet to be made with regards which if any approaches will win out and what may or may not suit your environment.
The potential however is huge and I think with a list of
USP’s that have what I’ve listed below you can begin to understand the rallying round and the fuss.
- Simplifying the use of containers ( Container technology is not new despite the hype)
- Micro services
- Mutable infrastructures
- PaaS solutions
In upcoming posts I’ll discuss some of the ecosystem tools where Ive had hands on ( promise it won’t take years though) , some of the issues and the USP’s in more depth .
This post was just to get me into blogging mode again !
I won’t however be neglecting my passion for Devops though ( It’s not just about the tools stoopid! although I’ll probably be talking about the tools a lot!!)
My defintion of Hipster Tech – Latest cool idea in Tech where the hype has over taken the reality but the potential is very high on the potential-ometer.
Thanks to @chrismunns for the succinct definition of mere mortals – Those running responsible and performant production environments
( My spin i.e no time to get distracted by debugging and feeding & watering the tools they use to deploy those solutions but focusing on deliverng value to their business)