My Account Log in

1 option

The Ultimate Docker Container Book : Build, Ship, Deploy, and Scale Containerized Applications with Docker, Kubernetes, and the Cloud.

O'Reilly Online Learning: Academic/Public Library Edition Available online

View online
Format:
Book
Author/Creator:
Schenker, Gabriel N.
Language:
English
Subjects (All):
Software container technologies.
Application software--Development.
Application software.
Physical Description:
1 online resource (768 pages)
Edition:
1st ed.
Place of Publication:
Birmingham : Packt Publishing, Limited, 2026.
Summary:
Master Docker, Kubernetes, and cloud-native container deployment with this hands-on guide.Learn image creation, orchestration, security, monitoring, and real-world production patterns for scalable applications Key Features Learn Docker and Kubernetes from first principles through hands-on, production-focused examples Build secure, scalable.
Contents:
Cover
The Ultimate Docker Container Book
Fourth Edition
Build, ship, deploy, and scale containerized applications with Docker, Kubernetes, and the cloud
Contributors
About the author
About the reviewers
Table of Contents
Preface
Who this book is for
What this book covers
To get the most out of this book
Download the example code files
Conventions used
Get in touch
Free benefits with your book
How to Unlock
Stay Sharp in Cloud and DevOps - Join 44,000+ Subscribers of CloudPro
Share your thoughts
Part 1
Introduction
Chapter 1: What Are Containers and Why Should I Use Them?
What are containers?
Why are containers important?
What is the benefit of using containers for me or my company?
The Moby project
Docker products
Docker Desktop
Docker Hub
Docker EE
Container architecture
What's new in containerization
Enhanced supply chain security
Debugging and operations in Kubernetes
Docker Desktop extensions
Evolving resource management
Where do we go from here?
Summary
Further reading
Questions
Answers
Get this book's PDF version and more
Chapter 2: Setting Up a Working Environment
Technical requirements
Distinguishing the major operating systems
macOS
Windows
Linux
The Linux command shell
PowerShell for Windows
Installing and using a package manager
Installing Homebrew on macOS
Installing Chocolatey on Windows
Installing Git and cloning the code repository
Choosing and installing a code editor
Installing VS Code on macOS
Installing VS Code on Windows
Installing VS Code on Linux
Installing VS Code extensions
Installing cursor.ai
Installing Docker Desktop on macOS, Windows, or Linux
Testing Docker Engine
Testing Docker Desktop.
Using Docker with WSL 2 on Windows
Installing Docker Toolbox
Enabling Kubernetes on Docker Desktop
Installing Podman
Installing Podman on MacOS
Installing Podman on Windows
Installing Podman on Linux
Installing minikube
Installing minikube on Linux, macOS, and Windows
Installing minikube on macOS using Homebrew
Testing minikube and kubectl
Working with a multi-node minikube cluster
Installing kind
Testing kind and minikube
Join us on Discord
Part 2: Containerization Fundamentals
Chapter 3: Mastering Containers
Running the first container
Starting, stopping, and removing containers
Running a random trivia question container
Listing containers
Stopping and starting containers
Removing containers
Inspecting containers
Executing commands in a running container
Attaching to a running container
Retrieving container logs
Logging drivers
Using a container-specific logging driver
Advanced topic - changing the default logging driver
The anatomy of containers
Architecture
Namespaces
Control groups
Union filesystem
Container plumbing
runc
Containerd
Chapter 4: Creating and Managing Container Images
What are images?
The layered filesystem
The writable container layer
Copy-on-write
Graph drivers
Creating Docker images
Interactive image creation
Using Dockerfiles
The FROM keyword
The RUN keyword
The COPY and ADD keywords
The WORKDIR keyword
The CMD and ENTRYPOINT keywords
A complex Dockerfile
Building an image
Working with multi-stage builds
Dockerfile best practices
Containers are ephemeral.
Leverage the immutability of container image layers
Minimize the number of layers
Keeping container image sizes minimal
Saving and loading images
Containerizing a legacy app using the lift and shift approach
Analyzing external dependencies
Preparing source code and build instructions
Configuration
Secrets
Authoring the Dockerfile
The base image
Assembling the sources
Building the application
Defining the start command
Why bother?
Sharing or shipping images
Tagging an image
Demystifying image namespaces
Explaining official images
Pushing images to a registry
Supply chain security practices
Chapter 5: Data Volumes and Configuration
Creating and mounting data volumes
Modifying the container layer
Creating volumes
Mounting a volume
Removing volumes
Accessing Docker volumes
Sharing data between containers
Using host volumes
Defining volumes in images
Configuring containers
Defining environment variables for containers
Using configuration files
Defining environment variables in container images
Environment variables at build time
Persistent storage and stateful container patterns
Understanding persistent storage in Docker
Patterns for managing stateful containers
Best practices for persistent storage
Chapter 6: Debugging Code Running in Containers
Evolving and testing code running in a container
Mounting evolving code in the running container
Auto-restarting code upon changes
Auto-restarting for Node.js
Auto-restarting for Java and Spring Boot
Installing JDK 21 on macOS
Installing JDK 21 on Windows.
Installing Java Extensions for VS Code
Auto-restarting for Python
Prerequisites
Auto-restarting for .NET
Line-by-line code debugging inside a container
Debugging a Node.js application
Debugging a .NET application
Instrumenting your code to produce meaningful logging information
Instrumenting a Python application
Instrumenting a .NET C# application
Using OpenTelemetry and Jaeger to monitor and troubleshoot
Instrumenting a .NET application
Instrumenting a Java application
Chapter 7: Testing Applications Running in Containers
Benefits of testing in containers
Why do we test?
Manual versus automated testing
Why do we test in containers?
Types of tests for containerized apps
Unit tests
Integration tests
Acceptance tests
Tools, frameworks, and test environments
Implementing a sample component
Implementing and running unit and integration tests
Implementing and running black-box tests
Best practices for setting up a testing environment
Tips for debugging and troubleshooting issues
Challenges and considerations when testing applications running in containers
Case studies
Chapter 8: Increasing Productivity with Docker Tips and Tricks
Keeping your Docker environment clean
Using a .dockerignore file
Executing simple admin tasks in a container
Running a Perl script
Running a Python script
Limiting the resource usage of a container
Limiting memory resources
Limiting CPU resources
Limiting block I/O (disk I/O) resources
Limiting process IDs
Avoiding running a container as root
Step 1: Running the container as root (default).
Step 2: Running the container as non-root
Running Docker CLI commands from within Docker
Special case: Docker-in-Docker
Automating a pipeline
Optimizing your build process
Scanning for vulnerabilities and secrets
Using Snyk to scan a Docker image
Using Docker Scout to scan a Docker image for vulnerabilities
Running your development environment in a container
Part 3
Orchestration Fundamentals
Chapter 9: Learning about Distributed Application Architecture
What is a distributed application architecture?
Defining the terminology
Patterns and best practices
Loosely coupled components
Stateful versus stateless
Service discovery
Routing
Load balancing
Defensive programming
Retries
Logging
Error handling
Redundancy
Health checks
Circuit breaker pattern
Rate limiter
Bulkhead
Running in production
Tracing
Monitoring
Application updates
Rolling updates
Blue-green deployments
Canary releases
Irreversible data changes
Changing the data structure at scale
Rollback and roll forward
Modern microservice patterns
Chapter 10: Using Single-Host Networking
Dissecting the container network model
Network firewalling
IPv4, IPv6, and dual-stack networking
nftables versus iptables
Best practice: Least-privilege networking
Working with the bridge network
Creating a custom bridge network
IPv6 and dual-stack bridge networks
Configuring the MTU and other options
Attaching containers to custom bridge networks
The host and null network types
The host network
The null (none) network
Running in an existing network namespace.
How Kubernetes uses this concept.
Notes:
Description based on publisher supplied metadata and other sources.
Part of the metadata in this record was created by AI, based on the text of the resource.
ISBN:
1-80580-438-3
9781805804383
OCLC:
1581934625

The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.

My Account

Shelf Request an item Bookmarks Fines and fees Settings

Guides

Using the Library Catalog Using Articles+ Library Account