A container image is the shippable artifact in the container workflow: everything an application needs to run, frozen into a stack of read-only layers. Starting a container adds a thin writable layer on top, so many containers can share the same underlying image without duplicating it.
Images are built from a recipe file (a Dockerfile in Docker’s case), versioned with tags like python:3.11-slim, and shared through registries such as Docker Hub. The relationship between images and containers is much like classes and objects: one image, many running instances.
