Why Are Linux Containers "New" and Cool…Again?
Linux (and Unix) containers aren't new, in fact, containers have been around for quite some time in different forms such as LXC, Solaris Zones and FreeBSD jails. But the Docker project is now the leading container project and one of the most active projects within the Linux community.
So why is this; what makes Docker containers more popular than previous incarnations of Linux/Unix containers and why is this important for business?
There are three main technical elements to this success:
-
An infrastructure and content agnostic packaging format
- The Docker packaging format is agnostic to the application content within, providing the same packaging format regardless of the application language used.
- Because we also package all of our application dependencies, we do not need these packages pre-installed on a container host infrastructure and gain greater independence from the infrastructure to which we are deploying.
-
A standardised management engine and API
- Again, regardless of what resides in our container, or where we have deployed it, we use the Docker daemon and API to manage the state (run/stop etc.) of our container.
- We can also build on this engine & API with container orchestration tooling such as Kubernetes which allows us to declaratively manage containers across a cluster of container hosts.
-
Capabilities within the mainline Linux kernel to support containers across distributions
- Previously container technologies typically only worked well (or at all) on one or a few distributions. This restricts and silos community size, usage and innovation.
- Docker is available across a wide range of Linux distributions because it leverages features (such as Cgroups and Kernel namespaces) in the mainline kernel, making this available across Linux distributions and communities.
- In Red Hat Enterprise Linux we are also using technologies such as SELinux to provide greater security and isolation
But its not simply about the technology drivers, it's also about business drivers and this is where containers really deliver value, especially in the new paradigms of Cloud Computing and Micro-services. There are three main commercial elements where containers bring value:
-
Get to market faster
- While containers alone will not magically get you to market sooner, they do enable development practices such as DevOps. These practices are based around lean principles, continuous integration and continuous deployment. The results of which aim to deliver more functionality to users, in shorter timeframes and with less risk.
- By packaging our application dependencies and ensuring consistency of the application image deployed, we can effectively eliminate risk of application drift or deployment errors through the software development life cycle.
- By reducing provisioning times and improving developer productivity through application development platforms like OpenShift, developers can develop, test and update application features faster than ever.
-
Scale applications with customer demand
- Due to the lightweight nature of container packaging and orchestration tooling such as Kubernetes, applications can scale in seconds or even milliseconds. Compared to VMs & Baremetal servers, which can take minutes, hours or even days to scale up, we can react to customer demand when required. Previously, due to the long lead times, you would need to cater for this with additional infrastructure head room which may never get used.
- We can also scale across different types of infrastructure and in different locations. Combined with the above, this not only allows us to scale our infrastructure when our customers need it, but where they need it also.
-
Drive down costs of delivery
- Containers are lighter weight than running VMs or workloads on bare-metal servers, meaning that we can achieve greater workload density, maximising resource utilisation.
- The infrastructure agnostic element of the containers gives us flexibility and choice in where we can deploy our applications (provided we are using the same Linux distribution). Applications can therefore be easily deployed or migrated to cheaper infrastructure when, and where, available.
- The content agnostic format, standardised management engine and API remove application specific requirements from deployment, allowing standardised management tooling and increased operational efficiencies regardless of what language is used by the contained application.
It's because of these reasons that containers have regained such popularity recently and this is why the majority of my customers are either evaluating, or actively testing the use of container technologies to improve their business results.
If you're interested in learning more about container solutions and how you can apply it to your business problems, I would recommend starting with the following articles:
- Forrest Whitepaper - "Maximize Container Benefits with a Top Down Approach "
- Get Started with Docker Formatted Containers on Red Hat Systems
I will also be publishing a presentation on container technology adoption at the end of our current presentation series around ANZ: Containers in the Enterprise. There's still time to register in certain cities if you're interested in attending the events.
Are you currently evaluating container technologies in the context of your business? I'd love to hear your thoughts and experiences.
Greg Koen: I don't think it's the Ken Thompson you think it is. Containers are very cool though! ;)
Cool again, containers have always been cool
For the aged among us: if someone called Ken Thompson speaks about Unix you'd better listen. Great article.