Conceptos básicos de contenedores (Docker)

Friday, 18 de April 2025

 

🐳 Contenedor

¿Qué es?
 Un contenedor es como un pequeño entorno de ejecución: una especie de miniordenador virtual que ya tiene todo listo para que una aplicación funcione.  Cada contenedor es un "dispositivo virtual" donde se ejecuta esa imagen. No tenemos que instalar nada a mano, ni configurar librerías, ni preocuparnos de si en el servidor hay la versión correcta (de PHP, por ejemplo).

Podemos tener muchos contenedores funcionando a la vez, cada uno independiente.

Por ejemplo, podemos tener tres sitios Drupal distintos, cada uno corriendo en su propio contenedor, pero todos creados a partir de la misma imagen de Drupal.

¿De dónde sale?
 Se crea a partir de una imagen. Podemos tener muchos contenedores funcionando al mismo tiempo a partir de la misma imagen, igual que podemos tener varias copias de una misma aplicación instaladas en diferentes sitios.

 

📦 Imagen

¿Qué es?
 Una imagen es como una “caja cerrada” que contiene una aplicación ya preparada y lista para usar y funcionar: el código, el lenguaje, las librerías, etc. Por ejemplo, podríamos tener una imagen que ya trae Drupal, otra con solo PHP, otra con MySQL.

Cada una se convierte en un contenedor distinto, y luego los conectamos para que trabajen en conjunto.

 

💾 Volúmenes

Son los discos duros del sistema, donde guardamos cosas que no queremos perder aunque el contenedor se apague, se borre o se vuelva a crear. Los contenedores por sí solos no guardan los datos (archivos, bases de datos, configuraciones, etc.) de forma permanente: si los borramos, se pierde todo.

También nos permiten conectar carpetas del contenedor con nuestro ordenador (o servidor). Así, podemos ver o modificar los datos desde fuera o compartirlos entre varios contenedores.

Imaginemos que usamos un contenedor para MySQL. Sin volumen, la base de datos desaparecería si lo paramos. Con volumen, se guarda todo fuera del contenedor y no perdemos nada.

 

Resumen con analogía con un sistema tradicional

Elemento tradicional → En Docker

Aplicación (ej: Drupal, MySQL) → Imagen

Sistema donde corre la app → Contenedor

Disco duro / almacenamiento → Volumen

Script de instalación → Dockerfile (que crea la imagen)