Study Path Agent Study Path Agent
Generate Your Own
Docker & Kubernetes
64 topics across 7 chapters
Chapter 1
Docker basics: containers, images, registries
1
Exercise: run your first container (hello-world, busybox)
7 subtopics
2
Lab: run an interactive shell in a container (alpine/ubuntu); create a file; exit vs stop
3
Exercise: restart a stopped container; compare container name/ID before and after
4
Practice: run a detached container (-d) and follow logs with `docker logs -f`
5
Lab: `docker exec -it` into a running container and inspect processes (`ps`, `top`)
6
Exercise: copy files into/out of a container with `docker cp`
7
Practice: run a container with a custom command and capture the exit status (`docker run ...`; `echo $?`)
8
Exercise: run `nginx` detached, publish port 8080, verify with `curl`, then stop/remove the container
9
Hands-on: list, inspect, and remove containers/images (ps, images, inspect, rm/rmi)
7 subtopics
10
Hands-on: container lifecycle commands (start/stop/restart/kill) and verify state changes
11
Practice: clean up safely with `docker container prune`, `docker image prune`, and `docker system prune` (what gets removed?)
12
Hands-on: monitor containers with `docker stats`; stop a runaway container
13
Practice: filter and format output with `--filter` and `--format` (`docker ps`, `docker images`)
14
Lab: use `docker top` and `docker inspect --format` to view a container's PID and process info
15
Hands-on: watch runtime events with `docker events` while starting/stopping/removing a container
16
Exercise: rename a container (`docker rename`) and confirm the change via `docker ps` and `docker inspect`
17
Concepts: images vs containers, layers, tags, digests
7 subtopics
18
Exercise: explore image layers with `docker history`
19
Practice: tags vs digests; pull an image by digest
20
Exercise: compare container filesystem changes with `docker diff`
21
Exercise: use `docker save`/`load` to move an image between machines (or directories)
22
Hands-on: inspect image metadata with `docker image inspect` (Entrypoint, Cmd, Env, WorkingDir)
23
Concept + practice: multi-arch images and platform selection with `--platform` (amd64 vs arm64)
24
Practice: `docker export`/`import` vs `docker save`/`load` (what metadata is preserved?)
25
Registries 101: Docker Hub vs private registry; pull/push/login
7 subtopics
26
Hands-on: `docker login`/`logout` and verify auth works (private repo if available)
27
Practice: image naming (registry/namespace/repo:tag); retag and push
28
Exercise: run a local registry (`registry:2`) and push/pull an image to it
29
Hands-on: pull specific tags; compare behavior of `latest` vs pinned versions
30
Practice: inspect a remote image manifest with `docker manifest inspect`; verify digest matches `docker pull` output
31
Troubleshooting note + practice: Docker Hub rate limits and auth tokens; reproduce a limit error and resolve by logging in
32
Exercise (if available): create a private repo in a registry and validate push/pull from a second environment
33
Exercise: create and tag an image; push it to a registry
7 subtopics
34
Hands-on: push an image; remove it locally; pull it again to verify the workflow
35
Hands-on: build and push two tags for the same image (e.g., `1.0.0` and `latest`); verify both can be pulled
36
Exercise: push to a new repo name; validate image naming rules by retagging (`docker tag`) and pushing
37
Practice: remove the local image and pull by digest to confirm you're running the exact pushed artifact
38
Hands-on: push two different images to the same repo; compare resulting tags and digests
39
Practice: verify what’s stored remotely—match a local tag to its remote digest by pulling and inspecting
40
Exercise: reproduce “denied: requested access to the resource is denied” on push; fix namespace/repo name and auth
41
CLI essentials: run options (-it, --rm, -p, -v, -e, --name)
7 subtopics
42
Lab: publish ports with `-p`; test container access with `curl`
43
Lab: bind mounts vs named volumes using `-v`; confirm persistence
44
Lab: override default startup with `--entrypoint` and CMD args; observe differences
45
Lab: run as a non-root user with `--user`; verify file permissions in a mounted volume
46
Lab: use `--env-file` with `docker run`; verify variables inside the container (`env`, `printenv`)
47
Lab: enforce resource limits with `-m` and `--cpus`; observe throttling/OOM via `docker stats` and exit codes
48
Practice: use `--workdir` plus a custom command; verify PWD and file locations inside the container
49
Troubleshooting basics: exit codes, logs, exec, common errors
7 subtopics
50
Debug lab: diagnose a failing container using `logs`, `exec`, `inspect`, and exit codes
51
Practice: reproduce and interpret common exit codes (0, 1, 125, 126, 127, 137)
52
Debug practice: reproduce 'port is already allocated' and fix it by stopping the conflicting container or changing `-p`
53
Debug practice: troubleshoot “executable file not found in $PATH” (exit 127) by adjusting CMD/ENTRYPOINT/command
54
Debug practice: troubleshoot “permission denied” when starting a container (exit 126) by fixing file modes and shebang
55
Debug practice: troubleshoot registry pull error “manifest unknown” by selecting the correct tag or digest
56
Debug practice: troubleshoot “unauthorized: authentication required” on pull/push; resolve with login/token and correct repo
Chapter 2
Build images with Dockerfiles (best practices)
Chapter 3
Docker runtime: networking, volumes, environment, logs
Chapter 4
Multi-container local dev with Docker Compose
Chapter 5
Kubernetes fundamentals: cluster, nodes, Pods, Services, Deployments
Chapter 6
Deploy an application to Kubernetes (manifests, config, scaling)
Chapter 7
Kubernetes operations: kubectl, debugging, rollout, Helm intro