A Docker Primer

Edit: Some links no longer work.

Originally posted June 16, 2015 on AIXchange

Lately I’ve been reading about Docker, and it seems to keep coming up everywhere I look. If you haven’t heard of it, it’s an “open platform for developers and sysadmins to build, ship, and run distributed applications.” Here’s more from Docker’s website:

Why do developers like it?    

“With Docker, developers can build any app in any language using any toolchain.   “Dockerized” apps are completely portable and can run anywhere — colleagues’ OS X and Windows laptops, QA servers running Ubuntu in the cloud, and production data center VMs running Red Hat.” 

Of course I must take this with a grain of salt, since Docker doesn’t support x86 applications running on POWER8 systems or vice versa. Still, it’s an interesting concept, and Docker does fully support running POWER8 applications on other POWER8 systems — all you need is an OS that has Docker installed. I’ll get to that in a bit.

Why do sysadmins like it?    

“Sysadmins use Docker to provide standardized environments for their development, QA, and production teams, reducing “works on my machine” finger-pointing. By “Dockerizing” the app platform and its dependencies, sysadmins abstract away differences in OS distributions and underlying infrastructure.”     

How is this different from Virtual Machines?    

“Each virtualized application includes not only the application – which may be only 10s of MB – and the necessary binaries and libraries, but also an entire guest operating system – which may weigh 10s of GB.”     

Docker    

“The Docker Engine container comprises just the application and its dependencies. It runs as an isolated process in userspace on the host operating system, sharing the kernel with other containers. Thus, it enjoys the resource isolation and allocation benefits of VMs but is much more portable and efficient.” 

To learn more about Docker, I turned to Twitter and found this link to five videos. While some are rather long, they’re all informative:     

“When you’re interested in learning a new technology, sometimes the best way is to watch it in action—or at the very least, to have someone explain it one-on-one. Unfortunately, we don’t all have a personal technology coach for every new thing out there, so we turn to the next best thing: a great video.     

First up, if you’ve only got five minutes (well, technically seven and a half), watch this. At Opensource.com’s lightning talk series last fall, Docker contributor Vincent Batts of Red Hat gave a great overview of what Docker is, what containers are, and how these technologies are changing the way system administrators and developers are working together to deploy applications in a modern datacenter.     

Now, you understand the concept, so let’s take a slightly deeper dive. Docker founder and CTO Solomon Hykes takes you beyond the basics of containers and into how Docker works, what problems it solves, and some real-world demos.” 

I’ve found that it’s simple to get Docker working on Power systems using Ubuntu 15.04. Once I had Ubuntu running on my system (a trivial process consisting of downloading the .iso to my virtual media repository, creating a Linux LPAR on a POWER8 machine and installing the .iso image), I ran:             

apt-get install docker.io 

For more on the installation process, see this piece from IBM developerWorks

While I’m at it, developerWorks has two other related resources — this how-to on using Ubuntu Core with Docker, and this more general Docker write-up:     

“Docker is an open-source container engine and a set of tools to compose, build, ship, and run distributed applications. The Docker container engine provides for the execution of applications composed as Docker images. Docker hub and Docker private registries are services that enable sharing of Docker images. The Docker command-line tool enables developers to build Docker images, to work with Docker hub and private registries, and to instantiate Docker images as containers in a Docker container engine. The relatively small size of Docker images—compared with VM images—and their portability enable developers to move applications seamlessly between test, quality assurance, and production environments, increasing the agility of application development and operations.” 

For me it was pretty interesting to fire up a Docker image of Fedora and run it on my Ubuntu machine. As far as the workload knows, it’s running on Fedora, but under the covers Ubuntu is running on a POWER8 machine. Of course nothing beats hands-on experience, but if you’re familiar with the concept of WPARs, Docker shouldn’t be hard to grasp. 

Even if you don’t intend to run it in production any time soon, I believe that Docker is worth exploring. Again, downloaded Power images and POWER8 “Dockerized” applications run on Docker just fine. It’s another interesting environment in which to work. So is Docker in your plans?