Saturday February 11, 2017
Docker is the cool new technology. Last year, it had 264% YoY growth in Stack Overflow questions.1 And with good reason. Docker solves a lot of software development and systems engineering challenges. It provides a great solution for development and testing environments, enabling developers to test their code in an environment very similar to production (assuming production runs on containers). Even if production doesn’t run on containers, many developers still prefer Docker over virtual machines for development and testing because of the advantages it provides for speed and consistent state.
With the rapid growth Docker is experiencing, it seems like everyone is trying to learn how to use the technology. In fact, I’ve invested many over the last year in teaching myself to use Docker. When I was just starting out, I spent a lot of time searching for the quickest, easiest way to learn.
When I learned Git many years earlier, I used a really great website called Git Immersion. Essentially, this walks you through pretty much everything you might want to do with a Git repository. It assumes nothing, and starts with the most basic principals. But by the time you reach lab 15 or 20, you start to feel like you really know what you’re doing. You start to feel comfortable using Git because you’ve been actively using it as part of every lesson.
And there’s actually reason behind this learning methodology. Educators know that people learn more by doing things than they do by reading about them. If you read a book about a new technology, even if it feels like you learn a lot from the book, you won’t feel at-home when you start to use it for the first time. You won’t feel comfortable with it. Git Immersion is based on the premise, “to know a thing is to do it.” When you work through Git Immersion, you don’t just read about Git. You use it. You build something with it. And this is critical for the effectiveness with which it helps you learn.
When I began teaching myself Docker, I was looking for something that would teach me Docker in the same way Git Immersion taught me Git. A walk-through of sorts, that would teach me how to build things with Docker from the ground up. While I found a few good books and reference materials, I never found exactly what I was looking for. (But I do recommend The Docker Book if you’re serious about learning Docker.)
Now that I know Docker pretty well, I’ve decided to create the type of lessons that I wish I had when I was learning. Container Immersion is a “guided tour” for Docker, written in the spirit of Git Immersion. It is hosted on Github via Github Pages, so it is open source and anybody can use or contribute to it. I don’t know if it will ever turn into a very popular project, but I enjoyed writing it and I hope someone finds it useful.