# Resources — Containers & Local Dev

High-trust sources only. Every non-trivial claim in a lesson links to one of these. Ordered
by how central they are to the course.

## Primary — official docs

### Docker
- **Docker concepts: What is an image?** — https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-an-image/
  — the mental model for images. *(Lesson 2)*
- **Understanding image layers** — https://docs.docker.com/get-started/docker-concepts/building-images/understanding-image-layers/
  — layers are immutable, stacked, cached; why order matters. *(Lesson 2)*
- **Building images** — https://docs.docker.com/get-started/docker-concepts/building-images/
  — the Dockerfile → image pipeline, `docker build`. *(Lesson 2)*
- **What is a container?** — https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-container/
  — container = running instance of an image, isolated process. *(Lesson 1)*
- **Running containers (reference)** — https://docs.docker.com/engine/containers/run/
  — ports, volumes, env, restart, the full run surface. *(Lesson 3)*
- **Manage data in Docker (volumes vs bind mounts)** — https://docs.docker.com/engine/storage/
  — named volumes vs bind mounts vs tmpfs. *(Lesson 3)*
- **Networking overview** — https://docs.docker.com/engine/network/
  — bridge networks, container-to-container DNS by service name. *(Lessons 3–4)*
- **Multi-stage builds** — https://docs.docker.com/build/building/multi-stage/
  — build-stage vs runtime-stage; exactly what `Dockerfile.development` does. *(Lesson 2)*
- **Image-building best practices** — https://docs.docker.com/build/building/best-practices/
  — layer ordering, cache, small images. *(Lesson 2)*

### Docker Compose
- **Compose overview** — https://docs.docker.com/compose/
  — one YAML, many services. *(Lesson 4)*
- **How Compose works / the Compose file** — https://docs.docker.com/compose/intro/compose-application-model/
  — `services`, `volumes`, `networks` top-level keys. *(Lesson 4)*
- **Compose file reference** — https://docs.docker.com/reference/compose-file/
  — `depends_on`, `healthcheck`, `volumes`, `command`, `environment`. *(Lesson 4)*
- **Startup order & `depends_on` conditions** — https://docs.docker.com/compose/how-tos/startup-order/
  — `service_healthy` — exactly the repo's `wait-for-it-service` pattern. *(Lesson 4)*

### The container standard
- **OCI Image Spec** — https://github.com/opencontainers/image-spec
  — the open standard an "image" conforms to (why it's not Docker-specific). *(Lesson 1–2)*
- **OCI Runtime Spec** — https://github.com/opencontainers/runtime-spec
  — namespaces + cgroups: how isolation is actually implemented. *(Lesson 1)*

### The local-Kubernetes on-ramp (Part 2)
- **Skaffold docs** — https://skaffold.dev/docs/
  — build / render / deploy loop for Kubernetes dev. *(Part 2)*
- **Skaffold quickstart** — https://skaffold.dev/docs/quickstart/
  — `skaffold dev`, `skaffold run`. *(Part 2)*
- **Skaffold render** — https://skaffold.dev/docs/renderers/
  — hydrate manifests (templates Helm, stamps image tags). *(Part 2)*
- **kind — Kubernetes IN Docker** — https://kind.sigs.k8s.io/
  — a K8s cluster running inside containers; what `sk.bash` targets. *(Part 2)*

## Secondary — trusted explainers
- **Docker "Get started" workshop** — https://docs.docker.com/get-started/workshop/
  — hands-on end-to-end if the learner wants to *do* rather than read.
- **Julia Evans — "How containers work" zine / blog** — https://jvns.ca/
  — famously clear namespaces/cgroups explanations (secondary, for intuition).

## In-repo ground truth
- [reference/repo-containers-map.md](./reference/repo-containers-map.md) — the map of this
  repo's Docker/Compose/Skaffold/local-dev files, with paths and line anchors.

## Communities (for wisdom)
- **r/docker** and **r/kubernetes** (Reddit) — practical Q&A, real-world gotchas.
- **CNCF Slack** (slack.cncf.io) — `#kind`, `#skaffold` channels near the maintainers.
- **Docker Community Slack / Forums** — https://forums.docker.com/
- Internally: the team that owns `deployments/` and `local/run.bash` — the highest-trust
  source for *why this repo does it this way*.
