Cómo funciona Docker

Cada aplicación que desarrollemos en una máquina virtual (VM) necesita su propio sistema operativo (OS) y sus dependencias. En cambio, cuando usamos contenedores, cada aplicación solo necesita sus dependencias, pues el Container Engine se encarga de emular el SO de todos los contenedores que estén ejecutándose en ese momento. Esto reduce considerablemente la carga del sistema operativo anfitrión.

Arquitectura de una máquina virtual (a la derecha) y de Docker (a la izquierda).

Arquitectura de una máquina virtual (a la derecha) y de Docker (a la izquierda).

En Docker, se crea un contenedor a partir de una imagen (plantillas de solo lectura) que contienen todo lo necesario para ejecutar una aplicación.

Para crear la imagen, se necesita un archivo de instrucciones llamado dockerfile. Este archivo tiene todas las instrucciones que necesitas para ejecutar la aplicación (instalación de librerías, ejecuciones de comandos, etc.).

Un ejemplo para una aplicación que ejecuta un script Python sería:

dockerfile.jpg

En repositorios como DockerHub se pueden descargar imágenes. No se puede generar un dockerfile a partir de una imagen, pero si se puede generar una nueva imagen a partir de otra ya existente de dos formas:

Estas imágenes se pueden subir a Docker Hub o repositorios similares, y siempre van a funcionar, porque sus dependencias están auto contenidas. Aunque tu imagen esté basada en otra que dejó de existir, tu imagen funcionará.

Aclaraciones:

Documentación extra

Docker Docs