Docker & Kubernetes The Practical Guide 2023 Edition
What you’ll learn
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
Requirements
NO prior Docker or Kubernetes experience is required!
Basic (web) development knowledge is required – you don’t need to know a specific language though
AWS (used in a couple of deployment examples, ~4 hours of the course) requires a credit card – you can also follow along passively though
Description
Join this bestselling Docker & Kubernetes course and learn two of the most important development technologies from the ground up, in great detail!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 DockerDetailed setup instructions for macOS and WindowsA deep-dive into the core concepts you need to know: Containers & imagesLearn how to create custom images, use existing images and how to run containers based on such imagesGet a detailed overview of the core commands you need when working with DockerLearn how to work with data and how to persist data with volumesExplore container networking – with the outside world and between multiple containersLearn how to work with both single and multi-container projectsIn-depth deployment instructions: Manual deployment and deployment with managed services like AWS ECSUnderstand Kubernetes core concepts & architectureLearn how to create Kubernetes resources, deployments, services and how to run your containers with KubernetesDive deeply into working with data in Kubernetes projects – with different types of volumesKubernetes networking and DNS service discoveryLearn 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!
Overview
Section 1: Getting Started
Lecture 1 Welcome to the Course
Lecture 2 What Is Docker?
Lecture 3 Why Docker & Containers?
Lecture 4 Join Our Learning Community
Lecture 5 Virtual Machines vs Docker Containers
Lecture 6 Docker Setup – Overview
Lecture 7 Docker Setup – macOS
Lecture 8 Docker Setup – Windows
Lecture 9 Docker Setup – Docker Toolbox for Older Systems
Lecture 10 Docker Playground
Lecture 11 An Overview of the Docker Tools
Lecture 12 Installing & Configuring an IDE
Lecture 13 Getting Our Hands Dirty!
Lecture 14 Course Outline
Lecture 15 How To Get The Most Out Of This Course
Lecture 16 Course Resources
Section 2: Docker Images & Containers: The Core Building Blocks
Lecture 17 Module Introduction
Lecture 18 Images & Containers: What and Why?
Lecture 19 Using & Running External (Pre-Built) Images
Lecture 20 Our Goal: A NodeJS App
Lecture 21 Building our own Image with a Dockerfile
Lecture 22 Running a Container based on our own Image
Lecture 23 EXPOSE & A Little Utility Functionality
Lecture 24 Images are Read-Only!
Lecture 25 Understanding Image Layers
Lecture 26 A First Summary
Lecture 27 Managing Images & Containers
Lecture 28 Stopping & Restarting Containers
Lecture 29 Understanding Attached & Detached Containers
Lecture 30 Attaching to an already-running Container
Lecture 31 Entering Interactive Mode
Lecture 32 Deleting Images & Containers
Lecture 33 Removing Stopped Containers Automatically
Lecture 34 A Look Behind the Scenes: Inspecting Images
Lecture 35 Copying Files Into & From A Container
Lecture 36 Naming & Tagging Containers and Images
Lecture 37 Sharing Images – Overview
Lecture 38 Pushing Images to DockerHub
Lecture 39 Pulling & Using Shared Images
Lecture 40 Module Summary
Lecture 41 Module Resources
Section 3: Managing Data & Working with Volumes
Lecture 42 Module Introduction
Lecture 43 Understanding Data Categories / Different Kinds of Data
Lecture 44 Analyzing a Real App
Lecture 45 Building & Understanding the Demo App
Lecture 46 Understanding the Problem
Lecture 47 Introducing Volumes
Lecture 48 A First, Unsuccessful Try
Lecture 49 Named Volumes To The Rescue!
Lecture 50 Removing Anonymous Volumes
Lecture 51 Getting Started With Bind Mounts (Code Sharing)
Lecture 52 Bind Mounts – Shortcuts
Lecture 53 Combining & Merging Different Volumes
Lecture 54 A NodeJS-specific Adjustment: Using Nodemon in a Container
Lecture 55 Volumes & Bind Mounts: Summary
Lecture 56 A Look at Read-Only Volumes
Lecture 57 Managing Docker Volumes
Lecture 58 Using “COPY” vs Bind Mounts
Lecture 59 Don’t COPY Everything: Using “dockerignore” Files
Lecture 60 Adding more to the .dockerignore File
Lecture 61 Working with Environment Variables & “.env” Files
Lecture 62 Environment Variables & Security
Lecture 63 Using Build Arguments (ARG)
Lecture 64 Module Summary
Lecture 65 Module Resources
Section 4: Networking: (Cross-)Container Communication
Lecture 66 Module Introduction
Lecture 67 Case 1: Container to WWW Communication
Lecture 68 Case 2: Container to Local Host Machine Communication
Lecture 69 Case 3: Container to Container Communication
Lecture 70 Analyzing the Demo App
Lecture 71 Creating a Container & Communicating to the Web (WWW)
Lecture 72 Making Container to Host Communication Work
Lecture 73 Container to Container Communication: A Basic Solution
Lecture 74 Introducing Docker Networks: Elegant Container to Container Communication
Lecture 75 How Docker Resolves IP Addresses
Lecture 76 Docker Network Drivers
Lecture 77 Module Summary
Lecture 78 Module Resources
Section 5: Building Multi-Container Applications with Docker
Lecture 79 Module Introduction
Lecture 80 Our Target App & Setup
Lecture 81 Dockerizing the MongoDB Service
Lecture 82 Dockerizing the Node App
Lecture 83 Moving the React SPA into a Container
Lecture 84 Adding Docker Networks for Efficient Cross-Container Communication
Lecture 85 Fixing MongoDB Authentication Errors (relevant for next lecture)
Lecture 86 Adding Data Persistence to MongoDB with Volumes
Lecture 87 Volumes, Bind Mounts & Polishing for the NodeJS Container
Lecture 88 Live Source Code Updates for the React Container (with Bind Mounts)
Lecture 89 Module Summary
Lecture 90 Module Resources
Section 6: Docker Compose: Elegant Multi-Container Orchestration
Lecture 91 Module Introduction
Lecture 92 Docker-Compose: What & Why?
Lecture 93 Creating a Compose File
Lecture 94 Diving into the Compose File Configuration
Lecture 95 Installing Docker Compose on Linux
Lecture 96 Docker Compose Up & Down
Lecture 97 Working with Multiple Containers
Lecture 98 Adding Another Container
Lecture 99 Building Images & Understanding Container Names
Lecture 100 Module Summary
Lecture 101 Module Resources
Section 7: Working with “Utility Containers” & Executing Commands In Containers
Lecture 102 Module Introduction & What are “Utility Containers”?
Lecture 103 Utility Containers: Why would you use them?
Lecture 104 Different Ways of Running Commands in Containers
Lecture 105 Building a First Utility Container
Lecture 106 Utilizing ENTRYPOINT
Lecture 107 Using Docker Compose
Lecture 108 Utility Containers, Permissions & Linux
Lecture 109 Module Summary
Lecture 110 Module Resources
Section 8: A More Complex Setup: A Laravel & PHP Dockerized Project
Lecture 111 Module Introduction
Lecture 112 The Target Setup
Lecture 113 Adding a Nginx (Web Server) Container
Lecture 114 Adding a PHP Container
Lecture 115 Adding a MySQL Container
Lecture 116 Adding a Composer Utility Container
Lecture 117 Creating a Laravel App via the Composer Utility Container
Lecture 118 Fixing Errors With The Next Lecture
Lecture 119 Launching Only Some Docker Compose Services
Lecture 120 Adding More Utility Containers
Lecture 121 Docker Compose with and without Dockerfiles
Lecture 122 Bind Mounts and COPY: When To Use What
Lecture 123 Module Resources
Section 9: Deploying Docker Containers
Lecture 124 Module Introduction
Lecture 125 From Development To Production
Lecture 126 Deployment Process & Providers
Lecture 127 Getting Started With An Example
Lecture 128 Bind Mounts In Production
Lecture 129 Introducing AWS & EC2
Lecture 130 Connecting to an EC2 Instance
Lecture 131 Installing Docker on a Virtual Machine
Lecture 132 Installing Docker on Linux in General
Lecture 133 Pushing our local Image to the Cloud
Lecture 134 Running & Publishing the App (on EC2)
Lecture 135 Managing & Updating the Container / Image
Lecture 136 Disadvantages of our Current Approach
Lecture 137 From Manual Deployment to Managed Services
Lecture 138 Important: AWS, Pricing and ECS
Lecture 139 Deploying with AWS ECS: A Managed Docker Container Service
Lecture 140 More on AWS
Lecture 141 Updating Managed Containers
Lecture 142 Preparing a Multi-Container App
Lecture 143 Configuring the NodeJS Backend Container
Lecture 144 Deploying a Second Container & A Load Balancer
Lecture 145 Using a Load Balancer for a Stable Domain
Lecture 146 Using EFS Volumes with ECS
Lecture 147 Our Current Architecture
Lecture 148 Databases & Containers: An Important Consideration
Lecture 149 Moving to MongoDB Atlas
Lecture 150 Using MongoDB Atlas in Production
Lecture 151 Our Updated & Target Architecture
Lecture 152 Understanding a Common Problem
Lecture 153 Creating a “build-only” Container
Lecture 154 Introducing Multi-Stage Builds
Lecture 155 Building a Multi-Stage Image
Lecture 156 Deploying a Standalone Frontend App
Lecture 157 Development vs Production: Differences
Lecture 158 Understanding Multi-Stage Build Targets
Lecture 159 Beyond AWS
Lecture 160 Module Summary
Lecture 161 Module Resources
Section 10: Docker & Containers – A Summary
Lecture 162 Module Introduction
Lecture 163 Images & Containers
Lecture 164 Key Commands
Lecture 165 Data, Volumes & Networking
Lecture 166 Docker Compose
Lecture 167 Local vs Remote
Lecture 168 Deployment
Lecture 169 Module Resources
Section 11: Getting Started with Kubernetes
Lecture 170 Module Introduction
Lecture 171 More Problems with Manual Deployment
Lecture 172 Why Kubernetes?
Lecture 173 What Is Kubernetes Exactly?
Lecture 174 Kubernetes: Architecture & Core Concepts
Lecture 175 Kubernetes will NOT manage your Infrastructure!
Lecture 176 A Closer Look at the Worker Nodes
Lecture 177 A Closer Look at the Master Node
Lecture 178 Important Terms & Concepts
Lecture 179 Module Resources
Section 12: Kubernetes in Action – Diving into the Core Concepts
Lecture 180 Module Introduction
Lecture 181 Kubernetes does NOT manage your Infrastructure
Lecture 182 Kubernetes: Required Setup & Installation Steps
Lecture 183 macOS Setup
Lecture 184 Windows Setup
Lecture 185 Understanding Kubernetes Objects (Resources)
Lecture 186 The “Deployment” Object (Resource)
Lecture 187 A First Deployment – Using the Imperative Approach
Lecture 188 kubectl: Behind The Scenes
Lecture 189 The “Service” Object (Resource)
Lecture 190 Exposing a Deployment with a Service
Lecture 191 Restarting Containers
Lecture 192 Scaling in Action
Lecture 193 Updating Deployments
Lecture 194 Deployment Rollbacks & History
Lecture 195 The Imperative vs The Declarative Approach
Lecture 196 Creating a Deployment Configuration File (Declarative Approach)
Lecture 197 Adding Pod and Container Specs
Lecture 198 Working with Labels & Selectors
Lecture 199 Creating a Service Declaratively
Lecture 200 Updating & Deleting Resources
Lecture 201 Multiple vs Single Config Files
Lecture 202 More on Labels & Selectors
Lecture 203 Liveness Probes
Lecture 204 A Closer Look at the Configuration Options
Lecture 205 Summary
Lecture 206 Module Resources
Section 13: Managing Data & Volumes with Kubernetes
Lecture 207 Module Introduction
Lecture 208 Starting Project & What We Know Already
Lecture 209 Kubernetes & Volumes – More Than Docker Volumes
Lecture 210 Kubernetes Volumes: Theory & Docker Comparison
Lecture 211 Creating a New Deployment & Service
Lecture 212 Getting Started with Kubernetes Volumes
Lecture 213 A First Volume: The “emptyDir” Type
Lecture 214 A Second Volume: The “hostPath” Type
Lecture 215 Understanding the “CSI” Volume Type
Lecture 216 From Volumes to Persistent Volumes
Lecture 217 Defining a Persistent Volume
Lecture 218 Creating a Persistent Volume Claim
Lecture 219 Using a Claim in a Pod
Lecture 220 Volumes vs Persistent Volumes
Lecture 221 Using Environment Variables
Lecture 222 Environment Variables & ConfigMaps
Lecture 223 Module Summary
Lecture 224 Module Resources
Section 14: Kubernetes Networking
Lecture 225 Module Introduction
Lecture 226 Starting Project & Our Goal
Lecture 227 Creating a First Deployment
Lecture 228 Another Look at Services
Lecture 229 Multiple Containers in One Pod
Lecture 230 Pod-internal Communication
Lecture 231 Creating Multiple Deployments
Lecture 232 Pod-to-Pod Communication with IP Addresses & Environment Variables
Lecture 233 Using DNS for Pod-to-Pod Communication
Lecture 234 Which Approach Is Best? And a Challenge!
Lecture 235 Challenge Solution
Lecture 236 Adding a Containerized Frontend
Lecture 237 Deploying the Frontend with Kubernetes
Lecture 238 Using a Reverse Proxy for the Frontend
Lecture 239 Module Summary
Lecture 240 Module Resources
Section 15: Kubernetes – Deployment (AWS EKS)
Lecture 241 Module Introduction
Lecture 242 Deployment Options & Steps
Lecture 243 AWS EKS vs AWS ECS
Lecture 244 Preparing the Starting Project
Lecture 245 A Note on AWS EKS Pricing
Lecture 246 Diving Into AWS
Lecture 247 Creating & Configuring the Kubernetes Cluster with EKS
Lecture 248 Adding Worker Nodes
Lecture 249 Applying Our Kubernetes Config
Lecture 250 Getting Started with Volumes
Lecture 251 Adding EFS as a Volume (with the CSI Volume Type)
Lecture 252 Creating a Persistent Volume for EFS
Lecture 253 Using the EFS Volume
Lecture 254 A Challenge!
Lecture 255 Challenge Solution
Lecture 256 Module Resources
Section 16: Roundup & Next Steps
Lecture 257 You Learned A Lot!
Lecture 258 Related Topics You Could Explore
Lecture 259 Next Steps!
Lecture 260 Course Roundup
Lecture 261 Bonus!
Everyone who has NOT worked with Docker or Kubernetes at all,Everyone who is struggling with understanding what exactly Docker is (and why you might want to use it),(Web) developers who want to explore modern DevOps and Docker
Course Information:
Udemy | English | 23h 40m | 9.47 GB
Created by: Academind by Maximilian Schwarzmüller
You Can See More Courses in the Developer >> Greetings from CourseDown.com