1 – Getting Started
BAI Community
How Do I Find Time for My Nanodegree?00:00
Career support
6 Docker Setup – Overview00:00
7 Docker Setup – macOS00:00
8 Docker Setup – Windows00:00
9 Docker Setup – Docker Toolbox for Older Systems00:00
10 Docker Playground
11 An Overview of the Docker Tools3:05
12 Installing & Configuring an IDE2:07
13 Dockerfile9:23
14 Course Outline4:14
15 How To Get The Most Out Of This Course3:25
16 Course Resources
17 Course Setup
2 – Docker Images & Containers
18 Module Introduction1:17
19 Images & Containers What and Why2:30
20 Using & Running External (Pre-Built) Images8:29
21 Our Goal A NodeJS App6:41
22 Building our own Image with a Dockerfile11:14
23 Running a Container based on our own Image7:58
24 EXPOSE & A Little Utility Functionality
25 Images are Read-Only!5:52
26 Understanding Image Layers00:00
27 A First Summary00:00
28 Images & Containers
29 Managing Images & Containers2:01
30 Stopping & Restarting Containers4:32
31 Understanding Attached & Detached Containers00:00
32 Attaching to an already-running Container
33 Entering Interactive Mode10:45
34 Deleting Images & Containers6:34
35 Removing Stopped Containers Automatically00:00
36 A Look Behind the Scenes Inspecting Images4:01
37 Copying Files Into & From A Container00:00
38 Naming & Tagging Containers and Images00:00
39 Sharing Images – Overview00:00
40 Pushing Images to DockerHub00:00
042 Managing Images & Containers
41 Pulling & Using Shared Images00:00
43 Module Summary00:00
App Finished
3 – Managing Data & Working with Volumes
45 Module Introduction00:00
46 Understanding Data Categories Different Kinds of Data7:20
47 Analyzing a Real App3:03
48 Building & Understanding the Demo App8:36
49 Understanding the Problem5:26
50 Introducing Volumes2:58
51 A First, Unsuccessful Try7:46
52 Named Volumes To The Rescue!8:36
53 Removing Anonymous Volumes
54 Getting Started With Bind Mounts (Code Sharing)10:42
55 Bind Mounts – Shortcuts
56 Combining & Merging Different Volumes7:52
57 A NodeJS-specific Adjustment Using Nodemon in a Container7:17
58 Volumes & Bind Mounts Summary5:54
059 Volumes & Bind Mounts
60 A Look at Read-Only Volumes5:40
061 Managing Docker Volumes7:39
062 Using COPY vs Bind Mounts3:27
063 Don’t COPY Everything Using dockerignore Files2:31
064 Adding more to the .dockerignore File
065 Working with Environment Variables & .env Files8:48
066 Environment Variables & Security
067 Using Build Arguments (ARG)5:09
068 Module Summary5:15
069 Data Volumes
070 Submit the project
04 – Networking (Cross-)Container Communication
070 Module Introduction1:16
071 Case 1 Container to WWW Communication3:50
072 Case 2 Container to Local Host Machine Communication2:14
073 Case 3 Container to Container Communication2:41
074 Analyzing the Demo App7:51
075 Creating a Container & Communicating to the Web (WWW)3:50
076 Making Container to Host Communication Work00:00
077 Container to Container Communication A Basic Solution00:00
078 Introducing Docker Networks Elegant Container to Container Communication00:00
079 How Docker Resolves IP Addresses00:00
080 Docker Container Communication & Networks
081 Docker Network Drivers
082 Module Summary ‐00:00
083 Module Resources
084 Submit the project
05 – Building Multi-Container Applications with Docker
084 Module Introduction00:00
085 Our Target App & Setup10:49
086 Dockerizing the MongoDB Service4:26
087 Dockerizing the Node App00:00
088 Moving the React SPA into a Container00:00
089 Adding Docker Networks for Efficient Cross-Container Communication00:00
090 Fixing MongoDB Authentication Errors (relevant for next lecture)
091 Adding Data Persistence to MongoDB with Volumes00:00
092 Volumes, Bind Mounts & Polishing for the NodeJS Container00:00
093 Live Source Code Updates for the React Container (with Bind Mounts)00:00
094 Module Summary00:00
095 Module Resources
096 Submit the project
06 – Docker Compose Elegant Multi-Container Orchestration
096 Module Introduction00:00
097 Docker-Compose What & Why00:00
098 Creating a Compose File00:00
099 Diving into the Compose File Configuration00:00
100 Installing Docker Compose on Linux
101 Docker Compose Up & Down00:00
102 Working with Multiple Containers00:00
103 Adding Another Container00:00
104 Building Images & Understanding Container Names00:00
105 Docker Compose
106 Module Summary00:00
107 Module Resources
108 Submit the project
07 – Working with Utility Containers & Executing Commands In Containers
108 Module Introduction & What are Utility Containers00:00
109 Utility Containers Why would you use them00:00
110 Different Ways of Running Commands in Containers00:00
111 Building a First Utility Container00:00
112 Utilizing ENTRYPOINT00:00
113 Using Docker Compose00:00
114 Utility Containers, Permissions & Linux
115 Module Summary00:00
116 Submit the project
08 – A More Complex Setup A Laravel & PHP Dockerized Project
117 Module Introduction2:29
118 The Target Setup7:13
119 Adding a Nginx (Web Server) Container8:08
120 Adding a PHP Container00:00
121 Adding a MySQL Container00:00
122 Adding a Composer Utility Container00:00
123 Creating a Laravel App via the Composer Utility Container00:00
124 Fixing Errors With The Next Lecture
125 Launching Only Some Docker Compose Services00:00
126 Adding More Utility Containers00:00
127 Docker Compose with and without Dockerfiles00:00
128 Bind Mounts and COPY When To Use What00:00
129 Module Resources
130 Submit the project
09 – Deploying Docker Containers
130 Module Introduction00:00
131 From Development To Production00:00
132 Deployment Process & Providers00:00
133 Getting Started With An Example00:00
134 Bind Mounts In Production00:00
135 Introducing AWS & EC2 ‐00:00
136 Connecting to an EC2 Instance00:00
137 Important Installing Docker on a Virtual Machine
138 Installing Docker on a Virtual Machine00:00
139 Installing Docker on Linux in General
140 Pushing our local Image to the Cloud00:00
141 Running & Publishing the App (on EC2)00:00
142 Managing & Updating the Container Image00:00
143 Disadvantages of our Current Approach00:00
144 From Manual Deployment to Managed Services00:00
145 Important AWS, Pricing and ECS
146 Deploying with AWS ECS A Managed Docker Container Service00:00
147 AWS-Getting-Started-Tutorial00:00
148 Updating Managed Containers00:00
149 Preparing a Multi-Container App00:00
150 Configuring the NodeJS Backend Container00:00
151 Deploying a Second Container & A Load Balancer00:00
152 Using a Load Balancer for a Stable Domain00:00
153 Using EFS Volumes with ECS00:00
154 Our Current Architecture00:00
155 Databases & Containers An Important Consideration00:00
156 Moving to MongoDB Atlas00:00
157 Using MongoDB Atlas in Production00:00
158 Our Updated & Target Architecture00:00
159 Understanding a Common Problem00:00
160 Creating a build-only Container00:00
161 Introducing Multi-Stage Builds00:00
162 Building a Multi-Stage Image00:00
163 Deploying a Standalone Frontend App00:00
164 Development vs Production Differences00:00
165 Understanding Multi-Stage Build Targets00:00
166 Beyond AWS00:00
167 Module Summary00:00
168 Submit the project
10 – Docker & Containers – A Summary
169 Module Introduction00:00
170 Images & Containers00:00
171 Key Commands00:00
172 Data, Volumes & Networking00:00
173 Docker Compose00:00
174 Local vs Remote00:00
175 Deployment00:00
11 – Getting Started with Kubernetes
177 Module Introduction00:00
178 More Problems with Manual Deployment00:00
179 Why Kubernetes00:00
180 What Is Kubernetes Exactly00:00
181 Kubernetes Architecture & Core Concepts00:00
182 Kubernetes will NOT manage your Infrastructure!00:00
183 A Closer Look at the Worker Nodes00:00
184 A Closer Look at the Master Node00:00
185 Important Terms & Concepts00:00
186 Kubernetes Core Concepts
187 Cheat-Sheet-Kubernetes
12 – Kubernetes in Action – Diving into the Core Concepts
188 Module Introduction00:00
189 Kubernetes does NOT manage your Infrastructure00:00
190 Minikube-Setup-Instructions-All-OS-00:00
191 kubectl-Setup-macOS-00:00
192 Minikube-Setup00:00
193 Understanding Kubernetes Objects (Resources)00:00
194 The Deployment Object (Resource)00:00
195 A First Deployment – Using the Imperative Approach00:00
196 kubectl Behind The Scenes00:00
197 The Service Object (Resource)00:00
198 Exposing a Deployment with a Service00:00
199 Restarting Containers00:00
200 Scaling in Action00:00
201 Updating Deployments00:00
202 Deployment Rollbacks & History00:00
203 The Imperative vs The Declarative Approach00:00
204 Creating a Deployment Configuration File (Declarative Approach)00:00
205 Adding Pod and Container Specs00:00
206 Working with Labels & Selectors00:00
207 Creating a Service Declaratively00:00
208 Updating & Deleting Resources00:00
209 Multiple vs Single Config Files00:00
210 More on Labels & Selectors00:00
211 Liveness Probes00:00
212 A Closer Look at the Configuration Options00:00
213 Summary00:00
13 – Managing Data & Volumes with Kubernetes
215 Module Introduction00:00
216 Starting Project & What We Know Already00:00
217 Kubernetes & Volumes – More Than Docker Volumes00:00
218 Kubernetes Volumes Theory & Docker Comparison00:00
219 Creating a New Deployment & Service00:00
220 Getting Started with Kubernetes Volumes00:00
221 A First Volume The emptyDir Type00:00
222 A Second Volume The hostPath Type00:00
223 Understanding the CSI Volume Type00:00
224 From Volumes to Persistent Volumes00:00
225 Defining a Persistent Volume00:00
226 Creating a Persistent Volume Claim00:00
227 Using a Claim in a Pod00:00
228 Volumes vs Persistent Volumes00:00
229 Using Environment Variables4:48
230 Environment Variables & ConfigMaps00:00
231 Module Summary00:00
14 – Kubernetes Networking
233 Module Introduction00:00
234 Starting Project & Our Goal00:00
235 Creating a First Deployment00:00
236 Another Look at Services00:00
237 Multiple Containers in One Pod00:00
238 Pod-internal Communication00:00
239 Creating Multiple Deployments00:00
240 Pod-to-Pod Communication00:00
241 Using DNS for Pod-to-Pod Communication00:00
242 Which Approach Is Best And a Challenge!00:00
243 Important Hint Create a tasks.txt File
244 CORS-Tutorial00:00
245 Adding a Containerized Frontend00:00
246 Deploying the Frontend with Kubernetes00:00
247 Using a Reverse Proxy for the Frontend00:00
248 Module Summary00:00
15 – Kubernetes – Deployment (AWS EKS)
250 Module Introduction00:00
251 Deployment Options & Steps00:00
252 AWS EKS vs AWS ECS00:00
253 Preparing the Starting Project00:00
254 A Note on AWS EKS Pricing
255 Diving Into AWS00:00
256 Create-a-VPC00:00
257 Adding Worker Nodes00:00
258 Applying Our Kubernetes Config00:00
259 Getting Started with Volumes00:00
260 Adding EFS as a Volume (with the CSI Volume Type)00:00
261 Creating a Persistent Volume for EFS00:00
262 Using the EFS Volume00:00
263 A Challenge!00:00
264 Challenge Solution00:00
16 – Roundup & Next Steps
266 You Learned A Lot!00:00
267 Next steps00:00
Welcome to the Practical Docker & Kubernetes Bootcamp!
In today’s fast-paced tech landscape, the ability to rapidly deploy, scale, and manage applications is no longer a luxury – it’s a necessity. Traditional deployment methods often lead to “it works on my machine” syndrome, inconsistencies, and significant operational overhead. That’s where containers and container orchestration step in, revolutionizing how we build, ship, and run software.
This bootcamp is your gateway to mastering two of the most powerful and widely adopted technologies in this space: Docker and Kubernetes. We’ll move beyond the theoretical and dive deep into practical, hands-on exercises that will equip you with the skills to confidently containerize your applications, manage them efficiently, and orchestrate complex deployments with ease.
Over the next few days, you will learn to:
-
Understand the core concepts of containerization with Docker: From building your first Dockerfile to managing images, volumes, and networks.
-
Containerize real-world applications: Transform your existing projects into portable, consistent Docker images.
-
Demystify Kubernetes: Grasp the architecture and fundamental components of the world’s leading container orchestrator.
-
Deploy and manage applications on Kubernetes: From simple pods to complex deployments, services, and ingress controllers.
-
Implement best practices for production-ready deployments: Learn about scaling, self-healing, rolling updates, and more.
-
Troubleshoot common issues: Gain practical experience in diagnosing and resolving problems in containerized environments.
Whether you’re a developer looking to streamline your workflow, an operations professional aiming to enhance infrastructure reliability, or simply curious about the future of application deployment, this bootcamp is designed to provide you with the practical knowledge and confidence to leverage Docker and Kubernetes effectively.
Get ready to roll up your sleeves, write some code, and transform the way you think about application deployment. Let’s get started!