Why Write About Docker?

TL;DR Docker is great and I’m writing a book about it. You can buy the Docker in Action MEAP at http://manning.com/nickoloff/ and get 50% off if you use “mlnickoloff” as the promo code during checkout.

Like most I have big ideas and I would love to see them become a reality. Much to my displeasure, there are limits to how much I can accomplish. Discovering your limits is both frustrating and invigorating. It is invigorating because if you hit your limit, you know that you are exhausting your time. Limits change when the context of how you work changes. Almost two years ago, the context of how I work changed when I stumbled across Docker through Hacker News.

I had my favorite tools for building things quickly. At the time I was a big fan of Apache Thrift for my IDL and the Spring Data project for cranking out API’s quickly. I had put together a few POCs when I started thinking about metrics. I identified Graphite as a great starting point. I spent something like 8 hours trying to get it to work while crunching through several installation guides. I crawled forums and Stack Overflow. It was a really terrible experience. This happens quite often, especially with OSS. The notion that I should somehow be an expert in the tech stack that a project uses as a prerequisite to using it drives me nuts. After all there are a ton of stacks out there, and I have my limits. I shelved the project.

When I discovered Docker, I immediately recognized its place in my stack. I needed a way to perform releatable distribution and deployments. I needed to be able to work with software the way the authors intended. It reminded me of core functionality of a powerful tool that I’d been using at Amazon for a while. At Amazon we know it as Apollo, but the world now knows it as AWS CodeDeploy. So, I decided on a test.

I wanted to install and use some OSS without knowing anything about it. I installed Docker and with a single command downloaded, installed, and started PostgresSQL. Wow. I spent the next half an hour downloading and installing everything I could think of. I’ll be the first to admit that it was careless. You shouldn’t download and install things just because you can. But I couldn’t believe what was happening. On my home computer, I accomplished more in that 30 minutes than I would typically get done in days. As soon as a good Graphite image came out earlier this year, I installed that too. Doing so with Docker took about 30 seconds.

Once my wide-eyed thrill subsided, I stopped and removed all those projects just as easily. My life had changed. My whole perspective had changed. It was bigger in my mind than the first time I used Apollo. It was a bigger deal because it was OSS, and it was in my house. A huge personal productivity limit had just been demolished.

I was smiling and ranting about it for days. I presented it at Desert Code Camp in Phoenix, AZ a few times. I presented it at the AZ Software Community Meetup. I raved about it to my coworkers until they were sick of hearing about it. I even told my parents, who I’m sure have no idea what I was talking about.

People who listened adopted it. They ran with it.

I got a ton of practice introducing people to the concept. I showed them how introducing Docker and related projects into their workflow and operations would change they way they work. I know concepts are hard for different groups to understand. I know how to show them the same eye-popping revelation that I had. I know where its limits are and keep abreast of what Docker Inc. and others are doing to break those as well.

This fall I was approached to write a book on Docker by Manning Publications Co. I took the opportunity. I’ve written the first three chapters and released them through the Manning Early Access Program (MEAP). This program gets the material to the readers before publication. So that they can benefit from it, and the author can benefit from their feedback. MEAPs make books better. I’m proud to have the opportunity to help people get to know Docker, containers, and really the whole container ecosystem.