Contain your enthusiasm – Part Three: Docker


This final installment in a series of blog posts on containers looks at Docker, and the solutions it provides.


dockerAnd finally, Docker.

Docker is a container system similar to FreeBSD Jails, Solaris Zones, OpenVZ, and LX'€¦ Actually, here'€™s the surprise: Docker is just a layer on top of LXC. So if you read up on all of the linked material on LXC that I referenced in Part 2, you'€™ve got a good understanding of Docker already!

Docker isn'€™t just LXC, though. It has an assortment of other features: persistent and mounted storage, network port redirection, and container catalog management.

So why has Docker gained so much popularity if it simply repurposes something that already existed? In my completely unsubstantiated opinion, I think a lot of it is from being in the right place at the right time. As this series has shown, container technology is nothing new '€” modern solutions have been around for at least a decade.

Virtualization solutions of all types have become more popular in the recent years with the rise of cloud computing. For containers in particular, people are finding that they'€™re a great fit for PaaS clouds. A new project introduced during a time of peak interest is bound to get more attention than older projects.

But that isn'€™t to say that Docker has unfounded popularity. Technology-wise, it'€™s a very worthwhile project. To highlight this, I'€™ll describe the usefulness of Docker'€™s container catalog management system, called the Registry.

You can follow along by installing Docker. Here are the instructions to get Docker installed on an Ubuntu 12.04 system. The system can be a physical or virtual machine. Try it out '€” it'€™ll take 15 minutes at the most.

Once you have Docker running, execute the following command:

root@jttest:~# docker search ubuntu

A large list of various Ubuntu Docker containers will be returned. You can download any of these and import them into your Docker server. This is very similar to OpenStack'€™s Glance component, but with the added benefit of a central community catalog.

By contrast, LXC has no concept of a catalogue. Instead, you must manually build each container from scratch.

I mentioned PaaS earlier. Docker can be a great choice for PaaS environments. Try the following searches:

root@jttest:~# docker search memcached
root@jttest:~# docker search mysql

The results are ready-to-run containers with memcached or MySQL already installed.

With a readily available catalog of containers, does this spell the end of IaaS? Absolutely not. As mentioned in Part One, containers share the same kernel as the host server. IaaS does not have this restriction. This alone makes IaaS still very relevant.


That about does it for this series. Container technology is very interesting and I'€™m confident that we'€™ll see new developments with it over the next short while. I hope this series was able to provide a solid foundation of what containers are and how they work, so you can follow along with these developments!