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
5 Virtual Machines vs Docker Containers