Docker And Kubernetes The Complete Guide

Tags: Docker

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

Last updated 2022-01-10 | 4.6

- 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

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!

* Requirements

* 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

Description

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 Pipelines

Of 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 required

  • Build your own custom images tailored to your applications

  • Master the Docker CLI to inspect and debug running containers

  • Understand how Docker works behind the scenes, and what a container is

  • Build a CI + CD pipeline from scratch with Github, Travis CI, and AWS

  • Automatically deploy your code when it is pushed to Github!

  • Build a complex multi-container application from scratch and deploy it to AWS

  • Understand the purpose and theory of Kubernetes

  • Deploy a production-ready Kubernetes Cluster to Google Cloud

Who this course is for:

  • Software engineers looking to deploy their apps easily and quickly

Course content

19 sections • 327 lectures

Finished Code and Diagrams Preview 00:35

Join Our Community! Preview 00:07

Why Use Docker? Preview 03:43

What is Docker? Preview 02:53

Docker for Mac/Windows Preview 01:57

Installing Docker on MacOS Preview 04:45

Installing Docker with WSL2 on Windows 10 Home and Pro Preview 01:38

Installing Docker for Windows Professional with HyperV Preview 02:03

More Windows Professional Setup with HyperV Preview 00:40

One Last Piece of Windows Professional Setup with HyperV Preview 01:09

Installing Docker on Linux Preview 00:58

Using the Docker Client Preview 05:03

But Really...What's a Container? Preview 08:30

How's Docker Running on Your Computer? Preview 02:44

Docker Run in Detail Preview 01:54

Overriding Default Commands Preview 05:12

Listing Running Containers Preview 04:09

Container Lifecycle Preview 05:16

Restarting Stopped Containers Preview 03:43

Removing Stopped Containers Preview 01:39

Retrieving Log Outputs Preview 02:33

Stopping Containers Preview 05:21

Multi-Command Containers Preview 04:16

Executing Commands in Running Containers Preview 02:53

The Purpose of the IT Flag Preview 04:35

Getting a Command Prompt in a Container Preview 04:06

Starting with a Shell Preview 02:13

Container Isolation Preview 03:09

Creating Docker Images Preview 02:36

Buildkit for Docker Desktop v2.4.0+ and Edge Preview 00:41

Building a Dockerfile Preview 04:51

Dockerfile Teardown Preview 02:41

What's a Base Image? Preview 05:40

The Build Process in Detail Preview 11:09

A Brief Recap Preview 03:24

Rebuilds with Cache Preview 07:02

Tagging an Image Preview 04:26

Quick Note for Windows Users Preview 00:14

Manual Image Generation with Docker Commit Preview 05:00

Project Outline Preview 02:35

Node Server Setup Preview 05:03

A Few Planned Errors Preview 05:12

Required WORKDIR update - "Could not detect node name", "idealTree" errors Preview 00:33

Base Image Issues Preview 07:50

A Few Missing Files Preview 03:18

Copying Build Files Preview 04:50

Container Port Mapping Preview 07:26

Specifying a Working Directory Preview 07:52

Unnecessary Rebuilds Preview 04:16

Minimizing Cache Busting and Rebuilds Preview 04:58

App Overview Preview 03:57

App Server Starter Code Preview 06:43

Assembling a Dockerfile Preview 03:12

Introducing Docker Compose Preview 05:31

Docker Compose Files Preview 06:02

Networking with Docker Compose Preview 05:00

Docker Compose Commands Preview 04:38

Stopping Docker Compose Containers Preview 02:34

Container Maintenance with Compose Preview 02:53

Automatic Container Restarts Preview 09:21

Container Status with Docker Compose Preview 02:21

Development Workflow Preview 01:28

Flow Specifics Preview 06:32

Docker's Purpose Preview 01:50

Project Generation Preview 03:25

Create React App Generation Preview 00:19

More on Project Generation Preview 01:44

Necessary Commands Preview 05:09

Creating the Dev Dockerfile Preview 03:42

Duplicating Dependencies Preview 01:29

React App Exits Immediately with Docker Run Command Preview 00:10

Starting the Container Preview 02:50

Docker Volumes Preview 06:53

WSL2 and Windows Users Must Read Before Next Lecture Preview 02:13

Bookmarking Volumes Preview 04:50

React App Exited With Code 0 Preview 00:13

Shorthand with Docker Compose Preview 04:22

Overriding Dockerfile Selection Preview 02:02

Windows not Detecting Changes - Docker Compose Preview 00:08

Do We Need Copy? Preview 02:51

Executing Tests Preview 03:38

Live Updating Tests Preview 04:54

Docker Compose for Running Tests Preview 05:45

Shortcomings on Testing Preview 08:30

Need for Nginx Preview 03:07

Multi-Step Docker Builds Preview 06:54

Implementing Multi-Step Builds Preview 07:05

Running Nginx Preview 02:27

Services Overview Preview 03:04

Github Setup Preview 03:57

Important Info About Travis and Account Registration Preview 00:36

Travis CI Setup Preview 04:17

Travis YML File Configuration Preview 07:39

Required Travis Script Updates Preview 00:21

A Touch More Travis Setup Preview 04:14

Automatic Build Creation Preview 03:30

Required Updates for Amazon Linux 2 Platform - DO NOT SKIP Preview 00:40

AWS Elastic Beanstalk Preview 04:10

More on Elastic Beanstalk Preview 02:25

Travis Config for Deployment Preview 08:46

Travis Keys Update and Account Migration Preview 00:24

Automated Deployments Preview 07:17

Exposing Ports Through the Dockerfile Preview 03:56

Workflow With Github Preview 03:59

Redeploy on Pull Request Merge Preview 02:01

Deployment Wrapup Preview 02:03

Environment Cleanup Preview 00:24

AWS Configuration Cheat Sheet Preview 02:36

Finished Project Code with Updates Applied Preview 00:07

Single Container Deployment Issues Preview 03:02

Application Overview Preview 04:30

A Quick Note Preview 00:15

Application Architecture Preview 05:11

Worker Process Setup Preview 11:41

Express API Setup Preview 05:19

Important Update for Table Query Preview 00:24

Connecting to Postgres Preview 07:36

More Express API Setup Preview 12:20

Create React App Generation Preview 00:32

Generating the React App Preview 01:51

Fetching Data in the React App Preview 06:31

Rendering Logic in the App Preview 08:29

Exporting the Fib Class Preview 00:26

Routing in the React App Preview 04:36

Checkpoint Files Preview 00:13

Checkpoint Catchup Preview 02:39

Dockerizing a React App - Again! Preview 06:41

Dockerizing Generic Node Apps Preview 03:47

Adding Postgres as a Service Preview 07:05

Docker-compose Config Preview 06:17

Postgres Database Required Fixes and Updates Preview 00:15

Environment Variables with Docker Compose Preview 10:20

Required Client Service Update and Worker Environment Variables Preview 00:26

The Worker and Client Services Preview 03:42

Nginx Path Routing Preview 09:41

Routing with Nginx Preview 11:12

Building a Custom Nginx Image Preview 05:38

Starting Up Docker Compose Preview 01:50

Nginx connect() failed - Connection refused while connecting to upstream Preview 00:15

Troubleshooting Startup Bugs Preview 03:22

Opening Websocket Connections Preview 03:51

Production Multi-Container Deployments Preview 05:39

Production Dockerfiles Preview 06:05

Multiple Nginx Instances Preview 05:23

Nginx fix for React Router Preview 00:18

Altering Nginx's Listen Port Preview 04:53

Cleaning Up Tests Preview 01:11

Github and Travis CI Setup Preview 04:08

Fix for Failing Travis Builds Preview 00:22

Travis Configuration Setup Preview 08:45

Pushing Images to Docker Hub Preview 07:34

Successful Image Building Preview 01:49

Important Info About Multi Containers on Amazon Linux 2 Platform Preview 00:25

Multi-Container Definition Files Preview 04:29

Finding Docs on Container Definitions Preview 03:09

Adding Container Definitions to DockerRun Preview 05:45

More Container Definitions Preview 05:18

Forming Container Links Preview 07:47

Using the Amazon Linux 2 Platform Preview 01:30

AWS Configuration Cheat Sheet - Updated for new UI Preview 04:33

Creating the EB Environment Preview 03:30

Managed Data Service Providers Preview 10:44

Overview of AWS VPC's and Security Groups Preview 09:21

RDS Database Creation Preview 06:31

ElastiCache Redis Creation Preview 04:11

Creating a Custom Security Group Preview 04:18

Applying Security Groups to Resources Preview 04:59

Setting Environment Variables Preview 07:55

IAM Keys for Deployment Preview 05:12

Travis Keys Update Preview 00:19

Travis Deploy Script Preview 03:20

Container Memory Allocations Preview 04:10

Verifying Deployment Preview 02:56

A Quick App Change Preview 01:29

Making Changes Preview 00:57

Cleaning Up AWS Resources Preview 05:05

AWS Configuration Cheat Sheet Preview 04:33

Finished Project Code with Updates Applied Preview 00:14

The Why's and What's of Kubernetes Preview 08:06

Kubernetes in Development and Production Preview 05:47

Docker Desktop's Kubernetes Setup and Installation - macOS Preview 00:57

Docker Desktop's Kubernetes Setup and Installation - Windows Preview 01:06

Updated Minikube Install and Setup Info - macOS Preview 01:03

Minikube Setup on MacOS Preview 05:36

Minikube Setup on Windows Preview 01:00

Minikube Setup on Linux Preview 00:58

Mapping Existing Knowledge Preview 07:37

Quick Note to Prevent an Error Preview 00:37

Adding Configuration Files Preview 06:51

Object Types and API Versions Preview 06:55

Running Containers in Pods Preview 09:19

Service Config Files in Depth Preview 13:37

Connecting to Running Containers Preview 10:24

The Entire Deployment Flow Preview 13:02

Imperative vs Declarative Deployments Preview 13:36

Updating Existing Objects Preview 06:10

Declarative Updates in Action Preview 07:04

Limitations in Config Updates Preview 02:55

Running Containers with Deployments Preview 06:03

Quick Note to Prevent an Error Preview 00:09

Deployment Configuration Files Preview 03:18

Walking Through the Deployment Config Preview 04:23

Applying a Deployment Preview 06:22

Why Use Services? Preview 05:19

Scaling and Changing Deployments Preview 06:31

Updating Deployment Images Preview 03:57

Rebuilding the Client Image Preview 02:59

Triggering Deployment Updates Preview 12:24

Imperatively Updating a Deployment's Image Preview 07:24

Reminder for Docker Desktop's Kubernetes Users Preview 00:12

Multiple Docker Installations Preview 05:37

Reconfiguring Docker CLI Preview 05:57

Why Mess with Docker in the Node? Preview 05:05

The Path to Production Preview 05:12

Checkpoint Files Preview 00:20

A Quick Checkpoint Preview 04:35

Recreating the Deployment Preview 05:29

NodePort vs ClusterIP Services Preview 03:41

The ClusterIP Config Preview 03:52

Applying Multiple Files with Kubectl Preview 04:18

Express API Deployment Config Preview 06:02

Cluster IP for the Express API Preview 03:08

Combining Config Into Single Files Preview 05:59

The Worker Deployment Preview 04:36

Reapplying a Batch of Config Files Preview 04:51

Creating and Applying Redis Config Preview 07:26

Important Note about Expected Postgres Error Preview 00:59

Last Set of Boring Config! Preview 06:14

The Need for Volumes with Databases Preview 07:18

Kubernetes Volumes Preview 05:17

Volumes vs Persistent Volumes Preview 02:59

Persistent Volumes vs Persistent Volume Claims Preview 09:21

Claim Config Files Preview 02:56

Persistent Volume Access Modes Preview 03:31

Where Does Kubernetes Allocate Persistent Volumes? Preview 07:42

Designating a PVC in a Pod Template Preview 06:09

Applying a PVC Preview 02:22

Defining Environment Variables Preview 04:08

Adding Environment Variables to Config Preview 05:44

Creating an Encoded Secret Preview 09:25

Postgres Environment Variable Fix Preview 00:14

Passing Secrets as Environment Variables Preview 05:53

Environment Variables as Strings Preview 02:17

Load Balancer Services Preview 04:14

A Quick Note on Ingresses Preview 03:32

One Other Quick Note! Preview 01:37

Behind the Scenes of Ingress Preview 05:17

More Behind the Scenes of Ingress Preview 06:37

Optional Reading on Ingress Nginx Preview 00:09

Docker Driver and Ingress - IMPORTANT Preview 00:26

Important - DO NOT SKIP - Ingress Nginx Installation Info Preview 00:20

Setting up Ingress Locally with Minikube Preview 06:21

Setting up Ingress with Docker Desktop's Kubernetes Preview 00:20

Ingress v1 API Update + "this.state.seenIndexes.map..." + 404 errors Preview 00:47

Creating the Ingress Configuration Preview 07:00

Testing Ingress Locally Preview 02:50

The Minikube Dashboard Preview 03:28

Docker Desktop's Kubernetes Dashboard Preview 01:11

The Deployment Process Preview 05:49

Google Cloud vs AWS for Kubernetes Preview 04:53

Creating a Git Repo Preview 03:59

Linking the Github Repo to Travis Preview 01:35

Free Google Cloud Credits Preview 00:18

Creating a Google Cloud Project Preview 01:59

Linking a Billing Account Preview 02:11

Updated GKE creation steps for new Google Cloud UI Preview 01:03

Kubernetes Engine Init Preview 01:47

Creating a Cluster with Google Cloud Preview 04:47

Don't Forget to Cleanup! Preview 00:14

Kubernetes Dashboard on Google Cloud Preview 04:33

Travis Deployment Overview Preview 05:04

Installing the Google Cloud SDK Preview 05:44

Updated Service Account steps for new GCP UI Preview 00:49

Generating a Service Account Preview 05:29

Ruby Version Fix Preview 00:17

Running Travis CLI in a Container Preview 09:17

Travis Login Issues, "iv undefined" or "repository not known" Preview 00:54

Encrypting a Service Account File Preview 07:54

More Google Cloud CLI Config Preview 04:39

Fix For Failing Travis Builds Preview 00:17

Running Tests with Travis Preview 06:18

Custom Deployment Providers Preview 03:49

Unique Deployment Images Preview 08:33

Unique Tags for Built Images Preview 07:47

Updating the Deployment Script Preview 07:50

Configuring the GCloud CLI on Cloud Console Preview 05:34

Creating a Secret on Google Cloud Preview 02:24

Helm v3 Update Preview 00:40

Helm Setup Preview 08:15

Kubernetes Security with RBAC Preview 08:21

Assigning Tiller a Service Account Preview 05:08

Ingress-Nginx with Helm Preview 01:56

Quick Note about the Default Backend Preview 00:12

The Result of Ingress-Nginx Preview 03:48

Finally - Deployment! Preview 03:30

Did I Really Type That? Preview 00:45

Verifying Deployment Preview 05:20

A Workflow for Changing in Prod Preview 04:29

Merging a PR for Deployment Preview 01:01

That's It! What's Next? Preview 01:37

Completed Code For Google Cloud Deployment Preview 00:03

HTTPS Setup Overview Preview 05:35

Domain Purchase Preview 02:17

Domain Name Setup Preview 03:30

Required Updates for Cert Manager Install Preview 00:26

Cert Manager Install Preview 01:57

How to Wire Up Cert Manager Preview 05:58

Required Update for Issuer Preview 00:13

Issuer Config File Preview 05:07

Required Update for the Certificate Preview 00:17

Certificate Config File Preview 05:18

Deploying Changes Preview 03:15

No Resources Found? Preview 00:12

Verifying the Certificate Preview 03:54

Required Update for the HTTPS Ingress Preview 00:04

Ingress Config for HTTPS Preview 06:49

It Worked! Preview 02:51

Google Cloud Cleanup Preview 00:20

Local Environment Cleanup Preview 00:38

Awkward Local Development Preview 03:54

Installing Skaffold Preview 01:59

The Skaffold Config File Preview 06:43

Skaffold Sync Update and Example Source Code Preview 01:12

Live Sync Changes Preview 05:02

Automatic Shutdown Preview 05:07

Testing Live Sync with the API Server Preview 05:29