0%

Book Description

Learn Docker in a Month of Lunches introduces Docker concepts through a series of brief hands-on lessons. Follow­ing a learning path perfected by author Elton Stoneman, you’ll run containers by chapter 2 and package applications by chapter 3. Each lesson teaches a practical skill you can practice on Windows, macOS, and Linux systems. By the end of the month you’ll know how to containerize and run any kind of application with Docker.

Table of Contents

  1. Learn Docker in a Month of Lunches
  2. Copyright
  3. preface
    1. acknowledgments
    2. about this book
    3. How to use this book
      1. Your learning journey
      2. Try-it-nows
      3. Hands-on labs
      4. Additional resources
    4. About the code
    5. liveBook discussion forum
    6. about the author
  4. brief contents
  5. contents
  6. Part 1. Understanding Docker containers and images
  7. 1 Before you begin
    1. 1.1 Why containers will take over the world
      1. 1.1.1 Migrating apps to the cloud
      2. 1.1.2 Modernizing legacy apps
      3. 1.1.3 Building new cloud-native apps
      4. 1.1.4 Technical innovation: Serverless and more
      5. 1.1.5 Digital transformation with DevOps
    2. 1.2 Is this book for you?
    3. 1.3 Creating your lab environment
      1. 1.3.1 Installing Docker
        1. Installing Docker Desktop on Windows 10
        2. Installing Docker Desktop on macOS
        3. Installing Docker Toolbox
        4. Installing Docker Community Edition and Docker Compose
        5. Installing Docker on Windows Server or Linux Server distributions
      2. 1.3.2 Verifying your Docker setup
      3. 1.3.3 Downloading the source code for the book
      4. 1.3.4 Remembering the cleanup commands
    4. 1.4 Being immediately effective
  8. 2 Understanding Docker and running Hello World
    1. 2.1 Running Hello World in a container
    2. 2.2 So what is a container?
    3. 2.3 Connecting to a container like a remote computer
    4. 2.4 Hosting a website in a container
    5. 2.5 Understanding how Docker runs containers
    6. 2.6 Lab: Exploring the container filesystem
  9. 3 Building your own Docker images
    1. 3.1 Using a container image from Docker Hub
    2. 3.2 Writing your first Dockerfile
    3. 3.3 Building your own container image
    4. 3.4 Understanding Docker images and image layers
    5. 3.5 Optimizing Dockerfiles to use the image layer cache
    6. 3.6 Lab
  10. 4 Packaging applications from source code into Docker Images
    1. 4.1 Who needs a build server when you have a Dockerfile?
    2. 4.2 App walkthrough: Java source code
    3. 4.3 App walkthrough: Node.js source code
    4. 4.4 App walkthrough: Go source code
    5. 4.5 Understanding multi-stage Dockerfiles
    6. 4.6 Lab
  11. 5 Sharing images with Docker Hub and other registries
    1. 5.1 Working with registries, repositories, and image tags
    2. 5.2 Pushing your own images to Docker Hub
    3. 5.3 Running and using your own Docker registry
    4. 5.4 Using image tags effectively
    5. 5.5 Turning official images into golden images
    6. 5.6 Lab
  12. 6 Using Docker volumes for persistent storage
    1. 6.1 Why data in containers is not permanent
    2. 6.2 Running containers with Docker volumes
    3. 6.3 Running containers with filesystem mounts
    4. 6.4 Limitations of filesystem mounts
    5. 6.5 Understanding how the container filesystem is built
    6. 6.6 Lab
  13. Part 2. Running distributed applications in containers
  14. 7 Running multi-container apps with Docker Compose
    1. 7.1 The anatomy of a Docker Compose file
    2. 7.2 Running a multi-container application with Compose
    3. 7.3 How Docker plugs containers together
    4. 7.4 Application configuration in Docker Compose
    5. 7.5 Understanding the problem Docker Compose solves
    6. 7.6 Lab
  15. 8 Supporting reliability with health checks and dependency checks
    1. 8.1 Building health checks into Docker images
    2. 8.2 Starting containers with dependency checks
    3. 8.3 Writing custom utilities for application check logic
    4. 8.4 Defining health checks and dependency checks in Docker Compose
    5. 8.5 Understanding how checks power self-healing apps
    6. 8.6 Lab
  16. 9 Adding observability with containerized monitoring
    1. 9.1 The monitoring stack for containerized applications
    2. 9.2 Exposing metrics from your application
    3. 9.3 Running a Prometheus container to collect metrics
    4. 9.4 Running a Grafana container to visualize metrics
    5. 9.5 Understanding the levels of observability
    6. 9.6 Lab
  17. 10 Running multiple environments with Docker Compose
    1. 10.1 Deploying many applications with Docker Compose
    2. 10.2 Using Docker Compose override files
    3. 10.3 Injecting configuration with environment variables and secrets
    4. 10.4 Reducing duplication with extension fields
    5. 10.5 Understanding the configuration workflow with Docker
    6. 10.6 Lab
  18. 11 Building and testing applications with Docker and Docker Compose
    1. 11.1 How the CI process works with Docker
    2. 11.2 Spinning up build infrastructure with Docker
    3. 11.3 Capturing build settings with Docker Compose
    4. 11.4 Writing CI jobs with no dependencies except Docker
    5. 11.5 Understanding containers in the CI process
    6. 11.6 Lab
  19. Part 3. Running at scale with a container orchestrator
  20. 12 Understanding orchestration: Docker Swarm and Kubernetes
    1. 12.1 What is a container orchestrator?
    2. 12.2 Setting up a Docker Swarm cluster
    3. 12.3 Running applications as Docker Swarm services
    4. 12.4 Managing network traffic in the cluster
    5. 12.5 Understanding the choice between Docker Swarm and Kubernetes
    6. 12.6 Lab
  21. 13 Deploying distributed applications as stacks in Docker Swarm
    1. 13.1 Using Docker Compose for production deployments
    2. 13.2 Managing app configuration with config objects
    3. 13.3 Managing confidential settings with secrets
    4. 13.4 Storing data with volumes in the Swarm
    5. 13.5 Understanding how the cluster manages stacks
    6. 13.6 Lab
  22. 14 Automating releases with upgrades and rollbacks
    1. 14.1 The application upgrade process with Docker
    2. 14.2 Configuring production rollouts with Compose
    3. 14.3 Configuring service rollbacks
    4. 14.4 Managing downtime for your cluster
    5. 14.5 Understanding high availability in Swarm clusters
    6. 14.6 Lab
  23. 15 Configuring Docker for secure remote access and CI/CD
    1. 15.1 Endpoint options for the Docker API
    2. 15.2 Configuring Docker for secure remote access
    3. 15.3 Using Docker Contexts to work with remote engines
    4. 15.4 Adding continuous deployment to your CI pipeline
    5. 15.5 Understanding the access model for Docker
    6. 15.6 Lab
  24. 16 Building Docker images that run anywhere: Linux, Windows, Intel, and Arm
    1. 16.1 Why multi-architecture images are important
    2. 16.2 Building multi-arch images from one or more Dockerfiles
    3. 16.3 Pushing multi-arch images to registries with manifests
    4. 16.4 Building multi-arch images with Docker Buildx
    5. 16.5 Understanding where multi-arch images fit in your roadmap
    6. 16.6 Lab
  25. Part 4. Getting your containers ready for production
  26. 17 Optimizing your Docker images for size, speed, and security
    1. 17.1 How you optimize Docker images
    2. 17.2 Choosing the right base images
    3. 17.3 Minimizing image layer count and layer size
    4. 17.4 Taking your multi-stage builds to the next level
    5. 17.5 Understanding why optimization counts
    6. 17.6 Lab
  27. 18 Application configuration management in containers
    1. 18.1 A multi-tiered approach to app configuration
    2. 18.2 Packaging config for every environment
    3. 18.3 Loading configuration from the runtime
    4. 18.4 Configuring legacy apps in the same way as new apps
    5. 18.5 Understanding why a flexible configuration model pays off
    6. 18.6 Lab
  28. 19 Writing and managing application logs with Docker
    1. 19.1 Welcome to stderr and stdout!
    2. 19.2 Relaying logs from other sinks to stdout
    3. 19.3 Collecting and forwarding container logs
    4. 19.4 Managing your log output and collection
    5. 19.5 Understanding the container logging model
    6. 19.6 Lab
  29. 20 Controlling HTTP traffic to containers with a reverse proxy
    1. 20.1 What is a reverse proxy?
    2. 20.2 Handling routing and SSL in the reverse proxy
    3. 20.3 Improving performance and reliability with the proxy
    4. 20.4 Using a cloud-native reverse proxy
    5. 20.5 Understanding the patterns a reverse proxy enables
    6. 20.6 Lab
  30. 21 Asynchronous communication with a message queue
    1. 21.1 What is asynchronous messaging?
    2. 21.2 Using a cloud-native message queue
    3. 21.3 Consuming and handling messages
    4. 21.4 Adding new features with message handlers
    5. 21.5 Understanding async messaging patterns
    6. 21.6 Lab
  31. 22 Never the end
    1. 22.1 Run your own proof-of-concept
    2. 22.2 Make a case for Docker in your organization
    3. 22.3 Plan the path to production
    4. 22.4 Meet the Docker community
  32. index
3.18.220.243