What is Docker? A Layman’s Explanation
In the technology world, things have a funny way of being “reinvented” such that the same ideas are re-packaged as the next greatest thing since sliced bread, despite the fact that we’ve seen the whole dog and pony show before. First, there were “mainframes” (centralized computing), then we went to workstations (decentralized computing) then we decided to invent “the cloud” (centralized computing) then finally decided that we needed that to go away yet again, and move towards something called “edge computing” (decentralized computing). It’s all rather confusing, but we simply nod our heads and roll with the punches, talking about “the next big thing” along with everyone else. Then, there’s something called Docker.
How We First Heard About Docker
What we’ve noticed is the rate at which these things change has increased to such an extent that we can barely keep up with it. Nowhere was that more apparent than at the Re.Work Applied AI Summit in Houston which we attended a few weeks ago. During the event there were two tracks; the first was where the MBA-types went to hear spiels that weren’t tech enough to scare anyone and the second was where the look-and-feel of the audience changed dramatically such that lots of bearded guys in flannel shirts nodded along with the presenter as he (usually a he, though there was definitely an attempt at corralling in a few ladies) blabbed on about “Kubernetes this” and “Jenkins that.” A senior data scientist at eBay gave a presentation that was so completely inaccessible for our small brains that we just guzzled free coffee and fake-nodded along with all the others, silently praying for the pain to stop.
If you’re even the slightest bit up to speed on AI development, you would have enjoyed the applied part of the event, and we did come away with a few observations. One was that the word “Docker” was used in just about every single presentation we saw, and that’s no surprise considering how popular the term “Docker” has become over the past five years:
This left us wondering just what is Docker and why should we care about it? If you’re not some coke-bottle-glass-wearing nerd who will now start reciting the latest Docker releases notes backward, here’s an accessible explanation for your average layperson who wants to know what Docker is.
What is Docker?
Founded in 2010, San Francisco startup Docker has taken in nearly $273 million in funding from a whole slew of investors including some big names like Goldman Sachs and Sequoia. Companies that use their platform report a 300% improvement in time to market, while reducing operational costs by 50%. If you know the slightest bit about the complexity of developing software, these numbers are just too good to be true. How do they do it? With something they call “containers.” Before we try and understand what a container is, let’s talk about a basic use case for a container when developing software. At least in the olden days, we used to refer to this use case as “interoperability.”
In order to understand Docker’s value proposition, you need to firstly understand a little bit about how software development works. Take for instance, the machine that you’re using to read this article. Think about how many applications are functioning together to make that happen. The ability for all those applications to play together nicely is commonly referred to as “interoperability.” Now, let’s say you install your newly application on that device and everything blows up. You report the problem to John-in-Mumbai, and he says that the app works just fine for him. How can you isolate the “works on my machine” problem?
Well, you might create an instance of that device with no other apps installed, and then you might start adding them slowly, one by one, until something breaks. Rather than buy 25 different devices to do that, it’s much better to just have “virtual machines” that emulate hardware devices. That idea is what spawned a $67 billion company called VMWare (VMW). Virtual machines are “images” on which you can install Microdot Windows (for example) and then install various applications on top. At any given point in time, you can copy these images and duplicate them. Suddenly, you can have 10 different duplicate environments, all in the time it takes to copy the images. Provided you have lots of disk space, and a powerful machine to run them all on, you can create as many virtual machines as you want to emulate as many environments as you want.
So, how are containers different from virtual machines?
Containers vs. Virtual Machines
The first question on our minds when we read about the concept of a “software container” was how do these containers differ from virtual machines? Is this just the same thing packaged differently? The company itself recognizes this common question as you scroll down the first page of the website and come across the following:
Still trying to learn more about containers and the difference between a container and a virtual machine (VM)? Find out what’s possible with Docker Containers.
So, we did try to find out what’s possible, and came away with the understanding that containers are just an alternative to virtual machines that run leaner and help you deploy applications quicker. A Docker container, unlike a virtual machine, does not require or include a separate operating system. Instead, it essentially just talks directly to the computer’s hardware.
If you think about using containers in a production environment, suddenly the “interoperability” problem is solved because each app runs in its own environment and doesn’t have to play nicely with others because it doesn’t need to interact with others (kind of like how liberals and conservatives in ‘Murica act today).
The concept is simple to understand, because it is quite simple. It’s also simple to use, and developers love it so much that it has now been downloaded more than 18 billion times. This company has pretty much dominated “container technology” and the words Docker and container are now becoming synonymous, much in the same way Xerox managed to become synonymous with copying.
It’s tough to keep up with the world of software development as we continue to rename everything at the speed of light. (Actually, we don’t even call it software engineering anymore people, we call it DevOps.) If you’re someone who wants to sound like they know some technical basics about artificial intelligence, you better know the basics about how software is being developed today. Moreover, if you’re an investor whose looking for picks-and-shovels investments to make, it’s especially important to know what tools are being used to develop software as we near the end of yet another decade of software development. Docker is one of those tools.
If you enjoyed this article, then sign up for our free newsletter - Nanalyze Weekly. About every week, we'll send you a simple summary of all our new articles. If you didn't enjoy this article, share it on Twitter and tell everyone how much you hated it.