Docker & Kubernetes: The Practical Guide

Docker & Kubernetes: The Practical Guide

English | MP4 | AVC 1280×720 | AAC 48KHz 2ch | 23.5 Hours | 9.41 GB


Learn Docker, Docker Compose, Multi-Container Projects, Deployment and all about Kubernetes from the ground up!

Docker & Kubernetes are amongst the most in-demand technologies and topics you can learn these days.

Why?

Because they significantly simplify the development and deployment process of both simple and complex software projects. Especially in web development (though not limited to that), Docker can really take you to the next level!

With Docker, you create and manage so-called “Containers” – basically packages of code and tools required to run that code. These containers allow you to run your programs in a predictable, environment-independent way – no matter where you need to run it.

For modern DevOps but also for local development – on your own or in a team – this is a winner feature since you will no longer have any “but it worked on my machine” discussions. It works inside of a container, hence it works everywhere!

This course will teach you both Docker & Kubernetes from the ground up with all the required theory and tons of examples and demos!

We’ll explore all key concepts in detail and with practical examples and demos – from images and containers, over volumes and networking all the way up to deployment and Kubernetes Cluster: This course has it all!

In detail, this course includes the following topics:

  • A thorough introduction to Docker, containers and why you might want to use Docker
  • Detailed setup instructions for macOS and Windows
  • A deep-dive into the core concepts you need to know: Containers & images
  • Learn how to create custom images, use existing images and how to run containers based on such images
  • Get a detailed overview of the core commands you need when working with Docker
  • Learn how to work with data and how to persist data with volumes
  • Explore container networking – with the outside world and between multiple containers
  • Learn how to work with both single and multi-container projects
  • In-depth deployment instructions: Manual deployment and deployment with managed services like AWS ECS
  • Understand Kubernetes core concepts & architecture
  • Learn how to create Kubernetes resources, deployments, services and how to run your containers with Kubernetes
  • Dive deeply into working with data in Kubernetes projects – with different types of volumes
  • Kubernetes networking and DNS service discovery
  • Learn how to deploy your Kubernetes project (at the example of AWS EKS)
  • And much more!

All these topics are taught in great detail with slides and theory but also, most importantly, with many examples and demo!

You’ll find tons of demo projects throughout the course – using programming languages like NodeJS, Python or PHP (with Laravel). You don’t need to know these languages to follow along though, no worries!

What you’ll learn

  • You will learn what Docker and Kubernetes are and why you might want to use them
  • Learn how to install and use Docker on any system (macOS, Windows, Linux)
  • Learn how to create and use Images & Containers with Docker
  • Understand complex topics like managing and persisting data with Volumes
  • Learn about Container Networking with Docker Networks and DNS Service Discovery
  • Learn how to deploy Docker applications – manually, with managed services or with Kubernetes


+ Table of Contents

Getting Started
1 Welcome to the Course
2 What Is Docker
3 Why Docker & Containers
4 Join Our Learning Community
5 Virtual Machines vs Docker Containers
6 Docker Setup – Overview
7 Docker Setup – macOS
8 Docker Setup – Windows
9 Docker Setup – Docker Toolbox for Older Systems
10 An Overview of the Docker Tools
11 Installing & Configuring an IDE
12 Getting Our Hands Dirty!
13 Course Outline
14 How To Get The Most Out Of This Course
15 Course Resources

Docker Images & Containers The Core Building Blocks
16 Module Introduction
17 Images & Containers What and Why
18 Using & Running External (Pre-Built) Images
19 Our Goal A NodeJS App
20 Building our own Image with a Dockerfile
21 Running a Container based on our own Image
22 A Little Utility Functionality
23 Images are Read-Only!
24 Understanding Image Layers
25 A First Summary
26 Managing Images & Containers
27 Stopping & Restarting Containers
28 Understanding Attached & Detached Containers
29 Attaching to an already-running Container
30 Entering Interactive Mode
31 Deleting Images & Containers
32 Removing Stopped Containers Automatically
33 A Look Behind the Scenes Inspecting Images
34 Copying Files Into & From A Container
35 Naming & Tagging Containers and Images
36 Sharing Images – Overview
37 Pushing Images to DockerHub
38 Pulling & Using Shared Images
39 Module Summary
40 Module Resources

Managing Data & Working with Volumes
41 Module Introduction
42 Understanding Data Categories Different Kinds of Data
43 Analyzing a Real App
44 Building & Understanding the Demo App
45 Understanding the Problem
46 Introducing Volumes
47 A First, Unsuccessful Try
48 Named Volumes To The Rescue!
49 Removing Anonymous Volumes
50 Getting Started With Bind Mounts (Code Sharing)
51 Combining & Merging Different Volumes
52 A NodeJS-specific Adjustment Using Nodemon in a Container
53 Volumes & Bind Mounts Summary
54 A Look at Read-Only Volumes
55 Managing Docker Volumes
56 Using COPY vs Bind Mounts
57 Don’t COPY Everything Using dockerignore Files
58 Adding more to the .dockerignore File
59 Working with Environment Variables & .env Files
60 Using Build Arguments (ARG)
61 Module Summary
62 Module Resources

Networking (Cross-)Container Communication
63 Module Introduction
64 Case 1 Container to WWW Communication
65 Case 2 Container to Local Host Machine Communication
66 Case 3 Container to Container Communication
67 Analyzing the Demo App
68 Creating a Container & Communicating to the Web (WWW)
69 Making Container to Host Communication Work
70 Container to Container Communication A Basic Solution
71 Introducing Docker Networks Elegant Container to Container Communication
72 How Docker Resolves IP Addresses
73 Docker Network Drivers
74 Module Summary
75 Module Resources

Building Multi-Container Applications with Docker
76 Module Introduction
77 Our Target App & Setup
78 Dockerizing the MongoDB Service
79 Dockerizing the Node App
80 Moving the React SPA into a Container
81 Adding Docker Networks for Efficient Cross-Container Communication
82 Adding Data Persistence to MongoDB with Volumes
83 Volumes, Bind Mounts & Polishing for the NodeJS Container
84 Live Source Code Updates for the React Container (with Bind Mounts)
85 Module Summary
86 Module Resources

Docker Compose Elegant Multi-Container Orchestration
87 Module Introduction
88 Docker-Compose What & Why
89 Creating a Compose File
90 Diving into the Compose File Configuration
91 Docker Compose Up & Down
92 Working with Multiple Containers
93 Adding Another Container
94 Building Images & Understanding Container Names
95 Module Summary
96 Module Resources

Working with Utility Containers & Executing Commands In Containers
97 Module Introduction & What are Utility Containers
98 Utility Containers Why would you use them
99 Different Ways of Running Commands in Containers
100 Building a First Utility Container
101 Utilizing ENTRYPOINT
102 Using Docker Compose
103 Module Summary
104 Module Resources

A More Complex Setup A Laravel & PHP Dockerized Project
105 Module Introduction
106 The Target Setup
107 Adding a Nginx (Web Server) Container
108 Adding a PHP Container
109 Adding a MySQL Container
110 Adding a Composer Utility Container
111 Creating a Laravel App via the Composer Utility Container
112 Launching Only Some Docker Compose Services
113 Adding More Utility Containers
114 Docker Compose with and without Dockerfiles
115 Bind Mounts and COPY When To Use What
116 Module Resources

Deploying Docker Containers
117 Module Introduction
118 From Development To Production
119 Deployment Process & Providers
120 Getting Started With An Example
121 Bind Mounts In Production
122 Introducing AWS & EC2
123 Connecting to an EC2 Instance
124 Installing Docker on a Virtual Machine
125 Installing Docker on Linux in General
126 Pushing our local Image to the Cloud
127 Running & Publishing the App (on EC2)
128 Managing & Updating the Container Image
129 Disadvantages of our Current Approach
130 From Manual Deployment to Managed Services
131 Important AWS, Pricing and ECS
132 Deploying with AWS ECS A Managed Docker Container Service
133 More on AWS
134 Updating Managed Containers
135 Preparing a Multi-Container App
136 Configuring the NodeJS Backend Container
137 Deploying a Second Container & A Load Balancer
138 Using a Load Balancer for a Stable Domain
139 Using EFS Volumes with ECS
140 Our Current Architecture
141 Databases & Containers An Important Consideration
142 Moving to MongoDB Atlas
143 Using MongoDB Atlas in Production
144 Our Updated & Target Architecture
145 Understanding a Common Problem
146 Creating a build-only Container
147 Introducing Multi-Stage Builds
148 Building a Multi-Stage Image
149 Deploying a Standalone Frontend App
150 Development vs Production Differences
151 Understanding Multi-Stage Build Targets
152 Beyond AWS
153 Module Summary
154 Module Resources

Docker & Containers – A Summary
155 Module Introduction
156 Images & Containers
157 Key Commands
158 Data, Volumes & Networking
159 Docker Compose
160 Local vs Remote
161 Deployment
162 Module Resources

Getting Started with Kubernetes
163 Module Introduction
164 More Problems with Manual Deployment
165 Why Kubernetes
166 What Is Kubernetes Exactly
167 Kubernetes Architecture & Core Concepts
168 Kubernetes will NOT manage your Infrastructure!
169 A Closer Look at the Worker Nodes
170 A Closer Look at the Master Node
171 Important Terms & Concepts
172 Kubernetes Core Concepts
173 Module Resources

Kubernetes in Action – Diving into the Core Concepts
174 Module Introduction
175 Kubernetes does NOT manage your Infrastructure
176 Kubernetes Required Setup & Installation Steps
177 macOS Setup
178 Windows Setup
179 Understanding Kubernetes Objects (Resources)
180 The Deployment Object (Resource)
181 A First Deployment – Using the Imperative Approach
182 kubectl Behind The Scenes
183 The Service Object (Resource)
184 Exposing a Deployment with a Service
185 Restarting Containers
186 Scaling in Action
187 Updating Deployments
188 Deployment Rollbacks & History
189 The Imperative vs The Declarative Approach
190 Creating a Deployment Configuration File (Declarative Approach)
191 Adding Pod and Container Specs
192 Working with Labels & Selectors
193 Creating a Service Declaratively
194 Updating & Deleting Resources
195 Multiple vs Single Config Files
196 More on Labels & Selectors
197 Liveness Probes
198 A Closer Look at the Configuration Options
199 Summary
200 Module Resources

Managing Data & Volumes with Kubernetes
201 Module Introduction
202 Starting Project & What We Know Already
203 Kubernetes & Volumes – More Than Docker Volumes
204 Kubernetes Volumes Theory & Docker Comparison
205 Creating a New Deployment & Service
206 Getting Started with Kubernetes Volumes
207 A First Volume The emptyDir Type
208 A Second Volume The hostPath Type
209 Understanding the CSI Volume Type
210 From Volumes to Persistent Volumes
211 Defining a Persistent Volume
212 Creating a Persistent Volume Claim
213 Using a Claim in a Pod
214 Volumes vs Persistent Volumes
215 Using Environment Variables
216 Environment Variables & ConfigMaps
217 Module Summary
218 Module Resources

Kubernetes Networking
219 Module Introduction
220 Starting Project & Our Goal
221 Creating a First Deployment
222 Another Look at Services
223 Multiple Containers in One Pod
224 Pod-internal Communication
225 Creating Multiple Deployments
226 Pod-to-Pod Communication with IP Addresses & Environment Variables
227 Using DNS for Pod-to-Pod Communication
228 Which Approach Is Best And a Challenge!
229 Challenge Solution
230 Adding a Containerized Frontend
231 Deploying the Frontend with Kubernetes
232 Using a Reverse Proxy for the Frontend
233 Module Summary
234 Module Resources

Kubernetes – Deployment (AWS EKS)
235 Module Introduction
236 Deployment Options & Steps
237 AWS EKS vs AWS ECS
238 Preparing the Starting Project
239 A Note on AWS EKS Pricing
240 Diving Into AWS
241 Creating & Configuring the Kubernetes Cluster with EKS
242 Adding Worker Nodes
243 Applying Our Kubernetes Config
244 Getting Started with Volumes
245 Adding EFS as a Volume (with the CSI Volume Type)
246 Creating a Persistent Volume for EFS
247 Using the EFS Volume
248 A Challenge!
249 Challenge Solution
250 Module Resources

Roundup & Next Steps
251 You Learned A Lot!
252 Related Topics You Could Explore
253 Next Steps!
254 Bonus!