Docker and Kubernetes The Complete Guide

Build, test, and deploy Docker applications with Kubernetes while learning production-style development workflows
Docker and Kubernetes The Complete Guide
File Size :
12.37 GB
Total length :
22h 9m



Stephen Grider


Last update

Last updated 11/2022



Docker and Kubernetes The Complete Guide

What you’ll learn

Learn Docker from scratch, no previous experience required
Master the Docker CLI to inspect and debug running containers
Build a CI + CD pipeline from scratch with Github, Travis CI, and AWS
Understand the purpose and theory of Kubernetes by building a complex app
Automatically deploy your code when it is pushed to Github!

Docker and Kubernetes The Complete Guide


Basic understanding of terminal and command line usage
No previous Docker or Kubernetes experience is required!
A credit card is required to deploy projects to AWS or Google Cloud


If you’re tired of spinning your wheels learning how to deploy web applications, this is the course for you.CI+CD Workflows? You will learn it.  AWS Deployment? Included.  Kubernetes in Production? Of course!This is the ultimate course to learn how to deploy any web application you can possibly dream up.  Docker and Kubernetes are the newest tech in the Dev Ops world, and have dramatically changed the flow of creating and deploying web apps.  Docker is a technology that allows applications to run in constructs called ‘containers’, while Kubernetes allows for many different ‘containers’ to run in coordination.Docker from Scratch!In this course you’ll learn Docker from absolute fundamentals, beginning by learning the answer to basic questions such as “What is a container?” and “How does a container work?”.  From the very first few lectures, we will do a deep dive on the inner workings of containers, so you get a core understanding of exactly how they are implemented.  Once you understand what a container is, you’ll learn how to work with them using basic Docker CLI commands.  After that, you’ll apply your new-found mastery of the Docker CLI to build your own custom images, effectively ‘Dockerizing’ your own personal applications.  CI + CD PipelinesOf course, no course on Docker would be complete without a full understanding of common Continuous Integration and Continuous Deployment patterns.  You will learn how to implement a full CI + CD workflow using Github, Travis CI, and Amazon Web Services, creating a pipeline that automatically deploys your code every time you push your latest changes to Github!Multi-Container Deployments on AWS!After building a deployment pipeline, you’ll apply it to master both single-container and multi-container deployments on Amazon Web Services.  You will construct a multi-container application utilizing Node, React, Redis, and Postgres, and see the amazing power of containers in action (Note: all Javascript coding in this course is optional, the full source code is provided if you don’t want to write JS).Kubernetes!Finally, you will tackle Kubernetes, a production-grade system for managing complex applications with many different running containers.  You will learn the right way to build a Kubernetes Cluster – this course doesn’t have any of those annoying “don’t do this in production” comments!  You will first build a Kubernetes Cluster on your local machine, then eventually move it over to a cloud provider.  You’ll even learn how to set up HTTPS on Kubernetes, which is harder than it sounds!Here’s what you’ll do:Learn Docker from scratch, no previous experience requiredBuild your own custom images tailored to your applicationsMaster the Docker CLI to inspect and debug running containersUnderstand how Docker works behind the scenes, and what a container isBuild a CI + CD pipeline from scratch with Github, Travis CI, and AWSAutomatically deploy your code when it is pushed to Github!Build a complex multi-container application from scratch and deploy it to AWSUnderstand the purpose and theory of KubernetesDeploy a production-ready Kubernetes Cluster to Google Cloud


Section 1: Dive Into Docker!

Lecture 1 Finished Code and Diagrams

Lecture 2 Join Our Community!

Lecture 3 Why Use Docker?

Lecture 4 What is Docker?

Lecture 5 Docker for Mac/Windows

Lecture 6 Installing Docker on macOS

Lecture 7 Installing Docker with WSL2 on Windows 10/11

Lecture 8 Installing Docker on Linux

Lecture 9 Using the Docker Client

Lecture 10 But Really…What’s a Container?

Lecture 11 How’s Docker Running on Your Computer?

Section 2: Manipulating Containers with the Docker Client

Lecture 12 Docker Run in Detail

Lecture 13 Overriding Default Commands

Lecture 14 Listing Running Containers

Lecture 15 Container Lifecycle

Lecture 16 Restarting Stopped Containers

Lecture 17 Removing Stopped Containers

Lecture 18 Retrieving Log Outputs

Lecture 19 Stopping Containers

Lecture 20 Multi-Command Containers

Lecture 21 Executing Commands in Running Containers

Lecture 22 The Purpose of the IT Flag

Lecture 23 Getting a Command Prompt in a Container

Lecture 24 Starting with a Shell

Lecture 25 Container Isolation

Section 3: Building Custom Images Through Docker Server

Lecture 26 Creating Docker Images

Lecture 27 Buildkit for Docker Desktop

Lecture 28 Building a Dockerfile

Lecture 29 Dockerfile Teardown

Lecture 30 What’s a Base Image?

Lecture 31 The Build Process in Detail

Lecture 32 A Brief Recap

Lecture 33 Rebuilds with Cache

Lecture 34 Tagging an Image

Lecture 35 Quick Note for Windows Users

Lecture 36 Manual Image Generation with Docker Commit

Section 4: Making Real Projects with Docker

Lecture 37 Project Outline

Lecture 38 Node Server Setup

Lecture 39 A Few Planned Errors

Lecture 40 Required Node Base Image Version

Lecture 41 Base Image Issues

Lecture 42 A Few Missing Files

Lecture 43 Copying Build Files

Lecture 44 Container Port Mapping

Lecture 45 Specifying a Working Directory

Lecture 46 Unnecessary Rebuilds

Lecture 47 Minimizing Cache Busting and Rebuilds

Section 5: Docker Compose with Multiple Local Containers

Lecture 48 App Overview

Lecture 49 App Server Starter Code

Lecture 50 Assembling a Dockerfile

Lecture 51 Introducing Docker Compose

Lecture 52 Docker Compose Files

Lecture 53 Networking with Docker Compose

Lecture 54 Docker Compose Commands

Lecture 55 Stopping Docker Compose Containers

Lecture 56 Container Maintenance with Compose

Lecture 57 Automatic Container Restarts

Lecture 58 Container Status with Docker Compose

Section 6: Creating a Production-Grade Workflow

Lecture 59 Development Workflow

Lecture 60 Flow Specifics

Lecture 61 Docker’s Purpose

Lecture 62 Project Generation

Lecture 63 Create React App Generation

Lecture 64 More on Project Generation

Lecture 65 Necessary Commands

Lecture 66 Creating the Dev Dockerfile

Lecture 67 Duplicating Dependencies

Lecture 68 Starting the Container

Lecture 69 Docker Volumes

Lecture 70 WSL2 and Windows Users Must Read Before Next Lecture

Lecture 71 Bookmarking Volumes

Lecture 72 Shorthand with Docker Compose

Lecture 73 Overriding Dockerfile Selection

Lecture 74 Do We Need Copy?

Lecture 75 Executing Tests

Lecture 76 Live Updating Tests

Lecture 77 Docker Compose for Running Tests

Lecture 78 Shortcomings on Testing

Lecture 79 Need for Nginx

Lecture 80 Multi-Step Docker Builds

Lecture 81 Implementing Multi-Step Builds

Lecture 82 Running Nginx

Section 7: Continuous Integration and Deployment with AWS

Lecture 83 Services Overview

Lecture 84 Github Setup

Lecture 85 Important Info About Travis and Account Registration

Lecture 86 Travis CI Setup

Lecture 87 Travis YML File Configuration

Lecture 88 Required Travis Script Updates

Lecture 89 A Touch More Travis Setup

Lecture 90 Automatic Build Creation

Lecture 91 Required Updates for Amazon Linux 2 Platform – DO NOT SKIP

Lecture 92 AWS Elastic Beanstalk

Lecture 93 More on Elastic Beanstalk

Lecture 94 Travis Config for Deployment

Lecture 95 Automated Deployments

Lecture 96 Exposing Ports Through the Dockerfile

Lecture 97 Workflow With Github

Lecture 98 Redeploy on Pull Request Merge

Lecture 99 Deployment Wrapup

Lecture 100 Environment Cleanup

Lecture 101 AWS Configuration Cheat Sheet

Lecture 102 Finished Project Code with Updates Applied

Section 8: Building a Multi-Container Application

Lecture 103 Single Container Deployment Issues

Lecture 104 Application Overview

Lecture 105 A Quick Note

Lecture 106 Application Architecture

Lecture 107 Worker Process Setup

Lecture 108 Express API Setup

Lecture 109 Important Update for Table Query

Lecture 110 Connecting to Postgres

Lecture 111 More Express API Setup

Lecture 112 Create React App Generation

Lecture 113 Generating the React App

Lecture 114 Fetching Data in the React App

Lecture 115 Rendering Logic in the App

Lecture 116 Exporting the Fib Class

Lecture 117 Routing in the React App

Section 9: “Dockerizing” Multiple Services

Lecture 118 Checkpoint Files

Lecture 119 Checkpoint Catchup

Lecture 120 Expected Output for Latest Create React App Versions

Lecture 121 Dockerizing a React App – Again!

Lecture 122 Dockerizing Generic Node Apps

Lecture 123 Adding Postgres as a Service

Lecture 124 Docker-compose Config

Lecture 125 Postgres Database Required Fixes and Updates

Lecture 126 Environment Variables with Docker Compose

Lecture 127 Required Worker Environment Variables

Lecture 128 The Worker and Client Services

Lecture 129 Nginx Path Routing

Lecture 130 Routing with Nginx

Lecture 131 Building a Custom Nginx Image

Lecture 132 Starting Up Docker Compose

Lecture 133 Nginx connect() failed – Connection refused while connecting to upstream

Lecture 134 Troubleshooting Startup Bugs

Lecture 135 WebSocket connection to ‘ws://localhost:3000/ws’ failed

Lecture 136 Opening Websocket Connections

Section 10: A Continuous Integration Workflow for Multiple Images

Lecture 137 Production Multi-Container Deployments

Lecture 138 Production Dockerfiles

Lecture 139 Multiple Nginx Instances

Lecture 140 Nginx fix for React Router

Lecture 141 Altering Nginx’s Listen Port

Lecture 142 Cleaning Up Tests

Lecture 143 Travis Configuration Setup

Lecture 144 Fix for Failing Travis Builds

Lecture 145 Github and Travis CI Setup

Lecture 146 Pushing Images to Docker Hub

Lecture 147 Successful Image Building

Section 11: Multi-Container Deployments to AWS

Lecture 148 Important Info About Multi Containers on Amazon Linux 2 Platform

Lecture 149 Multi-Container Definition Files

Lecture 150 Finding Docs on Container Definitions

Lecture 151 Adding Container Definitions to DockerRun

Lecture 152 More Container Definitions

Lecture 153 Forming Container Links

Lecture 154 Using the Amazon Linux 2 Platform

Lecture 155 AWS Configuration Cheat Sheet – Updated for new UI

Lecture 156 Creating the EB Environment

Lecture 157 Managed Data Service Providers

Lecture 158 Overview of AWS VPC’s and Security Groups

Lecture 159 RDS Database Creation

Lecture 160 ElastiCache Redis Creation

Lecture 161 Creating a Custom Security Group

Lecture 162 Applying Security Groups to Resources

Lecture 163 Setting Environment Variables

Lecture 164 IAM Keys for Deployment

Lecture 165 Travis Keys Update

Lecture 166 Travis Deploy Script

Lecture 167 Container Memory Allocations

Lecture 168 Verifying Deployment

Lecture 169 A Quick App Change

Lecture 170 Making Changes

Lecture 171 Cleaning Up AWS Resources

Lecture 172 AWS Configuration Cheat Sheet

Lecture 173 Finished Project Code with Updates Applied

Section 12: Onwards to Kubernetes!

Lecture 174 The Why’s and What’s of Kubernetes

Lecture 175 Kubernetes in Development and Production

Lecture 176 Docker Desktop’s Kubernetes Setup and Installation – macOS

Lecture 177 Docker Desktop’s Kubernetes Setup and Installation – Windows

Lecture 178 Updated Minikube Install and Setup Info – macOS

Lecture 179 Minikube Setup on MacOS

Lecture 180 Minikube Setup on Windows

Lecture 181 Minikube Setup on Linux

Lecture 182 Mapping Existing Knowledge

Lecture 183 Quick Note to Prevent an Error

Lecture 184 Adding Configuration Files

Lecture 185 Object Types and API Versions

Lecture 186 Running Containers in Pods

Lecture 187 Service Config Files in Depth

Lecture 188 Connecting to Running Containers

Lecture 189 The Entire Deployment Flow

Lecture 190 Imperative vs Declarative Deployments

Section 13: Maintaining Sets of Containers with Deployments

Lecture 191 Updating Existing Objects

Lecture 192 Declarative Updates in Action

Lecture 193 Limitations in Config Updates

Lecture 194 Running Containers with Deployments

Lecture 195 Quick Note to Prevent an Error

Lecture 196 Deployment Configuration Files

Lecture 197 Walking Through the Deployment Config

Lecture 198 Applying a Deployment

Lecture 199 Why Use Services?

Lecture 200 Scaling and Changing Deployments

Lecture 201 Updating Deployment Images

Lecture 202 Rebuilding the Client Image

Lecture 203 Triggering Deployment Updates

Lecture 204 Imperatively Updating a Deployment’s Image

Lecture 205 Reminder for Docker Desktop’s Kubernetes Users

Lecture 206 Multiple Docker Installations

Lecture 207 Reconfiguring Docker CLI

Lecture 208 Why Mess with Docker in the Node?

Section 14: A Multi-Container App with Kubernetes

Lecture 209 The Path to Production

Lecture 210 Checkpoint Files

Lecture 211 A Quick Checkpoint

Lecture 212 Recreating the Deployment

Lecture 213 NodePort vs ClusterIP Services

Lecture 214 The ClusterIP Config

Lecture 215 Applying Multiple Files with Kubectl

Lecture 216 Express API Deployment Config

Lecture 217 Cluster IP for the Express API

Lecture 218 Combining Config Into Single Files

Lecture 219 The Worker Deployment

Lecture 220 Reapplying a Batch of Config Files

Lecture 221 Creating and Applying Redis Config

Lecture 222 Important Note about Expected Postgres Error

Lecture 223 Last Set of Boring Config!

Lecture 224 The Need for Volumes with Databases

Lecture 225 Kubernetes Volumes

Lecture 226 Volumes vs Persistent Volumes

Lecture 227 Persistent Volumes vs Persistent Volume Claims

Lecture 228 Claim Config Files

Lecture 229 Persistent Volume Access Modes

Lecture 230 Where Does Kubernetes Allocate Persistent Volumes?

Lecture 231 Designating a PVC in a Pod Template

Lecture 232 Applying a PVC

Lecture 233 Defining Environment Variables

Lecture 234 Adding Environment Variables to Config

Lecture 235 Creating an Encoded Secret

Lecture 236 Postgres Environment Variable Fix

Lecture 237 Passing Secrets as Environment Variables

Lecture 238 Environment Variables as Strings

Section 15: Handling Traffic with Ingress Controllers

Lecture 239 Load Balancer Services

Lecture 240 A Quick Note on Ingresses

Lecture 241 One Other Quick Note!

Lecture 242 Behind the Scenes of Ingress

Lecture 243 More Behind the Scenes of Ingress

Lecture 244 Optional Reading on Ingress Nginx

Lecture 245 Docker Driver and Ingress – IMPORTANT

Lecture 246 Important – DO NOT SKIP – Ingress Nginx Installation Info

Lecture 247 Setting up Ingress Locally with Minikube

Lecture 248 Ingress v1 API Update + “…” + 404 errors

Lecture 249 Creating the Ingress Configuration

Lecture 250 Testing Ingress Locally

Lecture 251 The Minikube Dashboard

Lecture 252 Docker Desktop’s Kubernetes Dashboard

Section 16: Kubernetes Production Deployment

Lecture 253 The Deployment Process

Lecture 254 Google Cloud vs AWS for Kubernetes

Lecture 255 Creating a Git Repo

Lecture 256 Linking the Github Repo to Travis

Lecture 257 Free Google Cloud Credits

Lecture 258 Creating a Google Cloud Project

Lecture 259 Linking a Billing Account

Lecture 260 Updated GKE creation steps for new Google Cloud UI

Lecture 261 Kubernetes Engine Init

Lecture 262 Creating a Cluster with Google Cloud

Lecture 263 Don’t Forget to Cleanup!

Lecture 264 Kubernetes Dashboard on Google Cloud

Lecture 265 Travis Deployment Overview

Lecture 266 Installing the Google Cloud SDK

Lecture 267 Updated Service Account steps for new GCP UI

Lecture 268 Generating a Service Account

Lecture 269 Ruby Version Fix

Lecture 270 Running Travis CLI in a Container

Lecture 271 Travis Login Issues, “iv undefined” or “repository not known”

Lecture 272 Encrypting a Service Account File

Lecture 273 More Google Cloud CLI Config

Lecture 274 Fix For Failing Travis Builds

Lecture 275 Running Tests with Travis

Lecture 276 Custom Deployment Providers

Lecture 277 Unique Deployment Images

Lecture 278 Unique Tags for Built Images

Lecture 279 Updating the Deployment Script

Lecture 280 Configuring the GCloud CLI on Cloud Console

Lecture 281 Creating a Secret on Google Cloud

Lecture 282 Helm v3 Update

Lecture 283 Helm Setup

Lecture 284 Kubernetes Security with RBAC

Lecture 285 Assigning Tiller a Service Account

Lecture 286 Ingress-Nginx with Helm

Lecture 287 Quick Note about the Default Backend

Lecture 288 The Result of Ingress-Nginx

Lecture 289 Finally – Deployment!

Lecture 290 Did I Really Type That?

Lecture 291 Verifying Deployment

Lecture 292 A Workflow for Changing in Prod

Lecture 293 Merging a PR for Deployment

Lecture 294 That’s It! What’s Next?

Lecture 295 Completed Code For Google Cloud Deployment

Section 17: HTTPS Setup with Kubernetes

Lecture 296 HTTPS Setup Overview

Lecture 297 Domain Purchase

Lecture 298 Domain Name Setup

Lecture 299 Required Updates for Cert Manager Install

Lecture 300 Cert Manager Install

Lecture 301 How to Wire Up Cert Manager

Lecture 302 Required Update for Issuer

Lecture 303 Issuer Config File

Lecture 304 Required Update for the Certificate

Lecture 305 Certificate Config File

Lecture 306 Deploying Changes

Lecture 307 No Resources Found?

Lecture 308 Verifying the Certificate

Lecture 309 Required Update for the HTTPS Ingress

Lecture 310 Ingress Config for HTTPS

Lecture 311 It Worked!

Lecture 312 Google Cloud Cleanup

Lecture 313 Local Environment Cleanup

Section 18: Local Development with Skaffold

Lecture 314 Awkward Local Development

Lecture 315 Installing Skaffold

Lecture 316 The Skaffold Config File

Lecture 317 Skaffold Sync Update and Example Source Code

Lecture 318 Live Sync Changes

Lecture 319 Automatic Shutdown

Lecture 320 Testing Live Sync with the API Server

Section 19: Extras

Lecture 321 Bonus!

Software engineers looking to deploy their apps easily and quickly

Course Information:

Udemy | English | 22h 9m | 12.37 GB
Created by: Stephen Grider

You Can See More Courses in the Developer >> Greetings from

New Courses

Scroll to Top