Cómo se corrigen los ejercicios: acá vas a escribir
Dockerfiles y comandos docker, y un validador revisa que la
sintaxis, las instrucciones y el orden entre ellas sean correctos, línea por
línea. Es una forma de practicar la forma correcta de escribir estas
cosas antes de usarlas con Docker instalado de verdad.
Una imagen es un paquete inmutable que contiene todo lo necesario para correr una aplicación: código, dependencias, un sistema de archivos base y configuración (variables de entorno, comando por defecto, etc). Es como una "foto" o plantilla de un sistema.
Un contenedor es una instancia en ejecución de una imagen: un proceso aislado (con su propio sistema de archivos, red y espacio de procesos) que corre a partir de esa plantilla. Podés crear muchos contenedores a partir de la misma imagen, igual que podés crear muchos objetos a partir de la misma clase en programación orientada a objetos.
Una máquina virtual virtualiza hardware completo y corre un sistema operativo entero encima (pesado, minutos para arrancar). Un contenedor virtualiza solo el espacio de usuario: comparte el kernel del host, así que es mucho más liviano y rápido (segundos o menos).