To all those engineers who struggle with ramp-up curves on new software tools!
The idea of writing this book occurred to me while I was ramping up on Docker during my first year at Pinterest. There is a lot of content on the Internet, but it is unstructured and sometimes incorrect and inaccurate. This book will help you to understand the fundamentals of Docker. To understand anything in depth, it’s best to start with basic concepts. Over the past years, the needs of tech companies have evolved significantly. This book will help you understand the need for Docker in the software industry and how Docker has managed to ease the growing pains of this industry.
I have tried to structure this book by explaining the fundamentals before going into anything specific to Docker. I hope that helps you understand the fundamentals of Docker.
My hope, too, is that this book is useful to both students and engineers who want to ramp up on Docker quickly.
The following sections provide a snapshot of the book.
This chapter focuses on what Docker is all about. It’s about containers. But what are containers and how do they differ from virtual machines? Why does Docker make use of container technology and what are the benefits of that? What are the advantages and challenges of containerization? At the end of this chapter, you will have learned the underlying technology of Docker.
This chapter focuses on how the software industry evolved and what gave rise to the need for containers and, therefore, Docker. In this chapter, you’ll learn the history of Docker, in addition to some of its basic use cases today.
Because this book focuses on debugging microservices using Docker, this chapter talks about the evolution of microservices, the differences between monolith and microservices, and the advantages and challenges of both. It will help you understand why debugging becomes significantly difficult when you’re dealing with multiple services that all need to talk to one another.
This chapter is all about taking the first few steps to begin working with Docker. This section discusses the terminology used in the Docker world, the underlying architecture of Docker, how to install Docker, and some basic Docker commands. This chapter is your go-to to step foot into Docker land.
This chapter goes deep into what Docker images are and how they’re created. It examines Dockerfiles, which is where all the instructions to build Docker images are located. Then it goes into how to build Docker images and, finally, into Docker containers in depth. I would encourage you to take some extra time to understand the role of Dockerfiles, Docker images, and Docker containers. I’d also advise acquiring a thorough understanding of this chapter.
This chapter is devoted to the Docker Compose tool. This links all the services and helps in running an application from end to end. Here you’ll learn all aspects of Docker Compose: how to install it, how to use it, and what happens behind the scenes.
This is what the book has been leading to. This chapter is the core and longest chapter of this book. It explains what distributed environments are and their challenges. It later goes into depth about how to debug an end-to-end real-world use case, by explaining different related debugging techniques.
After exploring how to debug an application, based on the microservices architecture, this chapter discusses some advanced use cases of Docker. It talks about the use of Docker in a production environment, orchestration using Docker, and offers some tips and tricks to help you with the software.
Writing a book requires teamwork. I’m lucky to have found a team of thorough tech reviewers such as Michael Erwin and James Markham, who revised my content thoroughly to ensure that this book is completely most up to date. Thanks, Apress, for the opportunity, and Nancy Chen, for all the hard work of coordination and keeping me on schedule.
This book took a long time to complete. In the past few months, I wanted to give up multiple times. It was my husband’s push and support that ultimately got me to the finish line. I can never thank you enough, Abhinav Vora.
Thank you to all my family and friends for being so patient and understanding of the lack of time and attention I was able to devote to you these past months. Your support and motivation kept me going.
has worked in the tech industry for a dozen years and is currently an engineering manager at Pinterest in the Ads division. Previously she worked on the machine learning Homefeed infrastructure team where she used Docker to develop the debugging framework.
Kinnary previously worked at Uber and Microsoft, is the author of three books, and holds six patents. You can follow her on Twitter at @kjangla .
is an application architect at Virginia Tech who is striving to modernize how software is developed and run on campus, by driving the adoption of Docker-based workloads, CI/CD pipelines, the public cloud, single-page applications, and more. As a Docker Captain and Community Leader (Meetup Organizer), he has the opportunity to share his expertise and experiences with others but also learn how others are using the latest technologies. When developing, he writes code in Node, Java (Java EE mostly), and JavaScript but actively contributes to projects written in other languages and frameworks. He’s blessed to have a beautiful wife and four daughters.
18.119.157.39