"Docker Up & Running" by Kane & Matthias

A very good book for those starting with Docker, as well as the more advanced dev who feels that they're missing a strong foundation. Highly recommended!

"Docker Up & Running" by Kane & Matthias

This post is part of my Book reviews series, where I share thoughts and impressions on the books I read.

"Docker Up & Running " is written by Sean P. Kane and Karl Matthias and published as the 3rd edition in 2023 by O'Reilly.

Getting up to speed on what Docker is, how and why it works the way it works, and getting you ready to use it in your own architectures.

The book covers as well the ecosystem around Docker, from controlling to logging to scaling, giving you a good overview on what tooling is available and what are their benefits.

373 pages divided into 14 Chapters with code examples, schemas and screenshots of web interfaces in a few places.

👩‍💻🧑‍💻 Who is this book for?
Software developers who need/want to work with Docker, as well as DevOps specialists who want a fundamental refresher on Docker and its inner workings.

This is as bleeding-edge of a book on Docker as you will find today, and the authors take great care to reflect the evolution of the tooling and Docker itself, as well as what's currently production-ready and what tools you should probably not use anymore.

The authors constantly highlight the security side of running Docker containers, and they drill the point very well throughout the book, especially in places where their instructions would lead you to run the containers exposed.

The pervasive advice on what makes sense - and what doesn't - to run in production from their examples.

The deep-dive into what really makes Docker work on the Linux kernel side (e.g cgroups and namespaces) was very good, beautifully explained and a section from which I learned a lot.

There are suggestions in each chapter aimed at the daily user of Docker - either software devs or DevOps people - for what could or should be a production-ready version of their examples. I found this to be very useful, and a great departure from what you usually read in other books.

The pacing of the book is fantastic, one of the best I've experienced so far! But you also get a significant (more than 30% of the content) proportion of content dedicated to advanced use cases, which I found to be very useful.

Speaking of advanced topics, I really liked the last chapters, especially the parts where they explain how Docker runs under the hood (e.g dockerd, containerd, runc, etc.).

There is quite a bit of content dedicated to the networking part, both inside of docker as well as how to work with this topic on the host; though probably not the sexiest part that an average dev wants to deal with, I found it very useful for understanding how things are setup.

There is a lot of advice on how to scale things up, mostly focused on Docker Swarm and Kubernetes, which is a very good starting point for someone new to the field. The authors give you just enough to get you started, and they really succeed in not throwing the kitchen sink at you in terms of the monster of a platform that is Kubernetes.

Editing quality is very good, within normal bounds for an O'Reilly book but slightly less than what I came to expect (see Dislikes section).

Some sections are a bit "fluffy", explaining in a slightly salesy and semi-businessy words the benefits of Docker; I guess such a book needs this as well, but my assumption is that whomever bought this book is already aware of the benefits of Docker, and doesn't need to be further "sold" on its value.

There are a few small mistakes, less than half a dozen, one likely being a remnant of a previous edition and the others small typos; it would be nice if those could be cleaned up in the next edition.

This is very much a personal preference, but I found the constant notices of "the URL has been continued on the following line..[...] you need to reassemble the URL to work properly" to be annoying; once would have been sufficient in my view, or alternatively just mark it with a reference as show the notice in the footer of the page instead of wasting valuable page space.

I am conflicted myself on whether the section "Amazon ECS and Fargate" makes sense to be in the book; personally I would not have it there, as that type of content tends to be very specific and risks becoming stale very fast.

🚧 Improvements I would suggest
Fix the few typos and mistakes + remove/minimize the visual impact of the URL continuation notices.

Potentially remove half of the content which is aimed at selling the benefits of Docker, as I don't believe there's a need for it; rather use that space to add more advanced use cases and examples.

Add another chapter, even if it increases the book size, dedicated exclusively to a minimal-but-working production-level setup of Docker and Kubernetes, for a microservices architecture. Ideally going a bit more into the weeds and showcasing examples as well, similar to Chapter 10 - Containers at Scale but exclusively dedicated to Kubernetes and microservices.

Add more explanations and go a bit more in-depth on the copy-on-write approach of the layered architecture of the filesystem, also the images construction and working. I feel this topic could benefit from more advanced explanation, especially the this aspect is handled on the filesystem side.

🤔Final Thoughts
A very good book for those starting with Docker, as well as the more advanced dev who feels that they're missing a strong foundation. Highly recommended!

The book offers a massive amount of valuable concepts, information and actual commands that will help you get from zero to advanced user by the time you finish reading it. Of course, you could argue that all this information is available for free online, but I believe you'll waste countless hours digging through lots of historical layers and useless Medium posts before you'll get to the same amount of on-point, up to date and well explained information that is delivered here.

I'm grateful to the authors for the work this took, and hope that they will continue with future editions as well.