I am honored to having written a foreword for Jeff Nickoloff’s new book, Docker in Action from Manning Publications. I made acquaintance with Jeff through his marvelous blog posts on Docker and microservices. Make sure you check out his book.

My foreword:

I heard about Docker for the first time in a YouTube video that was posted to Hacker News from PyCon 2013. In his 5-minute lightning talk entitled “The Future of Linux Containers”, creator of Docker, Solomon Hykes, was unveiling the future of how we ship and run software to the public; not just in Linux, but on nearly all platforms and architectures. Although he was abruptly silenced at the 5-minute mark, it was clear to me that this technique of running Linux applications in sandboxed environments with its user-friendly command line tool and unique concepts, such as image layering was going to change a lot of things.

Docker vastly changed many software development and operations paradigms all at once. The way we architect, develop, ship and run software before and after Docker is vastly different. Although Docker does not prescribe a certain recipe, it forces people to think in terms of microservices and immutable infrastructure.

Once Docker was more widely adopted, and as people started to investigate the low-level technologies utilized by Docker, it became more clear that the secret to Docker’s success was not the technology itself, but the human- friendly interface, APIs, and ecosystem around the project.

Many big companies such as Google, Microsoft and IBM have gathered around the Docker project and worked together to make it even better instead of creating a competitor to it. In fact, many companies, like Microsoft, Joyent, Intel and VMware, swapped out Docker’s Linux containers implementation but kept the novel Docker command-line interface for their container offerings. In only two years, many new companies have sprouted to enhance the developer experience and fill in the blanks of the Docker ecosystem. The sign of a healthy and enthusiastic community around Docker.

For my own part, I began helping Microsoft adopt and contribute to Docker by publishing Microsoft’s first official Docker image for cross-platform ASP.NET. My next contribution was porting the Docker command-line interface to Windows. This project helped many Windows developers become familiar with Docker and laid the foundation for Microsoft’s long journey of contributing to the Docker project. This project also skyrocketed me to the top Docker contributor spot for more than two months. Later on, we contributed many other bits and pieces to make sure Docker is a first-class citizen on Microsoft’s Azure cloud offering. Our next big step is Windows Containers, a new feature in Windows Server 2016, fully integrated with Docker.

It is exciting to know that we are still at the start of the containers revolution. The scene moves at an incredibly fast pace, as new technologies and open source tools emerge daily. Everything we take for granted today can and will change in the next few months. This is an area where innovators and the greatest minds of our industry are collaborating to build tools of mass innovation and make the problem of shipping and running software at scale one less thing to worry about for the rest of the software industry.

Through his many online articles about Docker and microservices, Jeff Nickoloff has shown himself to be the champion of the nascent Docker community. His well- written, but thorough explanations of some very technical topics allowed developers to quickly learn and leverage the Docker ecosystem for all its benefits and, equally importantly, its drawbacks. In this book, he goes from zero to Docker, shows practices of deploying Docker in production and demonstrates many features of Docker by comprehensive descriptions and comparisons of various ways of achieving the same task.

While reading this book, you will not only learn how to use Docker effectively, but how it works, how each detailed feature of Docker is meant to be used, and the best practices concocted for using Docker in production. I personally had many “oh, that is what this feature is for” moments while reading this book. Although writing a book about a technology that moves at an incredible pace like this is very much like trying to paint a picture of a car moving at 60 mph, Jeff has done a fantastic job at both covering cutting edge features in Docker and also laying a solid foundation throughout the book that builds an appreciation and understanding for the containers and microservices philosophy that is unlikely to change no matter what Docker looks like in the coming months and years.

I hope you find this book as enjoyable and educational as I did.