Docker Tutorial
Learn Docker step by step through 82 structured lessons. The course starts with essential concepts and progresses toward practical, advanced topics, with explanations, syntax, examples, common mistakes and exercises you can try yourself.
- Level: Beginner to advanced
- Format: 82 free, self-paced lessons
- Best for: Students, career changers and developers refreshing their skills
What You Will Learn
This learning path covers the following areas in curriculum order:
- Docker Fundamentals
- Working with Images
- Running Containers
- The Dockerfile
- Image Layers and Caching
- Data and Storage
- Networking
- Environment and Configuration
- Docker Compose
- Debugging and Inspecting
- Docker for Application Development
- Registries and Distribution
- Docker Security
- Orchestration Basics
- CI/CD and Best Practices
Who This Course Is For
This tutorial is suitable for complete beginners as well as learners who already know some programming and want a structured reference. Start from the first lesson if the subject is new to you. Experienced learners can use the curriculum below to jump directly to a specific concept.
How to Use This Tutorial
- Read each lesson in curriculum order and run every example yourself.
- Change the examples to test your understanding instead of only copying them.
- Complete the exercises and review the common-mistake sections before moving on.
- Bookmark this course page so you can return to the complete lesson index.
Course Contents
Docker Fundamentals
- Docker Introduction
- Installing Docker
- How Docker Works (Images, Containers, Layers)
- Containers vs Virtual Machines
- Docker Get Started (Hello World)
- The Docker Architecture (Daemon, Client, Registry)
Working with Images
- Docker Images Explained
- docker pull
- docker images and Image IDs
- docker rmi and Removing Images
- Image Tags and Versioning
- Docker Hub and Image Registries
Running Containers
- docker run
- Common docker run Flags
- docker ps and Container Status
- docker stop, start, restart
- docker rm and Removing Containers
- docker exec and Interactive Shells
- docker logs
The Dockerfile
- Writing Your First Dockerfile
- FROM and Base Images
- RUN, COPY, and ADD
- WORKDIR, ENV, and ARG
- EXPOSE, CMD, and ENTRYPOINT
- docker build
- Dockerfile Best Practices
Image Layers and Caching
Data and Storage
- Docker Volumes
- Bind Mounts vs Volumes
- Managing Volumes
- Persisting Database Data in Containers
- tmpfs Mounts
Networking
- Docker Networking Basics
- Port Mapping with -p
- Bridge, Host, and None Networks
- Creating Custom Networks
- Container-to-Container Communication
Environment and Configuration
- Environment Variables in Containers
- Using .env Files
- Docker Secrets
- Resource Limits (CPU and Memory)
- Restart Policies
Docker Compose
- Docker Compose Introduction
- The docker-compose.yml File
- docker compose up and down
- Multi-Service Applications with Compose
- Compose Networks and Volumes
- Compose Environment Variables and .env
- Scaling Services with Compose
Debugging and Inspecting
Docker for Application Development
- Dockerizing a Node.js Application
- Dockerizing a Python Application
- Development vs Production Images
- Hot Reload in a Container
- Connecting a Containerized App to a Database
Registries and Distribution
- docker tag
- docker push
- Private Registries
- Docker Hub Automated Builds
- Image Scanning and Vulnerabilities
Docker Security
- Docker Security Basics
- Running Containers as Non-Root
- Read-Only Filesystems
- Limiting Container Capabilities
- Keeping Secrets Out of Images
Orchestration Basics
- Why Orchestration? From Compose to Clusters
- Docker Swarm Basics
- Introduction to Kubernetes Concepts
- Choosing Compose vs Swarm vs Kubernetes
CI/CD and Best Practices
- Using Docker in CI/CD Pipelines
- Docker Layer Caching in CI
- Common Docker Mistakes
- Cleaning Up Docker Disk Usage
- Docker Command Reference
Frequently Asked Questions
Is this Docker tutorial free?
Yes. The lessons listed on this page are free to read and can be completed at your own pace.
Do I need previous experience?
No previous experience is required for the introductory lessons. Some advanced modules are easier if you first complete the fundamentals in this course.
How should I practise?
Type and run the examples, deliberately change their inputs, predict the result before execution and build a small project after completing each major section.
