{"id":40010152,"url":"https://github.com/hatamiarash7/learn-docker","last_synced_at":"2026-01-19T02:34:57.721Z","repository":{"id":330943441,"uuid":"1124534160","full_name":"hatamiarash7/learn-docker","owner":"hatamiarash7","description":"A comprehensive, hands-on Docker learning course","archived":false,"fork":false,"pushed_at":"2025-12-30T19:04:38.000Z","size":77,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-01T05:09:24.714Z","etag":null,"topics":["docker","docker-learn","learning","learning-exercise"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hatamiarash7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-29T07:18:59.000Z","updated_at":"2025-12-30T19:30:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hatamiarash7/learn-docker","commit_stats":null,"previous_names":["hatamiarash7/learn-docker"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/hatamiarash7/learn-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hatamiarash7%2Flearn-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hatamiarash7%2Flearn-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hatamiarash7%2Flearn-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hatamiarash7%2Flearn-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hatamiarash7","download_url":"https://codeload.github.com/hatamiarash7/learn-docker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hatamiarash7%2Flearn-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28558248,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T00:46:33.223Z","status":"online","status_checked_at":"2026-01-19T02:00:08.049Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-learn","learning","learning-exercise"],"created_at":"2026-01-19T02:34:56.399Z","updated_at":"2026-01-19T02:34:57.695Z","avatar_url":"https://github.com/hatamiarash7.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🐳 Learn Docker\n\nA comprehensive, hands-on Docker learning course designed for practical classroom use. This repository contains exercises, examples, and projects to help students master Docker from basics to advanced concepts.\n\n---\n\n## 📋 Course Overview\n\nThis course covers everything you need to know to work with Docker effectively:\n\n| Section                  | Topics                                     |\n| ------------------------ | ------------------------------------------ |\n| 1. Starting with Docker  | Installation, first containers             |\n| 2. Docker Images         | Pull, push, tag, save/load                 |\n| 3. Build Your Own Images | Dockerfiles, multi-stage builds            |\n| 4. Managing Containers   | Lifecycle, logs, resources                 |\n| 5. Networking            | Bridge, host, custom networks              |\n| 6. Docker Compose        | Multi-container applications               |\n| 7. Storage \u0026 Volumes     | Volumes, bind mounts, persistence          |\n| 8. Docker Swarm          | Orchestration, services, stacks, secrets   |\n\n---\n\n## 🗂️ Course Structure\n\n```text\nlearn-docker/\n├── 01-starting-with-docker/\n│   └── README.md                 # Introduction, installation, first container\n├── 02-docker-images/\n│   └── README.md                 # Images, registries, tagging\n├── 03-build-your-own-images/\n│   ├── README.md                 # Dockerfile guide\n│   └── examples/\n│       ├── 01-simple-nginx/      # Basic Nginx example\n│       ├── 02-python-app/        # Python Flask app\n│       ├── 03-nodejs-app/        # Node.js Express app\n│       ├── 04-multistage-go/     # Multi-stage Go build\n│       └── 06-cmd-entrypoint/    # CMD vs ENTRYPOINT\n├── 04-managing-containers/\n│   └── README.md                 # Container lifecycle\n├── 05-networking-with-docker/\n│   ├── README.md                 # Networking concepts\n│   └── examples/\n│       └── multi-service/        # Multi-network example\n├── 06-docker-compose/\n│   ├── README.md                 # Docker Compose guide\n│   └── examples/\n│       ├── basic-web/            # Simple web server\n│       ├── web-db/               # Web + database\n│       ├── full-stack/           # Complete application\n│       ├── scaling/              # Load balancing\n│       └── healthcheck/          # Health checks\n├── 07-docker-storage/\n│   ├── README.md                 # Storage and volumes guide\n│   └── examples/\n│       ├── backup-restore/       # Volume backup scripts\n│       ├── database-persistence/ # Persistent database\n│       ├── development-workflow/ # Bind mounts for dev\n│       └── shared-volumes/       # Shared data patterns\n└── 08-docker-swarm/\n    ├── README.md                 # Docker Swarm orchestration\n    └── examples/\n        ├── basic-service/        # Simple swarm service\n        ├── web-stack/            # Multi-service stack\n        ├── secrets-demo/         # Secrets management\n        ├── rolling-updates/      # Zero-downtime updates\n        ├── production-stack/     # Production-ready stack\n        └── multi-node-simulation/ # Swarm cluster simulation\n```\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- A computer with at least 4GB RAM\n- Administrative/sudo access\n- Internet connection\n\n### Quick Start\n\n1. **Clone this repository:**\n\n   ```bash\n   git clone https://github.com/hatamiarash7/learn-docker.git\n   cd learn-docker\n   ```\n\n2. **Install Docker:**\n   - Follow the instructions in [01-starting-with-docker](./01-starting-with-docker/README.md)\n\n3. **Verify installation:**\n\n   ```bash\n   docker --version\n   docker run hello-world\n   ```\n\n4. **Start learning:**\n   - Begin with [Section 1: Starting with Docker](./01-starting-with-docker/README.md)\n\n---\n\n## 📚 Course Content\n\n### [1. Starting with Docker](./01-starting-with-docker/README.md)\n\n- What is Docker and why use it?\n- Installing Docker on Linux, macOS, and Windows\n- Running your first container\n- Basic container commands\n\n### [2. Docker Images](./02-docker-images/README.md)\n\n- Understanding images and layers\n- Pulling and pushing images\n- Image registries (Docker Hub, private)\n- Tagging and versioning strategies\n- Saving and loading images for offline use\n\n### [3. Build Your Own Images](./03-build-your-own-images/README.md)\n\n- Dockerfile basics and instructions\n- Building images with `docker build`\n- Best practices for Dockerfiles\n- Multi-stage builds for smaller images\n- Multi-architecture builds\n- Health checks in Dockerfiles\n- Understanding CMD vs ENTRYPOINT\n\n### [4. Managing Containers](./04-managing-containers/README.md)\n\n- Container lifecycle (create, start, stop, remove)\n- Executing commands in containers\n- Viewing and managing logs\n- Resource limits (CPU, memory)\n- Container inspection and debugging\n\n### [5. Networking with Docker](./05-networking-with-docker/README.md)\n\n- Docker networking fundamentals\n- Bridge, host, and none networks\n- Creating custom networks\n- Container DNS and service discovery\n- Port mapping strategies\n- Network isolation patterns\n\n### [6. Docker Storage \u0026 Volumes](./06-docker-storage/README.md)\n\n- Container storage fundamentals\n- Docker volumes (named, anonymous)\n- Bind mounts for development\n- tmpfs mounts for sensitive data\n- Volume drivers and plugins\n- Backup and restore strategies\n- Data persistence patterns\n- Shared data between containers\n\n### [7. Docker Compose](./07-docker-compose/README.md)\n\n- Introduction to Docker Compose\n- Writing docker-compose.yml files\n- Defining services, networks, and volumes\n- Multi-container application patterns\n- Scaling services\n- Environment variables and secrets\n- Health checks and dependencies\n\n### [8. Docker Swarm](./08-docker-swarm/README.md)\n\n- Swarm mode architecture\n- Initializing and managing swarms\n- Services, replicas, and tasks\n- Stack deployments\n- Overlay networking\n- Secrets and configs management\n- Rolling updates and rollbacks\n- Scaling and load balancing\n- Health checks and placement constraints\n- Production best practices\n- Monitoring with Prometheus \u0026 Grafana\n\n### 9. Final Project (Coming Soon)\n\n...\n\n## 💡 Learning Tips\n\n1. **Follow in order:** Each section builds on previous knowledge\n2. **Type commands yourself:** Don't just copy-paste, understand each command\n3. **Experiment:** Try modifying examples and see what happens\n4. **Clean up:** Use `docker system prune` to free up disk space\n5. **Read error messages:** Docker's error messages are usually helpful\n\n## 🛠️ Useful Commands Cheat Sheet\n\n```bash\n# Container Management\ndocker run \u003cimage\u003e              # Run a container\ndocker ps                       # List running containers\ndocker ps -a                    # List all containers\ndocker stop \u003ccontainer\u003e         # Stop a container\ndocker rm \u003ccontainer\u003e           # Remove a container\ndocker logs \u003ccontainer\u003e         # View container logs\n\n# Image Management\ndocker images                   # List images\ndocker pull \u003cimage\u003e             # Download an image\ndocker build -t \u003cname\u003e .        # Build an image\ndocker rmi \u003cimage\u003e              # Remove an image\n\n# Docker Compose\ndocker-compose up -d            # Start services\ndocker-compose down             # Stop services\ndocker-compose logs -f          # Follow logs\ndocker-compose ps               # List services\n\n# Docker Swarm\ndocker swarm init               # Initialize swarm\ndocker node ls                  # List swarm nodes\ndocker service create           # Create a service\ndocker service ls               # List services\ndocker service scale \u003csvc\u003e=N    # Scale service\ndocker stack deploy -c file.yml # Deploy stack\ndocker stack rm \u003cname\u003e          # Remove stack\ndocker secret create            # Create secret\n\n# System\ndocker system df                # Show disk usage\ndocker system prune             # Clean up resources\n```\n\n## 🎯 Exercises\n\nEach section contains practical exercises marked with 🎯. Solutions are provided in collapsible sections.\n\n**Exercise Format:**\n\n- Clear objectives\n- Step-by-step instructions\n- Expected outcomes\n- Hidden solutions (click to reveal)\n\n---\n\n## 📂 Example Projects\n\n### Basic Examples\n\n- **Simple Nginx** - Static website with Nginx\n- **Python Flask** - Web API with Flask\n- **Node.js Express** - REST API with Express\n\n### Advanced Examples\n\n- **Multi-stage Go** - Optimized Go application\n- **Full Stack** - Nginx + API + Database + Cache\n- **Scaling** - Load balanced application\n- **Health Checks** - Proper dependency management\n- **Volume Backup** - Data backup and restore scripts\n- **Production Swarm** - Complete production stack with monitoring\n- **Rolling Updates** - Zero-downtime deployments\n\n## 🤝 Contributing\n\nContributions are welcome! If you find errors or have suggestions:\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Submit a pull request\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n**Happy Learning! 🐳**\n\n*Start your Docker journey with [Section 1: Starting with Docker](./01-starting-with-docker/README.md)*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhatamiarash7%2Flearn-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhatamiarash7%2Flearn-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhatamiarash7%2Flearn-docker/lists"}