
Learn Docker fundamentals through hands-on labs and challenges, applying core concepts to bare-bones and real-world web apps, with Docker Compose guidance and starter projects.
Explore Docker's three biggest wins: saving time and money through efficient isolation, portable deployments across machines, and the freedom to use the best tool for the job.
Explore how I moved from slow virtual machines to Linux containers and Docker to test Ansible playbooks quickly in isolated environments, transforming my deployment workflow.
Explore how Docker works and compare it with other solutions to decide whether learning Docker is right for you, and access course goodies after signing up.
Discover what you get with this course and learn tips for asking excellent questions as you proceed to the next lecture.
Download the lecture zip with notes and source code, extract it to your user directory, and access the notes offline via the notes index file in your browser.
Improve your ability to ask excellent questions by troubleshooting on your own, checking commands, and using Google when needed, then reporting OS, version, and steps to reproduce for faster help.
Explore essential concepts like virtual machines and Takhar containers, learn how Dharker and Darger work under the hood, and prepare for hands-on Docker and Docker Compose.
Compare virtual machines and docker containers, clarifying that containers run on the host with the Docker daemon and images, delivering faster startup and leaner isolation than VMs.
Compare when to use virtual machines versus Docker containers, showing how VMs isolate entire systems or test production environments, while containers isolate and deliver applications.
Explore how Docker's architecture links the daemon and cli through a rest api, enabling remote hosts, Linux kernel interactions, and management of images, containers, networks, and volumes.
Explore Docker editions, including community and enterprise, and learn its release cycle and versioning, then choose an installation method for Mac OS, Windows, or Linux and verify Docker runs.
Compare Docker community edition and Docker enterprise edition, and explain their release channels: nightly, test, and stable. Learn how release candidates, roadmaps, and the Marantis acquisition shaped Docker's versioning.
Learn how to install Docker and Docker Compose across Linux, macOS, and Windows, using official docs and scripts, including Docker Desktop, WSL2, and Docker Toolbox as fallbacks.
Verify your Docker installation and Docker Compose are running by checking docker info and Docker Compose version, and consult the FAQ if you encounter permission errors.
Explore Docker basics through a hands-on hello world example to see the end result and how the core tools and ecosystem come together, with implementation details as the section progresses.
See how Docker tools work together by pulling the hello-world image from Docker Hub and running it in a container via the Docker daemon, with an Alpine challenge.
Learn the difference between Docker images and containers, how images package a filesystem and settings, and how containers run independently and immutably from a single image.
Discover how to download and store docker images using Docker Hub, distinguish official versus non official images, and use tags, the pull command, namespaces, and the docker store.
Discover how to build Docker images with Dockerfiles, understand image layers and incremental builds, and compare this repeatable, version-controlled approach to manual commits.
Build production-grade Docker files and master the Docker CLI, images, and containers; explore volumes, networking, image optimization, and post-start scripts through hands-on labs.
Build a minimal flask web app with docker and docker compose, running a counter page that increments on reload, with an in-memory key-value store in separate containers on a network.
Learn how docker files function as blueprints for images and how layers build a final image, including base images and from instructions, while preparing course materials.
Learn how to order Dockerfile instructions to optimize image size and cache efficiency by separating dependencies from app code, using a Python Alpine base, and leveraging layers and labeling.
Build, tag, inspect, and push Docker images using the Dockerfile and Docker Hub, exploring caching, layers, and image management commands in a hands-on lab.
Run and manage docker containers by tagging and removing images, launching with -it, -p, -e, and --name, viewing logs, and restarting for basic load balancing.
Mount your current directory into the container with docker volumes to enable live code reloading of the Flask app, using FLASK_DEBUG=1 and the -v map to /app.
Debug Docker containers by entering a running container and inspecting its file system, including Alpine versus slim images, on Windows or Mac, using ls and bash to verify changes.
Link containers via Docker networks by using the default bridge or a custom bridge network, enabling name-based communication and DNS.
Persist container data by creating and attaching a named volume to save state on the docker host, then verify data restoration across restarts via the /data mount.
Learn how to link data between containers by exposing the /app/public folder as a volume and sharing static files between containers, enabling live updates without restarting containers.
Shrink docker images by using a docker ignore file and selective dependency installation, weighing tradeoffs, and testing optimized builds against non-optimized defaults.
Learn how a docker entry point runs a startup script when a container starts, enabling project-specific setups—like automatic database creation via environment variables and flexible cmd behavior.
Learn to manage and clean up Docker resources by listing running containers, reclaiming disk space, removing dangling images and volumes, and using Docker system prune and Docker Compose.
Discover why Docker Compose is awesome and learn to manage a simple web application, then explore API version differences and a microservices web app.
Docker Compose orchestrates multiple containers with a single command and a YAML file, simplifying builds, volumes, networks, and the path from development to production.
Define a docker compose yaml with version, services, volumes, ports, and env files to add docker compose support to a web app.
Manage a web app with docker compose by building images, pulling dependencies, starting and restarting services, and running one-off tasks while viewing logs and cleaning up containers.
Trace docker compose API versions v1, v2, and v3; note backwards compatibility and legacy v1 limitations, and use v3 with recent docker versions. Explore docs for more commands.
Explore a real-world microservices setup built with Flask, Express, dotNet, PostgreSQL, and Redis, orchestrated by Docker Compose across multiple networks and updated in real time via WebSocket.
Discover how to dockerize web apps with ready-to-use royalty-free starter projects across Flask, Express, .NET, Django, Ruby on Rails, Hugo, and Laravel, focusing on docker files and docker-compose configurations.
Apply docker best practices by logging to standard out, using environment variables for configuration, and storing session data in a backend, all within the 12-factor app approach.
Celebrate finishing this Docker course, invite feedback, and spread the word on social media as you prepare to apply and scale Docker.
deploy docker compose apps to production by addressing hosting, domains, ssl, and security beyond this course, while docker swarm remains unproven for real-world production.
Learn the Docker Fundamentals and Then Dockerize Your Own Web Apps
This course is meant for anyone looking to improve the way they build and distribute applications. You could be a web developer, sysadmin, operations manager, or someone who is part of an IT / testing / QA team.
By the time you finish this course you'll know everything you need to start using Docker / Docker Compose on your own projects.
This course was flawless in explaining every segment in detail while keeping it easy to follow along and learn. -- Brian K.
It doesn't matter if you use Ruby on Rails, NodeJS, Flask, Django, Java, Golang or any other language / framework. At the end of the day, Docker is a toolset that helps you package up and distribute your applications in a portable and repeatable way. You'll be able to set up entire development environments in a single command and run those same applications exactly the same in production with total confidence that it will work because you're just moving around special packages that Docker creates for you under the hood.
The days of "well it works for me!" or having to point another developer to a 20 page document on how to set up your web application are long over. Docker fixes those problems and so much more.
No prior Docker knowledge is necessary to take this course. We'll go all the way from "What is Docker?" to exploring what types of problems Docker solves to completely mastering Docker's core features (we'll cover Docker Compose in great depth too). Through out the process we'll go over Dockerizing simple web apps, complex multi-service web apps and I'll show you exactly how to Dockerize your own web apps.
I'm a big fan of learning by doing so this course has just enough theory combined with dozens of guided labs and challenges. This way you'll learn both the "why" and the "how".
Instead of sifting through 100+ scattered blog posts, this course lays everything out on a silver platter. I've done years of research and testing so you don't have to. All you have to do is sit back, relax and follow along with the videos. You're only a few short hours away from mastering Docker and applying it to your own applications.
I have been through very few learning experiences that were this thorough. Nick not only teaches you how to use Docker, but also how to troubleshoot Docker problems and research solutions. -- Dennis E.
What makes me suitable for teaching a course on Docker?
Hi, I'm Nick.
Nick has always been quick to respond to my questions. I've never had a message fall through the cracks with Nick. He has become an invaluable mentor. -- Kyle. E
Bonus content: