Docker and Kubernetes: The Complete Guide

Build, test, and deploy Docker applications with Kubernetes while learning production-style development workflows

  • Stephen Grider
  • 4.63
  • (32753 reviews)
  • 21.5 hrs
  • 322 lectures
  • Udemy
Docker and Kubernetes: The Complete Guide

What you will 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!

Your trainer

Stephen Grider

Stephen Grider has been building complex Javascript front ends for top corporations in the San Francisco Bay Area. With an innate ability to simplify complex topics, Stephen has been mentoring engineers beginning their careers in software development for years, and has now expanded that experience onto Udemy, authoring the highest rated React course. He teaches on Udemy to share the knowledge he has gained with other software engineers. Invest in yourself by learning from Stephen's published courses.

322 lessons

Easy to follow lectures and videos covering subject details.

21.5 hours

This course includes hours of video material. Watch on-demand, anytime, anywhere.

Certificate of Completion

You will earn a Certificate of Completion at the end of this course.

Course curriculum

  • Finished Code and Diagrams00:14
  • Why Use Docker?03:43
  • What is Docker?02:53
  • Docker for Mac/Windows01:57
  • Installing Docker on MacOS04:45
  • Installing Docker for Windows Home users00:47
  • Installing Docker for Windows Profressional02:03
  • More Windows Professional Setup00:40
  • One Last Piece of Windows Professional Setup01:09
  • Installing Docker on Linux00:58
  • Using the Docker Client05:03
  • But Really...What's a Container?08:30
  • How's Docker Running on Your Computer?02:44
  • Docker Run in Detail01:54
  • Overriding Default Commands05:12
  • Listing Running Containers04:09
  • Container Lifecycle05:16
  • Restarting Stopped Containers03:43
  • Removing Stopped Containers01:39
  • Retrieving Log Outputs02:33
  • Stopping Containers05:21
  • Multi-Command Containers04:16
  • Executing Commands in Running Containers02:53
  • The Purpose of the IT Flag04:35
  • Getting a Command Prompt in a Container04:06
  • Starting with a Shell02:13
  • Container Isolation03:09
  • Creating Docker Images02:36
  • Buildkit for Docker Desktop v2.4.0+ and Edge00:34
  • Building a Dockerfile04:51
  • Dockerfile Teardown02:41
  • What's a Base Image?05:40
  • The Build Process in Detail11:09
  • A Brief Recap03:24
  • Rebuilds with Cache07:02
  • Tagging an Image04:26
  • Quick Note for Windows Users00:14
  • Manual Image Generation with Docker Commit05:00
  • Project Outline02:35
  • Node Server Setup05:03
  • A Few Planned Errors05:12
  • Base Image Issues07:50
  • A Few Missing Files03:18
  • Copying Build Files04:50
  • Reminder for Windows Home / Docker Toolbox Students00:18
  • Container Port Mapping07:26
  • Specifying a Working Directory07:52
  • Unnecessary Rebuilds04:16
  • Minimizing Cache Busting and Rebuilds04:58
  • App Overview03:57
  • App Server Starter Code06:43
  • Assembling a Dockerfile03:12
  • Introducing Docker Compose05:31
  • Docker Compose Files06:02
  • Networking with Docker Compose05:00
  • Docker Compose Commands04:38
  • Stopping Docker Compose Containers02:34
  • Container Maintenance with Compose02:53
  • Automatic Container Restarts09:21
  • Container Status with Docker Compose02:21
  • Development Workflow01:28
  • Flow Specifics06:32
  • Docker's Purpose01:50
  • Project Generation03:25
  • Create React App Generation00:19
  • More on Project Generation01:44
  • Necessary Commands05:09
  • Creating the Dev Dockerfile03:42
  • Duplicating Dependencies01:29
  • React App Exits Immediately with Docker Run Command00:10
  • Starting the Container02:50
  • Docker Volumes06:53
  • Windows not Detecting Changes - Update01:58
  • Bookmarking Volumes04:50
  • React App Exited With Code 000:13
  • Shorthand with Docker Compose04:22
  • Overriding Dockerfile Selection02:02
  • Windows not Detecting Changes - Docker Compose00:08
  • Do We Need Copy?02:51
  • Executing Tests03:38
  • Live Updating Tests04:54
  • Docker Compose for Running Tests05:45
  • Tests Not Re-running on Windows00:25
  • Attaching to Web container00:08
  • Shortcomings on Testing08:30
  • Need for Nginx03:07
  • Multi-Step Docker Builds06:54
  • Named Builders and AWS00:20
  • Implementing Multi-Step Builds07:05
  • Running Nginx02:27
  • Services Overview03:04
  • Github Setup03:57
  • Travis CI Setup04:17
  • Travis YML File Configuration07:39
  • Required Travis Updates00:21
  • A Touch More Travis Setup04:14
  • Automatic Build Creation03:30
  • Important info about AWS Platform Versions00:27
  • AWS Elastic Beanstalk04:10
  • More on Elastic Beanstalk02:25
  • Travis Config for Deployment08:46
  • Travis Keys Update00:12
  • Automated Deployments07:17
  • Exposing Ports Through the Dockerfile03:56
  • AWS Build Still Failing?01:06
  • Workflow With Github03:59
  • Redeploy on Pull Request Merge02:01
  • Deployment Wrapup02:03
  • Environment Cleanup00:24
  • AWS Configuration Cheat Sheet02:16
  • Finished Project Code with Updates Applied00:07
  • Single Container Deployment Issues03:02
  • Application Overview04:30
  • A Quick Note00:15
  • Application Architecture05:11
  • Worker Process Setup11:41
  • Important note about PG module version00:10
  • Express API Setup05:19
  • Important Update for Table Query00:22
  • Connecting to Postgres07:36
  • More Express API Setup12:20
  • Create React App Generation00:32
  • Generating the React App01:51
  • Fetching Data in the React App06:31
  • Rendering Logic in the App08:29
  • Exporting the Fib Class00:26
  • Routing in the React App04:36
  • Checkpoint Files00:13
  • Checkpoint Catchup02:39
  • Reminder on -it flag00:06
  • Dockerizing a React App - Again!06:41
  • Dockerizing Generic Node Apps03:47
  • Adding Postgres as a Service07:05
  • Docker-compose Config06:17
  • Postgres Database Required Fixes and Updates00:14
  • Environment Variables with Docker Compose10:20
  • Required Client Service Update and Worker Environment Variables00:26
  • The Worker and Client Services03:42
  • Nginx Path Routing09:41
  • Routing with Nginx11:12
  • Building a Custom Nginx Image05:38
  • Starting Up Docker Compose01:50
  • Nginx connect() failed - Connection refused while connecting to upstream00:15
  • Troubleshooting Startup Bugs03:22
  • Opening Websocket Connections03:51
  • Production Multi-Container Deployments05:39
  • Production Dockerfiles06:05
  • Multiple Nginx Instances05:23
  • Nginx fix for React Router00:18
  • Altering Nginx's Listen Port04:53
  • Cleaning Up Tests01:11
  • Github and Travis CI Setup04:08
  • Fix for Failing Travis Builds00:22
  • Travis Configuration Setup08:45
  • Pushing Images to Docker Hub07:34
  • Successful Image Building01:49
  • Multi-Container Definition Files04:30
  • Finding Docs on Container Definitions03:09
  • Adding Container Definitions to DockerRun05:45
  • More Container Definitions05:18
  • Forming Container Links07:47
  • AWS Configuration Cheat Sheet - Updated for new UI03:38
  • Creating the EB Environment03:30
  • Managed Data Service Providers10:44
  • Overview of AWS VPC's and Security Groups09:21
  • RDS Database Creation06:31
  • ElastiCache Redis Creation04:11
  • Creating a Custom Security Group04:18
  • Applying Security Groups to Resources04:59
  • Setting Environment Variables07:55
  • IAM Keys for Deployment05:12
  • Travis Keys Update00:19
  • Travis Deploy Script03:20
  • Container Memory Allocations04:10
  • Verifying Deployment02:56
  • A Quick App Change01:29
  • Making Changes00:57
  • Cleaning Up AWS Resources05:05
  • AWS Configuration Cheat Sheet03:38
  • Finished Project Code with Updates Applied00:14
  • The Why's and What's of Kubernetes08:06
  • Kubernetes in Development and Production05:47
  • Updated Minikube Install and Setup Info - macOS00:29
  • Minikube Setup on MacOS05:36
  • Minikube Setup on Windows Pro01:20
  • Minikube Setup on Windows Home00:59
  • Minikube Setup on Linux00:41
  • Docker Desktop's Kubernetes instead of Minikube01:02
  • Mapping Existing Knowledge07:37
  • Quick Note to Prevent an Error00:37
  • Adding Configuration Files06:51
  • Object Types and API Versions06:55
  • Running Containers in Pods09:19
  • Service Config Files in Depth13:37
  • Connecting to Running Containers10:24
  • The Entire Deployment Flow13:02
  • Imperative vs Declarative Deployments13:36
  • Updating Existing Objects06:10
  • Declarative Updates in Action07:04
  • Limitations in Config Updates02:55
  • Running Containers with Deployments06:03
  • Quick Note to Prevent an Error00:09
  • Deployment Configuration Files03:18
  • Walking Through the Deployment Config04:23
  • Applying a Deployment06:22
  • Why Use Services?05:19
  • Scaling and Changing Deployments06:31
  • Updating Deployment Images03:57
  • Rebuilding the Client Image02:59
  • Triggering Deployment Updates12:24
  • Imperatively Updating a Deployment's Image07:24
  • Reminder for Docker Desktop's Kubernetes Users00:12
  • Multiple Docker Installations05:37
  • Reconfiguring Docker CLI05:57
  • Why Mess with Docker in the Node?05:05
  • The Path to Production05:12
  • Checkpoint Files00:20
  • A Quick Checkpoint04:35
  • Recreating the Deployment05:29
  • NodePort vs ClusterIP Services03:41
  • The ClusterIP Config03:52
  • Applying Multiple Files with Kubectl04:18
  • Express API Deployment Config06:02
  • Cluster IP for the Express API03:08
  • Combining Config Into Single Files05:59
  • The Worker Deployment04:36
  • Reapplying a Batch of Config Files04:51
  • Creating and Applying Redis Config07:26
  • Important Note about Expected Postgres Error00:58
  • Last Set of Boring Config!06:14
  • The Need for Volumes with Databases07:18
  • Kubernetes Volumes05:17
  • Volumes vs Persistent Volumes02:59
  • Persistent Volumes vs Persistent Volume Claims09:21
  • Claim Config Files02:57
  • Persistent Volume Access Modes03:31
  • Where Does Kubernetes Allocate Persistent Volumes?07:42
  • Designating a PVC in a Pod Template06:09
  • Applying a PVC02:22
  • Defining Environment Variables04:08
  • Adding Environment Variables to Config05:44
  • Creating an Encoded Secret09:25
  • Postgres Environment Variable Fix00:14
  • Passing Secrets as Environment Variables05:53
  • Environment Variables as Strings02:17
  • Load Balancer Services04:14
  • A Quick Note on Ingresses03:32
  • One Other Quick Note!01:37
  • Behind the Scenes of Ingress05:17
  • More Behind the Scenes of Ingress06:38
  • Optional Reading on Ingress Nginx00:09
  • Docker Driver and Ingress - IMPORTANT00:26
  • Update on Mandatory Commands00:11
  • Setting up Ingress Locally with Minikube06:21
  • Setting up Ingress with Docker Desktop's Kubernetes00:19
  • Ingress Update "this.state.seenIndexes.map is not a function" / 404 errors00:44
  • Creating the Ingress Configuration07:00
  • Testing Ingress Locally02:50
  • "Indexes I Have Seen" is Empty00:41
  • The Minikube Dashboard03:28
  • Docker Desktop's Kubernetes Dashboard01:00
  • The Deployment Process05:49
  • Google Cloud vs AWS for Kubernetes04:53
  • Creating a Git Repo03:59
  • Linking the Github Repo to Travis01:35
  • Free Google Cloud Credits00:18
  • Creating a Google Cloud Project01:59
  • Linking a Billing Account02:11
  • Kubernetes Engine Init01:47
  • Creating a Cluster with Google Cloud04:47
  • Don't Forget to Cleanup!00:14
  • Kubernetes Dashboard on Google Cloud04:33
  • Travis Deployment Overview05:04
  • Installing the Google Cloud SDK05:44
  • Generating a Service Account05:29
  • Ruby Version Fix00:17
  • Running Travis CLI in a Container09:17
  • Fixes for Travis "iv undefined" or"repository not known"00:42
  • Encrypting a Service Account File07:54
  • More Google Cloud CLI Config04:39
  • Fix For Failing Travis Builds00:16
  • Running Tests with Travis06:18
  • Custom Deployment Providers03:49
  • Unique Deployment Images08:33
  • Unique Tags for Built Images07:47
  • Updating the Deployment Script07:51
  • Configuring the GCloud CLI on Cloud Console05:34
  • Creating a Secret on Google Cloud02:24
  • Helm v3 Update00:38
  • Helm v2 Update00:12
  • Helm Setup08:15
  • Kubernetes Security with RBAC08:21
  • Assigning Tiller a Service Account05:08
  • Ingress-Nginx with Helm01:56
  • The Result of Ingress-Nginx03:48
  • Finally - Deployment!03:30
  • Did I Really Type That?00:45
  • Verifying Deployment05:20
  • A Workflow for Changing in Prod04:29
  • Merging a PR for Deployment01:01
  • That's It! What's Next?01:37
  • HTTPS Setup Overview05:35
  • Domain Purchase02:17
  • Domain Name Setup03:30
  • Fix for Cert Manager Breaking Changes00:56
  • Cert Manager Install01:57
  • How to Wire Up Cert Manager05:58
  • Issuer Config File05:07
  • Certificate Config File05:18
  • Deploying Changes03:15
  • Verifying the Certificate03:54
  • Ingress Config for HTTPS06:49
  • It Worked!02:52
  • Google Cloud Cleanup00:20
  • Local Environment Cleanup00:32
  • Awkward Local Development03:54
  • Installing Skaffold01:59
  • The Skaffold Config File06:43
  • Live Sync Changes05:02
  • Automatic Shutdown05:07
  • Testing Live Sync with the API Server05:29
  • Bonus!00:13
I waited to write the review almost until the end of the course and I can say that it is very very good. I love how the teacher explain the concepts, the diagrams he uses and how he goes deep, step-by-step, for each concept. Really one of the best I had on Udemy. The only thing that I can complain is that he speak too fast and jump to different screens rapidly, sometime doesn't let the time to properly understand the concept and I had to repeat or slow down the video.
Luca Gennari
Online Courses

Learning Docker doesn't have to be hard. Here is our curated list of recommended online courses that will guide you step-by-step in the learning process.

Learn more
Books

Are you an avid book reader? Do you prefer paperback, or maybe Kindle version? Take a look at our curated list of Docker related books and take yourskills to the next level.

Learn more
YouTube videos

The number of high-quality and free Docker video tutorials is growing fast. Check this curated list of recommended videos - there is no excuse to stop learning.

Learn more