Welcome to Docker 101 — a hands-on learning repository designed to help you master Docker fundamentals through practical labs and real-world exercises.
This repository provides a structured path to learn containerization with Docker. You'll start with basic concepts, work through hands-on labs covering essential Docker workflows, and submit your work for review to earn a completion badge.
What you'll learn:
- Understanding containers, images, and Docker architecture
- Running and managing containers
- Building custom Docker images with Dockerfiles
- Orchestrating multi-container applications with Docker Compose
- Pushing images to container registries
Prerequisites: Docker Desktop (or Docker Engine), Git, and a terminal.
- docs/LEARNING-PATH.md — Your roadmap with recommended paths, visual guides, and success criteria
- docs/quick-start.md — Quick Start for the three main tasks: Create Image → Run Container → Push
- docs/theory.md — Complete Docker Theory (containerization, architecture, all components explained)
- docs/visual-reference.md — 📊 Visual diagrams for architecture, workflows, and patterns
- docs/basics.md — Quick reference of core concepts
- docs/hands-on.md — 5 Comprehensive Labs with step-by-step instructions
- Lab 1: Run your first container
- Lab 2: Build custom image from Dockerfile
- Lab 3: Create optimized Node.js app
- Lab 4: Push image to Docker Hub
- Lab 5: Multi-container app with Compose
- docs/cheat-sheet.md — Essential command reference
- submission/ — Submission guide and screenshots folder
You will complete 5 comprehensive labs:
| Lab | Task | Key Skills |
|---|---|---|
| Lab 1 | Run your first container | Pull images, understand containers vs images, docker ps, docker images |
| Lab 2 | Build and run a custom image | Write Dockerfile, build images, run containers, port mapping, logs |
| Lab 3 | Create and customize your own image | Advanced Dockerfile, multi-stage builds, optimization, security |
| Lab 4 | Push image to Docker Hub | Tag images, authenticate, push/pull from registry, share images |
| Lab 5 | Docker Compose multi-container app | Orchestrate services, networking, volumes, docker-compose.yml |
Each lab includes:
- Theory review of concepts
- Detailed step-by-step instructions
- Command explanations
- Screenshots to capture as proof
- Key takeaways summary
Complete instructions in docs/hands-on.md.
Follow these steps to complete the Docker 101 course and submit your work:
- Click the Fork button at the top-right of this repository
- This creates your own copy of the repo under your GitHub account
git clone <your-fork-url>
cd docker-101git checkout -b docker-101All your work will be done in this branch.
- Open docs/hands-on.md and work through Lab 1, Lab 2, Lab 3, and optionally Lab 4
- For each lab, capture the requested screenshots:
- Lab 1:
01-hello-world-output.png,02-docker-ps.png - Lab 2:
03-build-output.png,04-curl-response.png - Lab 3:
05-compose-ps.png,06-nginx-curl.png - Lab 4 (optional):
07-registry-tag.png
- Lab 1:
- Save all screenshots to the
submission/screenshots/folder
git add .
git commit -m "Complete Docker 101 labs with screenshots"
git push origin docker-101- Go to your forked repository on GitHub
- Click "Compare & pull request" for the
docker-101branch - Set the base repository to your fork's
mainbranch (not the original repo) - Add a description of what you learned and submit the PR
- Copy the PR link (e.g.,
https://github.com/your-username/docker-101/pull/1)
- Go to the Issues page of the ORIGINAL repository (nisalgunawardhana's repo)
- Click "New Issue" → Select the "Submission" template
- Fill in the form:
- Paste your PR link from Step 6
- Add your name and any notes
- Submit the issue
- Automation will label your submission as
pending review - Wait for
nisalgunawardhanato review and close your submission issue - Upon approval, you'll receive the Docker 101 completion badge! 🎉
When your submission is approved, the automation will post a completion comment with the Docker 101 badge on your issue:
- Check the Troubleshooting section in docs/hands-on.md
- Review the docs/cheat-sheet.md for command syntax
- Open a draft PR or issue with questions (keep labels intact for automation tracking)
Ready to get started? Begin with docs/basics.md to understand the fundamentals, then dive into the labs! 🐳
