🛠️ Lab 1 — First Contact: Containers vs. Estimated VMs (50 pts)

Goal: Use a free, browser-based Docker environment to directly observe container startup speed and filesystem contents, then reason about how the same workload would behave on VMs. Steps:

  1. Go to labs.play-with-docker.com (free, no install required) and log in with a free Docker Hub account. Click Start, then Add New Instance to get a terminal.
  2. Time and run your first container: time docker run -it ubuntu bash. Note the wall-clock time it took to become interactive.
  3. Inside the Ubuntu container, run cat /etc/os-release and ls / to see what's actually present in the image. Type exit to leave the container.
  4. Time and run a second container: time docker run -it alpine sh. Again run cat /etc/os-release and ls /, then exit.
  5. Compare the two: run docker images to see the on-disk size of the ubuntu and alpine images side by side.
  6. Open a second terminal instance (or reuse the same one) and start three or four containers at once in the background, e.g. docker run -d --name c1 alpine sleep 300 (repeat with c2, c3, c4 names). Run docker stats --no-stream to capture a snapshot of CPU and memory usage across all running containers.
  7. In a text document, write a short comparison (150–250 words): summarize your measured startup times and image sizes, and estimate — using round numbers — what booting 4 separate VMs (each requiring a full guest OS, e.g., \~1–2 GB RAM and 20–60 seconds boot time per VM) would cost you in time and memory versus what you just observed with 4 containers.
  8. Take a screenshot (or copy/paste the terminal text) showing your docker stats output and your cat /etc/os-release results for both images.

Deliverables: Submit your written comparison (150–250 words) plus your terminal evidence (screenshot or pasted text showing docker stats, both os-release outputs, and docker images) as a single upload or text entry.