
Discover how Docker uses lightweight containers to package, isolate, and port apps across machines, with images, Docker Compose, Docker Swarm, and CI/CD for scalable deployment.
Install Docker for Mac by selecting the Intel or Apple chip build, run the dmg, and launch Docker Desktop. Explore Docker features to build new applications.
Install Docker Desktop for Windows and enable WSL 2 to run the Docker engine. Install the Linux kernel update and Ubuntu from the Microsoft Store.
Install Docker Engine on Ubuntu Linux via the official repository, update packages, set up GPG keys, start the Docker service, and verify installation.
Build a mental model of Docker by exploring containers, the Docker Engine, and the Docker daemon, API, and CLI that translate commands into container actions, including images and basic commands.
Explore how Docker containers create loosely isolated environments on a host kernel. Learn how the Docker Engine, including the daemon, API, and CLI, manages containers and images.
Compare containers and virtual machines to show how containers share base file systems and networks, managed by the Docker engine, enabling multiple isolated applications with less disk usage.
Learn how Docker images serve as read-only templates to create containers, the image-to-container relationship, and how Docker Hub hosts images with tags and versions.
Create your first Ubuntu docker container and interact with it using docker attach, start, and logs. Learn to run commands from inside the container, install ping, and view output.
Learn to run an Ubuntu container on Windows with Docker, create and start a container, attach for interactive bash, and monitor activity with logs and ping.
Continue exploring docker containers by listing the foo container and viewing logs, then stop, remove, and verify removal; also learn to run with docker run, attach, and leverage image cache.
Explore docker images in depth, building dockerfiles, optimizing with layered caching, port mapping, and creating file server and express.js images, plus optional php or python.
Explore how docker images relate to dockerfile, defining an image as a template with container instructions, and learn to use from, cmd, copy, and run to build a custom image.
Create a docker image to serve a static directory using the serve package, build with a node base, and run a container with port mapping to access the files.
Build an Express.js image by creating a Dockerfile, package.json, and server.js to run a node-based Express server in a container, while applying practical Dockerfile options and best practices.
Improve the express image by using a .dockerignore and Docker layered cache. Split Dockerfile steps and place app code in an app directory to optimize npm install.
Develop a php server image using a dockerfile and an index php file, expose port 80, and run a container mapped to localhost to display hello world from php.
Learn to build a custom python flask image in docker by creating an api file, a requirements.txt, and a dockerfile to run a flask web server on port 80.
Explore docker storage options: volumes, bind mounts, and tmpfs mounts to persist data beyond container lifetimes, share data across containers, and securely handle secrets in memory.
Discover Docker storage options for persisting data across containers with volumes, bind mounts, and temp fs mounts. Learn when each approach is used, including security and host access considerations.
Explore docker volumes, create and inspect a shared volume, mount it into containers, and verify persistent data across containers within the docker engine.
Discover bind mounts in Docker, enabling a host directory to be mounted into a container with two-way write access, and verify with sample files.
Demonstrate bind mounts on Windows, enabling two-way sharing between host and container file systems by mounting an absolute host path into a container and verifying writes propagate.
Explore Docker tempfs mounts, a temporary, non-persistent storage not shared among containers. Use it for secrets or config keys, with data existing while the container runs and cleared on stop.
Understand how Docker containers communicate across the default bridge network, the host network, and the none network, and how user-defined networks provide container-to-container dns name resolution.
Master docker networks by learning to create, inspect, and connect containers across bridge and private networks. Test inter-container communication using ping to validate network isolation.
Master docker compose to build multi-container applications by defining services, networks, and volumes in a docker-compose.yml, enabling one-command startup and isolated environments.
Build a two-container application with docker compose, featuring a node.js express back end that serves a players list and a php front end that renders it.
Extend a two-container docker compose app by adding a php front end that fetches the player list from the node backend and renders it in html.
Leverage docker compose volumes to map the host site to the container source directory, enabling live updates for php and node containers and auto restart via a node module.
Build a multi-container Docker Compose app for clothing items catalog with pricing data, wiring node, flask, PostgreSQL, and PHP back ends, and apply private networks to restrict container access.
Learn how to build a multi-container Docker compose app with a Node/Express service serving core data from Postgres, and a Flask service augmenting data with prices, connected over private networks.
Create a PHP front-end for a multi-container Docker Compose app, then implement private networks to isolate core apparel and prices services.
Explore containerization of a full stack distributed blockchain app using Docker Compose, multi-service orchestration, and real-time peer-to-peer synchronization across Python backend and React frontend.
Clone the Python blockchain tutorial project from GitHub, explore the backend with Flask APIs, wallet, and peer-to-peer features, and prepare for Docker containerization by installing dependencies.
Learn to containerize a Python backend with a Docker file, build a blockchain image, install dependencies from requirements.txt, configure environment variables for Pubnub, and run a container on port 5050.
Externalize configuration with environment variables in Docker, load dot env at startup, and safeguard secrets with gitignore to enable PubNub publish and subscribe keys for peer-to-peer blockchain networking.
Use docker compose to define and run a multi-container blockchain network, with backend services discovering each other via Pubnub and maintaining synchronized ledgers.
Learn to use Docker Compose profiles to run a seed node with pre-populated blockchain data for testing synchronization across multiple nodes.
Containerize the react frontend with a two-stage Docker build, building with Node.js and serving as static files with Nginx, creating a production-ready front end inside a small container.
Add the frontend to docker compose and enable polling mode (poll route true, pull interval 10s) for a complete full-stack blockchain app with frontend, backend, and seed nodes.
Scale a distributed blockchain network with docker compose by spinning up peers from a single command. Explore internal networking, port exposure, and patterns like service discovery and horizontal scaling.
Review how containerization, orchestration, networking, and environment-based configuration power a 13 container distributed app with Docker Compose, and explore production, CI/CD, and Kubernetes extensions to advance your DevOps journey.
Learn how Kubernetes extends Docker by orchestrating containerized workloads across clusters, enabling load balancing and self-healing while migrating the blockchain app from Docker Compose to Kubernetes manifests.
Explore Kubernetes concepts with a one-picture diagram and glossary, from cluster and control plane to pods, deployments, services, ingress, and core building blocks like cubelet, volumes, namespaces, configmaps, and secrets.
Explore how Kubernetes uses deployments, pods, and services with manifests to manage multi-container apps and stable networking, including front end and back end mappings.
Speed up Kubernetes development with Skaffold, which automates building, loading images into Minikube, and applying Kubernetes manifests. It watches code changes and redeploys automatically for rapid iteration.
learn how to access Kubernetes pods from your laptop using port forwarding and node port services, compare dev tunnels with durable exposure, and use Minikube to reach the cluster locally.
Define an Nginx ingress controller and ingress resource to route API to the back end, slash to the front end, and health to a health service, exposed via Minikube tunnel.
Create a temporary public URL with Cloudflare D to forward to your Kubernetes front end. Expose the app safely to collaborators and test from any device via Cloudflare edge network.
Explore the horizontal pod autoscaler in Kubernetes, powered by a metric server reporting CPU usage, and observe real-time scaling with a BusyBox load generator.
Describe how the blockchain operates as a distributed, decentralized ledger of blocks linked by cryptographic hashes, and how mining, wallets, and cryptography enable cryptocurrency transactions.
Explore mining blocks by expanding the block to include timestamp, last hash, and hash, implement a mind block function, and define a genesis block to anchor the chain.
Explore sha-256, a 256-bit hash often shown in hexadecimal form. See how block data, timestamps, and previous hash generate unique values and enable tamper detection by regenerating the hash.
Explore how proof of work secures blockchains by requiring miners to compute hashes and adjust nonces to meet difficulty, and examine the 51% attack risk and the associated costs.
Explore chain validation and replacement by verifying block fields, last hash link, sha256 hash, and proof of work, then understand how longer valid chains achieve consensus in a decentralized network.
Explore how to set up a blockchain api with flask, including http basics, get and post requests, and how users can read blockchain data and mine new blocks.
Implement real-time blockchain updates with a pub/sub network using channels. Publishers broadcast new blocks to a block channel, and subscribers receive and validate updates via pubnub.
Enhance the pub sub layer to broadcast transactions, add a transaction channel, and deserialize received transactions into the transaction pool using tojson and from json.
Extend the blockchain to include a cryptocurrency by building digital wallets, private and public keys, and verifiable transactions with digital signatures that determine balances from the transaction history.
Calculate wallet balances by scanning blockchain history from the most recent block to genesis block, using outputs from recent transaction and starting balance when no transactions exist, avoiding double counting.
Understand the transaction pool as a per node data structure that collects unique transactions, updates or replaces them, and can be cleared. Miners use pool data to assemble blocks.
Validate every transaction by recalculating the balance from a historic blockchain slice to ensure the input amount matches the computed balance and verify the transaction chain.
Transition from the backend to the frontend, review the blockchain and cryptocurrency backend with wallets, transactions, and proof of work, and preview the upcoming React.js front end.
Explore the three core pillars of web development—HTML, CSS, and JavaScript—and see how React uses them to power dynamic, client–server web applications.
Explore how the React engine renders and updates the DOM using reconciliation, JSX, and hooks like useState and useEffect to manage state and side effects.
Update the backend to treat the frontend as a trusted origin. Enable secure cross-origin requests using a cors middleware, with access-control-allow-origin headers for localhost:3000.
Seed the backend with blockchain data using the Cdata environment variable, generating ten blocks with two transactions each, and add pagination for easier navigation.
Expose a blockchain range endpoint in the backend to paginate data, using start and end query parameters on a GET request, returning a JSON slice of the chain.
Explore Docker Swarm mode, a multi-engine cluster where manager and worker nodes coordinate services and replicas across machines, delivering scalable, production-ready load balancing and service discovery.
Explore docker swarm by provisioning three Azure Linux VMs, configuring SSH access, and opening TCP ports 2377, 7946, and 4789 for swarm networking, using free Azure credits.
Set up Docker swarm across three Linux Azure VMs for scalability and reliability, with service discovery and load balancing, and install Docker on each VM using get Docker Bash script.
Initialize a Docker swarm across three Linux instances, join workers, and deploy an Engine X service with six replicas, leveraging the ingress routing mesh and published ports.
Learn to tear down Azure VMs and related resources to prevent ongoing costs by using the portal to view all resources, select all, confirm deletion, and monitor progress.
100% Modern. Project-Based. Cloud-Ready.
This course is officially endorsed by Docker, the world’s leading container platform. Updated for 2026, it gives your team, or you personally, the most current, practical path to mastering containers, images, networks, and deployment.
Whether you’re a developer learning Docker for the first time, or a company evaluating DevOps training for your engineers, this course delivers a complete, production-ready learning experience.
On top of core Docker training, it includes a multi-service, dockerized Python, React, and Nginx distributed systems capstone project. In the first phase of the capstone, you’ll orchestrate the system using multi-container workflows with Docker Compose. In the next phase, you’ll extend the same project with Kubernetes, covering Pods, Nodes, Deployments, Ingress, autoscaling, and Cloudflare-based networking.
Why Companies and Developers Trust This Course
Enterprise-relevant: Covers the same Docker fundamentals used in real cloud and CI/CD pipelines.
Proven results: Thousands of 5-star student reviews.
Hands-on from the start: Every concept comes with a practical demo, container, or deployment.
Up-to-date & Docker-endorsed: You can be confident that the workflow and tools reflect today’s Docker ecosystem.
Capstone-driven: Apply everything you learn by containerizing and deploying a real Python + React application with multi-service orchestration, Nginx, and horizontal scaling.
What You’ll Learn
You’ll go from first container to full production deployment:
Containers & Images: Understand how Docker runs and isolates applications. Build custom images with Dockerfiles and optimize layers for speed.
Volumes & Data Persistence: Use volume, bind, and tmpfs mounts to persist and share data safely.
Networking & Compose: Link multiple services with private Docker networks and Docker Compose.
Scaling with Swarm: Run distributed multi-node clusters for high availability and fault tolerance.
Continuous Deployment: Automate image builds and publishing through GitHub Actions and Amazon ECR.
Capstone: Full-Stack Container System:
Containerize a real Python backend and React frontend.
Use Nginx as a reverse proxy for multi-service routing.
Configure environments for dev, staging, and production.
Scale out horizontally with multiple backend peers.
Capstone extended: Full-Stack Container System on Kubernetes:
Extend the capstone project with a Kubernetes-based cluster and deployment system.
Set up Pods, Nodes, Deployments, and proper Kubernetes manifests.
Apply Ingress to properly handle Kubernetes networking.
Automatically scale Pods horizontally based on pod-level metrics.
Supply external networking and resolve DNS via Cloudflare.
Each stage builds on the last - by the end, you’ll have your own containerized, multi-service application running in the cloud and in the kubernetes cluster.
Real Reviews from Real Developers
[5 stars] "Love Love Love David's courses. I'm a seasoned programmer just looking to refresh my skills and he does such a great job. Easy to listen to and keeps his courses moving along and focused! Great job!!!"
[5 stars] “Highly recommended. It covers everything from fundamentals to advanced Docker projects. The examples are clear and relevant.”
[5 stars] "Thank you teacher, I learned not only about docker but also many useful command and development tips. I recommend this lecture to every developer who is interested in virtualization, CI/CD, networking, linux systems, etc."
[5 stars] "Great course!! The instructor was very engaging and made the concepts interesting by giving apt examples. THANK YOU"
Meet Your Instructor
I’m David Joseph Katz, a software engineer with over six years of professional experience. I’ve built production systems at companies like Upstart and Zendesk, and I designed this course to teach you the same container workflows used in high-impact engineering environments.
This is a project-based course, not a slide deck. You’ll create real containers, connect real services, and automate real deployments.
Additional Highlights
Dedicated walkthroughs for Mac, Linux, and Windows users.
Extra “in-depth reference” section for anyone wanting to explore supporting technologies like JavaScript and Flask.
Instructor support - I actively answer questions and update material to stay current.
Business-ready: Many companies use this course in their internal training programs.
Before You Begin
You’ll need Docker Desktop installed from the official Docker website. If you’re a Udemy Business user, check your company’s policy before installation.
Let’s Get Started
Docker has redefined how the world builds and ships software. By the time you finish this course, you’ll be fluent in the tools and workflows that power modern DevOps and cloud development.
Enroll today and start mastering Docker the right way - from a Docker-endorsed, project-driven course built for 2026!