Skip to main content
CourseFlix

Docker and Kubernetes - The Complete Developers Guide

12h 40m 38s
English
Free

This course guides you from your first steps with Docker and Kubernetes to building real apps on your own. You will learn through clear diagrams and hands-on work. You will containerize five projects, each one harder than the last. You will finish by building a small microservice app with Kubernetes and deploying it to AWS.

You will also build a set of projects you can share to show what you know.

What You Will Learn

  • What Docker containers are and why you use them
  • How to build Docker images and run containers
  • How to connect to a container from your host
  • How to keep data inside a database container
  • How to build a small app with docker-compose
  • How Kubernetes works and why it helps
  • The main Kubernetes objects and what they do
  • How a Kubernetes cluster is built
  • How to run a multi-part app on Kubernetes
  • How to push and pull images from a registry
  • How to deploy a container app to AWS ECS and AWS EKS
  • How to build a simple, production-ready CI/CD pipeline

You will learn by doing, and you will finish with skills you can use in real projects.

About the Author: udemy

udemy thumbnail

Udemy is a global online marketplace for teaching and learning. It connects students with instructors who share skills in many fields.

Who Uses Udemy

Millions of learners use Udemy to gain skills for work and personal growth. Companies, governments, and nonprofits also use Udemy to train their teams.

What Udemy Offers

Udemy provides a curated set of business and technical courses. These courses help teams build practical skills and support ongoing learning at work.

Watch Online 135 lessons

0:00 0:00
#Lesson TitleDuration
1What We'll Learn03:26
2Some Stuff We Need to Download03:12
3Installing Docker Desktop03:15
4A Little Analogy05:49
5Relating Our Analogy to Docker07:28
6Building a Small Node App06:17
7Running Our Node App Locally05:48
8Creating a Dockerfile03:39
9We are Really Building an Image05:29
10Understanding the Rest of the Dockerfile08:21
11Building an Image and Running a Container06:55
12Port Mapping04:18
13Rebuilding Our Image06:15
14Syncing Our Code with Bind Mounts04:38
15Using Anonymous Volumes07:03
16It's Not Docker's Fault!09:19
17Ignoring Files with Docker Ignore06:18
18Docker Layering and Caching07:34
19The Challenge05:17
20The Solution10:13
21An Intro to Control Plane05:57
22Viewing Our GVC03:35
23Pushing Our Image to an Image Repository07:40
24Running a Workload02:53
25Killing Our Deployment00:47
26Application Overview02:43
27How to Handle Multiple Component Applications04:58
28Going Through the Starter Code03:48
29Pulling Images From an Image Repository06:43
30Building our Node Image and Running the Container04:20
31Connecting Our Containers Through Localhost09:51
32Utilizing the Container's IP Address05:20
33Introducing Docker Networks06:00
34Dockerizing Our React App02:59
35Running into a Little Issue04:40
36Client Side Rendering is the Problem05:30
37Optimizing Our Workflow with Volumes17:07
38An Intro to Docker Compose03:54
39A Little About YAML Syntax04:32
40Writing the MongoDB Configuration04:44
41Setting Environment Variables05:13
42docker-compose up and docker-compose down03:30
43Setting Up the Backend Container10:40
44Testing the Integration01:43
45Setting Up the Frontend Container05:44
46Our Deployment Workflow03:31
47Writing the Dockerfile06:22
48Running the Container Locally03:02
49Create an Image Repository and Downloading the AWS CLI11:23
50IAM for Access Management10:28
51Pushing Our Image to the Registry04:03
52Creating an ECS Cluster07:13
53Creating a Task Definition04:15
54Running the Task with a ECS Service03:11
55Configuring the Inbound Rules of Our Security Group04:16
56Redeploying Changes in the Codebase07:56
57The Issues with a Manual Process02:10
58The Solution is Automation01:21
59Understanding a Production Grade Workflow08:06
60Pushing Our Code to GitHub02:45
61Creating a Pull Request05:11
62Building the Integration Pipeline10:05
63Setting up Branch Protection Rules (Not Really)02:17
64Setting Up AWS Credentials in GitHub Actions11:21
65Building and Pushing Our Image to ECR11:49
66My Bad Everyone02:38
67Downloading and Updating the task-definition.json File10:11
68Deploying the Task Definition07:41
69Fixing Our Deployment Issue04:24
70The Major Issue with This Solution04:56
71Blue/Green Deployments is the Optimal Solution04:21
72Tearing Down the ECS Cluster01:59
73Multi Container Deployment02:08
74The Need for NGINX04:06
75Multi Stage Dockerfile07:20
76The Issues With Using a Database Container05:50
77Setting Up Our Codebase for Deployment04:27
78Pushing Our Image to AWS ECR04:24
79Defining a Multi Container Task Defintion06:46
80Adding Environment Variables05:07
81Updating the Task Definition04:30
82Our New (Much Larger) Project08:15
83Can We Just Do the Same Thing?04:28
84Kubernetes to the Rescue02:57
85Communication via Kubectl03:57
86Installing Kubernetes01:33
87Writing Our First Manifest File04:50
88Containers Run in Pods05:35
89Selecting Kubernetes Objects With the apiVersion02:17
90Understanding the Rest of the Manifest File09:04
91Running Our Pod02:54
92Writing a Service Manifest File04:19
93How the NodePort Service Works09:31
94Creating the Node and Mongo Pods09:16
95ClusterIP Service for Internal Communication09:06
96What Happens if the Pod Crashes?04:37
97Deployments to the Rescue07:50
98Dissecting the Manifest File04:21
99Creating the Frontend Store ClusterIP04:15
100Creating the Deployment and ClusterIP For the Products API05:39
101Creating the MongoDB Deployment03:51
102Running All the Manifest Files06:43
103Deployment for the Notifications API08:26
104Deployment and ClusterIP for RabbitMQ05:14
105Checking if Everything Works02:20
106Adding Environment Variables to Our Code04:46
107Defining Environment Variables07:35
108ConfigMaps for Commonly Used Environment Variables08:32
109Hide Environment Variables With Secrets11:24
110The Need for an Ingress Service06:33
111Writing Some Ingress Configuration05:50
112Manually Testing Out Our App11:52
113Understanding the Ingress Configuration08:09
114Our Data is Not Persisting!02:38
115A Reminder on Volumes02:51
116Kubernetes Volumes Are Not the Solution02:53
117Persistent Volumes, for well... Persistent Data01:06
118Persistent Volume Claims02:16
119Writing the Config and Applying the PVC09:19
120The Deployment Process07:46
121Creating a EKS Cluster with Eksctl05:19
122Understanding Kubectl Context06:03
123Creating the Twilio Secret in Prod04:18
124Adding an AWS Ingress Load Balancer02:40
125Defining the Host Domain05:36
126Applying the Rest of Our Configuration04:30
127Testing Our Deployed App!02:50
128Updating Our Production Cluster07:00
129The Steps Our CD Pipeline Needs to Take04:19
130Creating a GitHub Repository07:12
131Starting Our Deployment Workflow11:39
132Building and Pushing Our Image to DockerHub08:05
133Completing Our Pipeline By Updating Our Cluster07:03
134It Worked!01:15
135Deleting Our Cluster01:03