A Dockerfile describes image layers and commands, while a container runtime starts an image with configured networks, volumes, and environment values. Registries distribute versioned images between build and deployment systems. Reproducibility depends on pinned base images and dependencies.