Containers - Docker & Kubernetes Learning Path
Status: Active
Last Updated: 2026-01-30
Category: Containerization & Orchestration
Prerequisites: kb/basics/ - Linux and command-line fundamentals
Tags: docker, kubernetes, k0s, containers, orchestration, microservices
Summary
Complete learning path for containerization technologies, from Docker basics through Kubernetes/k0s orchestration. Assumes basic Linux knowledge and teaches containerization from first principles with practical, self-hosted focus using lean tools.
๐ฏ Learning Philosophy
Start Simple, Scale Gradually:
Single Container โ docker-compose Stacks โ k0s Orchestration โ Production
(Day 1) (Week 1) (Month 1) (Month 3)
This directory teaches containers assuming zero containerization knowledge, progressing from "what is a container?" to running production workloads on k0s (homelab-light Kubernetes).
๐ Learning Path
Prerequisites: Linux Basics (kb/basics/)
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ PHASE 1: Docker Fundamentals โ
โ โโ What are containers? โ
โ โโ Docker installation โ
โ โโ Running first container โ
โ โโ Building images (Dockerfile) โ
โ โโ Docker CLI essentials โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ PHASE 2: Docker Compose โ
โ โโ Multi-container applications โ
โ โโ docker-compose.yml โ
โ โโ Volumes & persistence โ
โ โโ Networking โ
โ โโ Real-world stacks โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ PHASE 3: Why Orchestration? โ
โ โโ Limitations of docker-compose โ
โ โโ When to use orchestration โ
โ โโ Kubernetes concepts intro โ
โ โโ k0s as learning platform โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ PHASE 4: k0s Fundamentals โ
โ โโ k0s vs k8s vs k3s โ
โ โโ Single-node k0s setup โ
โ โโ Core concepts (Pods, Services) โ
โ โโ Deployments & scaling โ
โ โโ Basic kubectl usage โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ PHASE 5: Advanced k0s โ
โ โโ Multi-node clusters โ
โ โโ Storage (PersistentVolumes) โ
โ โโ Service mesh basics (Linkerd) โ
โ โโ API gateways (Traefik) โ
โ โโ Production patterns โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Articles in This Directory
๐ข Phase 1: Docker Fundamentals (Start Here)
Essential First Steps:
docker-concepts - What are containers and why they matter
- Virtual machines vs containers
- Container benefits and use cases
- When to use containers
- Prerequisites: Linux basics
- Time: 1 hour
- Resources:
[โโโโโโโโโโ]20% - Conceptual
docker-installation - Installing Docker on Linux
- Ubuntu/Debian installation
- RHEL/Rocky/Fedora installation
- Post-install configuration
- Verification and hello-world
- Prerequisites: Linux admin basics
- Time: 30 minutes
- Resources:
[โโโโโโโโโโ]30% - Minimal VM
docker-basics - Running your first containers
- docker run command
- Container lifecycle (start, stop, remove)
- Viewing logs and stats
- Attaching to containers
- Common patterns
- Prerequisites: Docker installed
- Time: 2-3 hours
- Resources:
[โโโโโโโโโโ]30%
dockerfile-guide - Building custom images
- Dockerfile syntax
- Base images and layers
- Multi-stage builds
- Best practices
- Real examples
- Prerequisites: Docker basics
- Time: 3-4 hours
- Resources:
[โโโโโโโโโโ]40%
docker-volumes - Data persistence
- Volume types
- Volume management
- Bind mounts vs volumes
- Backup strategies
- Prerequisites: Docker basics
- Time: 2 hours
- Resources:
[โโโโโโโโโโ]30%
docker-networking - Container networking
- Network types (bridge, host, none)
- Creating networks
- Container communication
- Port mapping
- Prerequisites: Docker basics
- Time: 2-3 hours
- Resources:
[โโโโโโโโโโ]40%
๐ก Phase 2: Docker Compose (Building Blocks)
docker-compose-intro - Multi-container applications
- Why docker-compose
- YAML basics
- First compose file
- Common patterns
- Prerequisites: Docker fundamentals complete
- Time: 2 hours
- Resources:
[โโโโโโโโโโ]40%
docker-compose-patterns - Real-world stacks
- Web app + database + cache
- Development environments
- Monitoring stacks (Prometheus + Grafana)
- CI/CD stacks
- Prerequisites: docker-compose basics
- Time: 4-6 hours
- Resources:
[โโโโโโโโโโ]50%
๐ Phase 3: Why Orchestration? (Transition)
orchestration-need - When docker-compose isn't enough
- docker-compose limitations
- Scaling challenges
- High availability needs
- When to use orchestration
- Cost-benefit analysis
- Prerequisites: docker-compose experience
- Time: 1-2 hours
- Resources:
[โโโโโโโโโโ]20% - Conceptual
kubernetes-concepts - Kubernetes fundamentals
- What is Kubernetes
- Core concepts (Pods, Services, Deployments)
- Architecture overview
- k8s vs docker-compose comparison
- Prerequisites: docker-compose
- Time: 2-3 hours
- Resources:
[โโโโโโโโโโ]30% - Conceptual
๐ด Phase 4: k0s Fundamentals (Homelab Kubernetes)
k0s-introduction - k0s as homelab Kubernetes
- Why k0s over k8s/k3s
- k0s architecture
- Single binary benefits
- Use cases for small teams
- Prerequisites: Kubernetes concepts
- Time: 1 hour
- Resources:
[โโโโโโโโโโ]20%
k0s-installation - Single-node k0s setup
- System requirements
- Installation process
- k0sctl introduction
- First cluster
- kubectl setup
- Prerequisites: Linux admin
- Time: 1-2 hours
- Resources:
[โโโโโโโโโโ]50% - 2GB RAM, 2 CPU
k0s-pods-services - Core Kubernetes concepts
- What is a Pod (vs container)
- Creating Pods
- Services explained
- Port mapping in k8s
- Comparing to docker-compose
- Prerequisites: k0s installed
- Time: 3-4 hours
- Resources:
[โโโโโโโโโโ]50%
k0s-deployments - Managing applications
- Deployments vs Pods
- Replica management
- Rolling updates
- Rollbacks
- Health checks
- Prerequisites: Pods & Services
- Time: 3-4 hours
- Resources:
[โโโโโโโโโโ]60%
k0s-configmaps-secrets - Configuration management
- ConfigMaps for config
- Secrets for sensitive data
- Environment variables
- Volume mounts
- Prerequisites: Deployments
- Time: 2 hours
- Resources:
[โโโโโโโโโโ]50%
k0s-storage - Persistent storage
- PersistentVolumes explained
- PersistentVolumeClaims
- Storage classes
- StatefulSets
- Prerequisites: k0s basics
- Time: 3 hours
- Resources:
[โโโโโโโโโโ]60%
โซ Phase 5: Advanced k0s (Production-Ready)
k0s-multi-node - Scaling to multi-node
- Multi-node architecture
- High availability
- Worker nodes
- Node labels and taints
- Prerequisites: Single-node mastery
- Time: 4-6 hours
- Resources:
[โโโโโโโโโโ]80% - Multiple VMs
k0s-ingress - External access with Traefik
- Ingress concepts
- Traefik installation
- Routing rules
- TLS termination
- Prerequisites: Services
- Time: 3-4 hours
- Resources:
[โโโโโโโโโโ]60%
k0s-helm - Package management with Helm
- What is Helm
- Installing Helm
- Using charts
- Creating charts
- Prerequisites: k0s basics
- Time: 2-3 hours
- Resources:
[โโโโโโโโโโ]50%
k0s-monitoring - Monitoring k0s clusters
- Prometheus on k0s
- Grafana dashboards
- Cluster metrics
- Application metrics
- Cross-reference: kb/observability/
- Prerequisites: k0s + Helm
- Time: 4 hours
- Resources:
[โโโโโโโโโโ]70%
service-mesh-linkerd - Service mesh basics
- What is service mesh
- Linkerd introduction
- mTLS between services
- Traffic management
- Prerequisites: Advanced k0s
- Time: 4-5 hours
- Resources:
[โโโโโโโโโโ]80%
๐ What Comes Next?
After mastering containers and orchestration:
For Infrastructure Automation:
- kb/infrastructure/ansible-basics - Automate k0s deployment
- kb/infrastructure/terraform-basics - Infrastructure as Code
For CI/CD Integration:
- kb/cicd/forgejo-setup - Self-hosted Git
- kb/cicd/woodpecker-ci - Container-native CI/CD
- kb/cicd/harbor-registry - Private container registry
For Security:
- kb/security/container-security - Securing containers
- kb/security/k0s-security - Kubernetes security
For Monitoring:
- kb/observability/prometheus-grafana - Full stack monitoring
- kb/observability/loki - Log aggregation
๐ Resource Requirements
Docker Development:
- Minimal: 2GB RAM, 2 CPU
[โโโโโโโโโโ]30% - Comfortable: 4GB RAM, 4 CPU
[โโโโโโโโโโ]50% - Recommended: 8GB RAM, 4 CPU
[โโโโโโโโโโ]60%
docker-compose Stacks:
- Small (2-3 containers): 4GB RAM
[โโโโโโโโโโ]40% - Medium (4-6 containers): 8GB RAM
[โโโโโโโโโโ]60% - Large (10+ containers): 16GB RAM
[โโโโโโโโโโ]80%
k0s Single-Node:
- Minimum: 2GB RAM, 2 CPU, 20GB disk
[โโโโโโโโโโ]50% - Comfortable: 4GB RAM, 4 CPU, 50GB disk
[โโโโโโโโโโ]70% - Recommended: 8GB RAM, 4 CPU, 100GB disk
[โโโโโโโโโโ]80%
k0s Multi-Node Cluster:
- Controller (3x): 2GB RAM each
[โโโโโโโโโโ]60% - Workers (3+): 4GB RAM each
[โโโโโโโโโโ]80% - Total: 18GB+ RAM minimum
[โโโโโโโโโโ]90%
Learning Time Investment:
- Docker Basics: 2 weeks
[โโโโโโโโโโ]40% - docker-compose: 1-2 weeks
[โโโโโโโโโโ]30% - k0s Basics: 2-3 weeks
[โโโโโโโโโโ]60% - k0s Advanced: 4-6 weeks
[โโโโโโโโโโ]80% - Production Ready: 3-6 months
[โโโโโโโโโโ]100%
๐ ๏ธ Recommended Tool Stack
Essential Tools:
- Docker Engine
[โโโโโโโโโโ]Required - docker-compose
[โโโโโโโโโโ]Required - k0s
[โโโโโโโโโโ]Required - kubectl
[โโโโโโโโโโ]Required
Helpful Tools:
- k0sctl
[โโโโโโโโโโ]80% - Cluster management - Helm
[โโโโโโโโโโ]80% - Package manager - k9s
[โโโโโโโโโโ]70% - Terminal UI for k8s - Lens
[โโโโโโโโโโ]60% - Desktop UI for k8s - dive
[โโโโโโโโโโ]50% - Inspect Docker images
Registry Options:
- Docker Hub
[โโโโโโโโโโ]40% - Public images - Harbor
[โโโโโโโโโโ]80% - Self-hosted (recommended) - Forgejo Registry
[โโโโโโโโโโ]60% - Integrated with Git
๐ก Pro Tips for Learning
- Start Small: Master Docker before k0s. Don't skip fundamentals
- Practice Daily: Run containers every day, build muscle memory
- Break Things: Intentionally break containers/clusters to learn debugging
- Read Logs: Always check logs (
docker logs,kubectl logs) - Use Alpine: Start with Alpine Linux images (tiny, fast)
- Version Everything: Tag images, version compose files
- Think Declarative: Describe desired state, let tools handle it
- Document Commands: Keep a cheat sheet of commands you use
- Join Community: Docker/k8s Slack, Reddit r/docker, r/kubernetes
- Build Real Projects: Theory + practice = mastery
๐ Common Learning Pitfalls
Pitfall 1: Skipping Docker Basics
- Jumping to k8s without Docker understanding
- Fix: Complete Docker + docker-compose first
Pitfall 2: Not Understanding Images vs Containers
- Treating them as same thing
- Fix: Image = blueprint, Container = running instance
Pitfall 3: Ignoring Volumes
- Data loss when containers restart
- Fix: Use volumes for all persistent data
Pitfall 4: Exposing Everything
- Publishing all ports to host
- Fix: Use internal networks, only expose what's needed
Pitfall 5: Running as Root
- Security risk in containers
- Fix: Use non-root users in Dockerfiles
Pitfall 6: Over-Orchestrating
- Using k8s when docker-compose sufficient
- Fix: Start simple, scale when actually needed
Pitfall 7: Not Reading Errors
- Ignoring error messages
- Fix: Read full error output, search/ask for help
Pitfall 8: Forgetting Namespaces
- Name collisions in k8s
- Fix: Use namespaces for logical separation
๐ Related KB Sections
- kb/basics/ - Linux fundamentals (prerequisite)
- kb/infrastructure/ - IaC for container infrastructure
- kb/cicd/ - CI/CD with containers
- kb/security/ - Container & k8s security
- kb/observability/ - Monitoring containerized apps
- kb/networking/ - Reverse proxies, ingress controllers
- kb/cloud/ - Harbor registry, storage for containers
๐ Change Log
2026-01-30
- Created containers directory structure
- Defined complete learning path from Docker to k0s
- Established progression philosophy (simple โ advanced)
- Listed all planned articles with time estimates
- Added resource requirements for each phase
- Included k0s as "homelab light Kubernetes" focus
- Organized by learning phases (1-5)
- Added tool recommendations and common pitfalls
- Cross-referenced related KB sections
๐ณ Remember: Containers are the foundation of modern infrastructure. Master Docker first, understand docker-compose thoroughly, then progress to k0s for orchestration. Every minute spent learning containers pays dividends in infrastructure efficiency!