Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Docker & Kubernetes: The Practical Guide
Getting Started
Welcome to the Course (2:32)
What Is Docker? (4:42)
Why Docker & Containers? (5:59)
Join Our Learning Community
Virtual Machines vs Docker Containers (8:55)
Docker Setup - Overview (4:31)
Docker Setup - macOS (3:33)
Docker Setup - Windows (9:44)
Docker Setup - Docker Toolbox for Older Systems (6:51)
An Overview of the Docker Tools (3:04)
Installing & Configuring an IDE (2:07)
Getting Our Hands Dirty! (9:23)
Course Outline (4:14)
How To Get The Most Out Of This Course (3:24)
Course Resources
The Academind Pro Referral Program
Docker Images & Containers: The Core Building Blocks
Module Introduction (1:16)
Images & Containers: What and Why? (2:29)
Using & Running External (Pre-Built) Images (8:28)
Our Goal: A NodeJS App (6:40)
Building our own Image with a Dockerfile (11:14)
Running a Container based on our own Image (7:58)
EXPOSE & A Little Utility Functionality
Images are Read-Only! (5:51)
Understanding Image Layers (8:20)
A First Summary (3:18)
Quiz 1: Images & Containers
Managing Images & Containers (2:01)
Stopping & Restarting Containers (4:31)
Understanding Attached & Detached Containers (7:50)
Attaching to an already-running Container
Entering Interactive Mode (10:44)
Deleting Images & Containers (6:26)
Removing Stopped Containers Automatically (3:18)
A Look Behind the Scenes: Inspecting Images (4:00)
Copying Files Into & From A Container (4:57)
Naming & Tagging Containers and Images (9:28)
Time to Practice: Images & Containers - Problem (4:00)
Time to Practice: Images & Containers - Solution (21:26)
Sharing Images - Overview (6:37)
Pushing Images to DockerHub (10:44)
Pulling & Using Shared Images (4:50)
Quiz 2: Managing Images & Containers
Module Summary (5:00)
Module Resources
Managing Data & Working with Volumes
Module Introduction (1:27)
Understanding Data Categories / Different Kinds of Data (7:20)
Analyzing a Real App (3:02)
Building & Understanding the Demo App (8:36)
Understanding the Problem (5:25)
Introducing Volumes (2:57)
A First, Unsuccessful Try (7:45)
Named Volumes To The Rescue! (8:35)
Removing Anonymous Volumes
Getting Started With Bind Mounts (Code Sharing) (10:42)
Combining & Merging Different Volumes (7:52)
A NodeJS-specific Adjustment: Using Nodemon in a Container (7:16)
Volumes & Bind Mounts: Summary (5:54)
Quiz 3: Volumes & Bind Mounts
A Look at Read-Only Volumes (5:40)
Managing Docker Volumes (7:39)
Using "COPY" vs Bind Mounts (3:26)
Don't COPY Everything: Using "dockerignore" Files (2:31)
Adding more to the .dockerignore File
Working with Environment Variables & ".env" Files (8:47)
Using Build Arguments (ARG) (5:09)
Module Summary (5:15)
Module Resources
Networking: (Cross-)Container Communication
Module Introduction (1:16)
Case 1: Container to WWW Communication (3:49)
Case 2: Container to Local Host Machine Communication (2:13)
Case 3: Container to Container Communication (2:40)
Analyzing the Demo App (7:50)
Creating a Container & Communicating to the Web (WWW) (6:45)
Making Container to Host Communication Work (4:37)
Container to Container Communication: A Basic Solution (7:06)
Introducing Docker Networks: Elegant Container to Container Communication (10:00)
How Docker Resolves IP Addresses (2:22)
Quiz 4: Docker Container Communication & Networks
Docker Network Drivers
Module Summary (1:26)
Module Resources
Building Multi-Container Applications with Docker
Module Introduction (2:08)
Our Target App & Setup (10:48)
Dockerizing the MongoDB Service (4:26)
Dockerizing the Node.js (7:30)
Moving the React SPA into a Container (8:26)
Adding Docker Networks for Efficient Cross-Container Communication (11:50)
Adding Data Persistence to MongoDB with Volumes (8:16)
Volumes, Bind Mounts & Polishing for the NodeJS Container (15:02)
Live Source Code Updates for the React Container (with Bind Mounts) (6:50)
Module Summary (4:43)
Module Resources
Docker Compose: Elegant Multi-Container Orchestration
Module Introduction (3:08)
Docker-Compose: What & Why? (4:33)
Creating a Compose File (6:17)
Diving into the Compose File Configuration (11:20)
Docker Compose Up & Down (3:46)
Working with Multiple Containers (14:51)
Adding Another Container (5:55)
Building Images & Understanding Container Names (5:25)
Quiz 5: Docker Compose
Module Summary (2:29)
Module Resources
Working with "Utility Containers" & Executing Commands In Containers
Module Introduction & What are "Utility Containers"? (2:39)
Utility Containers: Why would you use them? (3:02)
Different Ways of Running Commands in Containers (5:56)
Building a First Utility Container (4:51)
Utilizing ENTRYPOINT (5:27)
Using Docker Compose (6:09)
Module Summary (1:31)
Module Resources
A More Complex Setup: A Laravel & PHP Dockerized Project
Module Introduction (2:29)
The Target Setup (7:13)
Adding a Nginx (Web Server) Container (8:08)
Adding a PHP Container (10:43)
Adding a MySQL Container (3:21)
Adding a Composer Utility Container (3:59)
Creating a Laravel App via the Composer Utility Container (3:36)
Launching Only Some Docker Compose Services (11:54)
Adding More Utility Containers (6:25)
Docker Compose with and without Dockerfiles (4:08)
Bind Mounts and COPY: When To Use What (14:20)
Module Resources
Deploying Docker Containers
Module Introduction (3:40)
From Development To Production (7:12)
Deployment Process & Providers (6:26)
Getting Started With An Example (4:02)
Bind Mounts In Production (5:05)
Introducing AWS & EC2 (2:36)
Connecting to an EC2 Instance (8:23)
Installing Docker on a Virtual Machine (1:56)
Installing Docker on Linux in General
Pushing our local Image to the Cloud (5:34)
Running & Publishing the App (on EC2) (10:20)
Managing & Updating the Container / Image (5:31)
Disadvantages of our Current Approach (4:43)
From Manual Deployment to Managed Services (5:46)