Docker Tutorial

Coming in October 15th, 2024

Here's a structured and detailed list of topics, designed like an academic book. This progression moves from basic concepts to more advanced Docker topics, aiming to build a strong foundation while guiding learners to mastery.


Docker from Zero to Hero: Topics Outline

1. Introduction to Containers and Docker

1.1. The Need for Containerization
1.2. What is Docker?
1.3. Differences Between Virtual Machines and Containers
1.4. Docker Architecture Overview
1.5. Installation of Docker
1.6. First Steps: Running a Simple Docker Container
1.7. Understanding Docker's Terminology (Images, Containers, Volumes, Networks, Registries)

2. Working with Docker Images

2.1. Docker Images: Concept and Structure
2.2. Exploring Official Docker Images
2.3. Creating a Custom Docker Image: Writing a Dockerfile
2.4. Building Docker Images with docker build
2.5. Best Practices for Writing Dockerfiles
2.6. Managing Docker Images (Listing, Tagging, and Removing Images)
2.7. Pushing and Pulling Images from Docker Hub and Private Registries

3. Docker Containers in Depth

3.1. Container Lifecycle Management (Starting, Stopping, Restarting, Removing Containers)
3.2. Running Interactive Containers vs Detached Containers
3.3. Inspecting Containers: Logs, Stats, and Debugging
3.4. Managing Data with Volumes and Bind Mounts (Creating and Mounting Volumes)
3.5. Container Networking Basics (Bridge Networks, Host Networks, and Overlay Networks)
3.6. Sharing Data Between Containers: Volumes and Networks
3.7. Container Health Checks and Monitoring

4. Docker Networking

4.1. Docker Networking Overview
4.2. Types of Docker Networks (Bridge, Host, Overlay, and Macvlan)
4.3. Configuring and Managing Networks with docker network
4.4. Exposing and Binding Ports
4.5. Linking Containers Using Networks
4.6. DNS and Name Resolution in Docker Networks
4.7. Customizing and Securing Docker Networking

5. Docker Compose

5.1. Introduction to Docker Compose
5.2. Writing a docker-compose.yml (File Version, Services, Networks, Volumes)
5.3. Running Multi-Container Applications
5.4. Scaling Services with Docker Compose
5.5. Environment Variables and Configuration Files in Docker Compose
5.6. Common Docker Compose Commands (up, down, ps, logs)
5.7. Docker Compose Best Practices
5.8. Troubleshooting Docker Compose Projects

6. Docker Registry and Image Management

6.1. Understanding Docker Registries
6.2. Setting Up a Private Docker Registry
6.3. Pushing and Pulling from Private Registries
6.4. Managing Image Tags and Versions
6.5. Image Storage Optimization
6.6. Security Considerations: Image Vulnerabilities and Scanning
6.7. Image Layers and Caching
6.8. Cleaning Up Unused Images and Containers

7. Docker Security

7.1. Security Best Practices for Containers
7.2. Minimizing Attack Surface with Lean Images
7.3. Managing Docker Container Privileges
7.4. Securing Docker Daemon
7.5. Using Docker Content Trust
7.6. Image Signing and Verification
7.7. Scanning for Vulnerabilities in Images
7.8. Role-Based Access Control (RBAC) in Docker
7.9. Limiting Resources (CPU, Memory, Disk) for Containers

8. Docker in Production

8.1. Docker in Production vs Development Environments
8.2. Logging and Monitoring in Docker
8.3. Managing Large-Scale Deployments with Docker Swarm (Nodes, Services, Replicas, Swarm Mode)
8.4. High Availability and Fault Tolerance
8.5. Rolling Updates and Rollbacks
8.6. Docker Orchestration with Kubernetes (Intro and Basics) (Comparison of Docker Swarm and Kubernetes)
8.7. Best Practices for Container Lifecycle Management in Production

9. Docker Swarm: Native Orchestration

9.1. Introduction to Docker Swarm
9.2. Creating a Swarm Cluster
9.3. Managing Nodes in a Swarm
9.4. Deploying Services to a Swarm
9.5. Scaling Services in Docker Swarm
9.6. Load Balancing and Service Discovery
9.7. Rolling Updates, Rollbacks, and Service Health Checks
9.8. Security and Networking in Swarm Clusters
9.9. Managing Secrets and Configuration in Swarm

10. Advanced Docker Topics

10.1. Multi-Stage Builds in Dockerfile
10.2. Optimizing Docker Images and Build Time
10.3. Using BuildKit for Enhanced Builds
10.4. Creating and Managing Docker Plugins
10.5. Docker for IoT and Edge Computing
10.6. Using Docker with GPU (NVIDIA Docker)
10.7. Advanced Resource Limiting: CPU/Memory Constraints
10.8. Debugging Containers with Docker Exec and Shell Access
10.9. Networking with Multiple Docker Hosts

11. Kubernetes: An Introduction

11.1. Understanding Kubernetes and Its Relation to Docker
11.2. Basic Kubernetes Concepts: Pods, Deployments, Services
11.3. Running Docker Containers in Kubernetes
11.4. Comparing Docker Compose and Kubernetes YAML
11.5. Managing Docker Containers with Kubernetes

12. Continuous Integration and Continuous Delivery (CI/CD) with Docker

12.1. Docker and CI/CD Overview
12.2. Integrating Docker with Jenkins, GitLab CI, and GitHub Actions
12.3. Building Docker Images in CI Pipelines
12.4. Automating Testing for Docker Applications
12.5. Pushing Images to Docker Registry from CI
12.6. Deploying Docker Containers in CD Pipelines

13. Troubleshooting and Debugging Docker

13.1. Debugging Docker Builds
13.2. Debugging Running Containers
13.3. Common Docker Errors and Solutions
13.4. Logs and Debugging Tools in Docker
13.5. Managing Disk Space and Clean-Up Strategies
13.6. Performance Tuning for Docker Containers

14.1. Evolution of Container Technologies
14.2. Container Orchestration Beyond Docker Swarm
14.3. Serverless Containers
14.4. Docker Alternatives: Podman, CRI-O, and rkt
14.5. Docker in the Cloud: AWS, Azure, and Google Cloud
14.6. Trends in Microservices and Container Ecosystems

Subscribe to SimpleDocker

Sign up now to get access to the library of members-only issues.
Jamie Larson
Subscribe