Table of contents : 1. Introduction The Promise of Docker Benefits of the Docker Workflow What Docker Isn’t Important Terminology Wrap-Up 2. The Docker Landscape Process Simplification Broad Support and Adoption Architecture Client/Server Model Network Ports and Unix Sockets Robust Tooling Docker Command-Line Tool Docker Engine API Container Networking Getting the Most from Docker Containers Are Not Virtual Machines Limited Isolation Containers Are Lightweight Toward an Immutable Infrastructure Stateless Applications Externalizing State The Docker Workflow Revision Control Building Testing Packaging Deploying The Docker Ecosystem Wrap-Up 3. Installing Docker Docker Client Linux macOS, Mac OS X Microsoft Windows 11 Docker Server systemd-Based Linux Non-Linux VM-Based Server Testing the Setup Ubuntu Fedora Alpine Linux Exploring the Docker Server Wrap-Up 4. Working with Docker Images Anatomy of a Dockerfile Building an Image Running Your Image Build Arguments Environment Variables as Configuration Custom Base Images Storing Images Public Registries Private Registries Authenticating to a Registry Running a Private Registry Optimizing Images Keeping Images Small Layers Are Additive Utilizing the Layer Cache Directory Caching Troubleshooting Broken Builds Debugging Pre-BuildKit Images Debugging BuildKit Images Multi-Architecture Builds Wrap-Up 5. Working with Containers What Are Containers? History of Containers Creating a Container Basic Configuration Storage Volumes Resource Quotas Starting a Container Auto-Restarting a Container Stopping a Container Killing a Container Pausing and Unpausing a Container Cleaning Up Containers and Images Windows Containers Wrap-Up 6. Exploring Docker Printing the Docker Version Server Information Downloading Image Updates Inspecting a Container Exploring the Shell Returning a Result Getting Inside a Running Container docker container exec docker volume Logging docker container logs More Advanced Logging Monitoring Docker Container Stats Container Health Checks docker system events cAdvisor Prometheus Monitoring Exploration Wrap-Up 7. Debugging Containers Process Output Process Inspection Controlling Processes Network Inspection Image History Inspecting a Container Filesystem Inspection Wrap-Up 8. Exploring Docker Compose Configuring Docker Compose Launching Services Exploring RocketChat Exercising Docker Compose Managing Configuration Default Values Mandatory Values The dotenv File Wrap-Up 9. The Path to Production Containers Getting to Production Docker’s Role in Production Environments Job Control Resource Limits Networking Configuration Packaging and Delivery Logging Monitoring Scheduling Service Discovery Production Wrap-Up Docker and the DevOps Pipeline Quick Overview Outside Dependencies Wrap-Up 10. Containers at Scale Docker Swarm Mode Kubernetes Minikube Docker Desktop-Integrated Kubernetes Kind Amazon ECS and Fargate Core AWS Setup IAM Role Setup AWS CLI Setup Container Instances Tasks Testing the Task Stopping the Task Wrap-Up 11. Advanced Topics Containers in Detail cgroups Namespaces Security UID 0 Rootless Mode Privileged Containers Secure Computing Mode SElinux and AppArmor The Docker Daemon Advanced Configuration Networking Storage nsenter Debugging Shell-less Containers The Structure of Docker Swapping Runtimes gVisor Wrap-Up 12. The Expanding Landscape Client Tools nerdctl podman and buildah All-in-one Developer Tools Rancher Desktop Podman Desktop Wrap-Up 13. Container Platform Design The Twelve-Factor App Codebase Dependencies Config Backing Services Build, Release, Run Processes Port Binding Concurrency Disposability Development/Production Parity Logs Admin Processes Twelve-Factor Wrap-Up The Reactive Manifesto Responsive Resilient Elastic Message-Driven Wrap-Up 14. Conclusion The Road Ahead The Challenges Docker Addresses The Docker Workflow Minimizing Deployment Artifacts Optimizing Storage and Retrieval The Payoff The Final Word About the Authors