¿Qué es Docker? Contenedores explicados para no programadores
Docker es una herramienta que empaqueta una app junto con todo lo que necesita para ejecutarse —la versión correcta del lenguaje, las bibliotecas, las herramientas del sistema y la configuración— en una unidad estándar llamada contenedor. Un contenedor funciona igual en el portátil de un desarrollador, en un servidor de pruebas o en un host en la nube, lo que acaba con el clásico problema de «pero si en mi máquina funcionaba». La receta para construir un contenedor es un archivo de texto corto llamado Dockerfile.
Por qué importa Docker cuando construyes con IA
Si tu app tiene backend —una API en Python, Node, C# o Java—, tiene que ejecutarse en algún sitio con exactamente el software correcto instalado. Docker es la forma más habitual de hacer eso de forma repetible.
- Desplegar backends. Muchos hosts, incluido Mythex, despliegan backends construyendo un contenedor a partir de un Dockerfile. En Mythex, pedir «una API web en C#» o «un backend en Java» te da la app más un Dockerfile, y Publicar construye la imagen y la despliega (backends de API).
- Salir de una plataforma. Si exportas una app construida con IA, un Dockerfile facilita mucho ejecutarla en otro host. Consulta cómo exportar y alojar por tu cuenta una app construida con IA.
- Trabajar con desarrolladores. Un desarrollador que se une a tu proyecto puede arrancar toda la app con uno o dos comandos, en lugar de pasarse un día instalando cosas.
Una analogía cotidiana: los contenedores de transporte
Antes de los contenedores de carga estándar, la mercancía se cargaba pieza a pieza —sacos, barriles, cajas—, y cada puerto la gestionaba de forma distinta. El contenedor de acero estándar cambió eso: lo empaquetas una vez, y cualquier barco, grúa, tren o camión puede moverlo sin importar lo que lleva dentro.
Docker hace lo mismo con el software:
- El Dockerfile es la lista de empaquetado y las instrucciones.
- La imagen es el contenedor sellado ya empaquetado.
- Un contenedor en ejecución es esa caja puesta a trabajar en un barco: aquí, un servidor.
- Docker Engine es la grúa y el barco: el software de un servidor que sabe ejecutar cualquier contenedor.
Cómo funciona Docker
| Pieza | Qué es |
|---|---|
| Dockerfile | Un archivo de texto con instrucciones paso a paso para construir la imagen. |
| Imagen | Un paquete de solo lectura: lo básico del sistema operativo, el entorno de ejecución, las bibliotecas y tu código. |
| Contenedor | Una instancia en ejecución de una imagen, aislada de otras apps de la misma máquina. |
| Registro | Un lugar donde guardar y compartir imágenes, como Docker Hub o el registro de un proveedor de nube. |
| Docker Engine | El servicio en segundo plano que construye imágenes y ejecuta contenedores. Gratuito y de código abierto. |
| Docker Desktop | Una aplicación para Mac, Windows y Linux que incluye el motor con una interfaz gráfica. |
Contenedores frente a máquinas virtuales: una máquina virtual finge ser un ordenador independiente completo con su propio sistema operativo, así que es pesada y lenta al arrancar. Un contenedor comparte el núcleo del sistema operativo anfitrión y solo aísla la app y sus archivos, por lo que normalmente arranca en segundos y usa mucha menos memoria. Muchos contenedores pueden funcionar uno al lado del otro en un mismo servidor.
Ejemplo práctico: una pequeña API en Python
Supongamos que tu constructor de IA creó un backend FastAPI en Python para una app de reservas. El Dockerfile podría verse así:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Línea por línea:
| Línea | Qué hace |
|---|---|
FROM python:3.12-slim | Parte de una imagen oficial que ya tiene Python 3.12 instalado. |
WORKDIR /app | Trabaja dentro de la carpeta /app del contenedor. |
COPY requirements.txt . y RUN pip install ... | Copia la lista de bibliotecas y las instala. |
COPY . . | Copia el código propio de la app. |
EXPOSE 8000 | Indica que la app escucha en el puerto 8000. |
CMD [...] | El comando que arranca el servidor web cuando se ejecuta el contenedor. |
En palabras sencillas: «Parte de Python 3.12. Instala las bibliotecas que aparecen en requirements.txt. Copia el código. Arranca el servidor web en el puerto 8000».
Después, un desarrollador (o una plataforma de alojamiento) ejecuta dos comandos:
docker build -t booking-api .
docker run -p 8000:8000 booking-api
El primero construye la imagen y le pone el nombre booking-api. El segundo arranca un contenedor y conecta el puerto 8000 de la máquina con el puerto 8000 dentro del contenedor. La API ya está funcionando, igual que lo hará en cualquier servidor que tenga Docker.
Fíjate en lo que no hay en la imagen: contraseñas ni claves de API. Esas se pasan al arrancar el contenedor, como variables de entorno, para que la misma imagen pueda ejecutarse en pruebas y en producción con configuraciones distintas.
Términos clave
| Término | Significado |
|---|---|
| Contenedor | Un paquete aislado y en ejecución de una app y sus dependencias. |
| Imagen | La plantilla a partir de la cual se arranca un contenedor. |
| Imagen base | El punto de partida en la línea FROM de un Dockerfile, como python:3.12-slim o node:22. |
| Capa | Cada paso del Dockerfile añade una capa en caché, lo que hace más rápidas las reconstrucciones. |
| Mapeo de puertos | Conectar un puerto del anfitrión con un puerto dentro del contenedor. |
| Volumen | Almacenamiento que sobrevive cuando se reemplaza un contenedor. Los contenedores en sí son desechables. |
| Docker Compose | Un archivo que describe varios contenedores que funcionan juntos, como una API más una base de datos. |
| Kubernetes | Un sistema para ejecutar muchos contenedores en muchos servidores. La mayoría de las apps pequeñas no lo necesitan. |
Conceptos erróneos habituales
- «Docker es una máquina virtual». Es más ligero: los contenedores comparten el núcleo del anfitrión.
- «Los datos guardados dentro de un contenedor están seguros». Los contenedores están pensados para desecharse y reemplazarse. Lo que debe durar —datos de usuario, archivos subidos— va en una base de datos, en almacenamiento de archivos o en un volumen.
- «Poner secretos en el Dockerfile está bien porque es privado». Las imágenes se comparten y se suben a registros. Pasa los secretos en tiempo de ejecución.
- «Docker hace que una app sea segura». El aislamiento ayuda, pero un contenedor con software desactualizado y configuración débil sigue siendo vulnerable.
- «Toda app necesita Docker». Una web estática o un frontend sencillo se suele alojar como archivos planos, sin ningún contenedor.
- «Docker Desktop es gratis para todos». El motor es gratuito; Docker Desktop requiere una suscripción de pago para las empresas más grandes, según las condiciones de Docker.
Qué pedir a tu constructor de apps con IA
- «¿Esta app necesita un Dockerfile? Si es así, explica cada línea en lenguaje sencillo.»
- «Usa una imagen base pequeña y oficial, y fija la versión del lenguaje.»
- «Mantén los secretos fuera de la imagen. Léelos de variables de entorno en tiempo de ejecución.»
- «Asegúrate de que los archivos subidos y los datos se guarden en la base de datos o en almacenamiento de archivos, no dentro del contenedor.»
- «Añade un archivo de Docker Compose para que un desarrollador pueda ejecutar el frontend, la API y la base de datos en local con un solo comando.»
- «Añade un endpoint de comprobación de estado para que el host pueda saber si la API está activa.»
Docker en Mythex
No necesitas instalar ni ejecutar Docker para usar Mythex. Tu proyecto se ejecuta en un entorno de nube privado, y cuando pides un backend que necesita un contenedor —por ejemplo C#, Java o un servicio personalizado en Node o Python—, Mythex escribe la app más un Dockerfile, la previsualiza en el entorno y la despliega al publicar, sin configurar ningún alojamiento (cómo se elige la tecnología). En Pro puedes exportar el proyecto o sincronizarlo con GitHub y llevarte el Dockerfile. Para ver cómo encajan backend y frontend, consulta frontend frente a backend.
Preguntas
¿Qué es Docker en pocas palabras?
Docker es una herramienta que empaqueta una app junto con todo lo necesario para ejecutarla —el entorno de ejecución del lenguaje, las bibliotecas y la configuración— en una unidad estándar llamada contenedor. El contenedor funciona igual en un portátil, en un servidor de pruebas o en un host en la nube.
¿Cuál es la diferencia entre una imagen de Docker y un contenedor?
Una imagen es la plantilla empaquetada y de solo lectura: la app y sus dependencias, construidas a partir de un Dockerfile. Un contenedor es una copia en ejecución de esa imagen. Puedes arrancar muchos contenedores a partir de una misma imagen.
¿Es Docker una máquina virtual?
No. Una máquina virtual emula un ordenador completo con su propio sistema operativo. Los contenedores comparten el núcleo del sistema operativo de la máquina anfitriona y aíslan solo la app, así que arrancan más rápido y usan menos memoria.
¿Es Docker gratis?
Docker Engine, el núcleo que ejecuta los contenedores, es gratuito y de código abierto. Según las condiciones de Docker a septiembre de 2026, Docker Desktop es gratis para proyectos de código abierto no comerciales y para empresas con menos de 250 empleados y menos de 10 millones de dólares de facturación anual; las empresas más grandes necesitan una suscripción de pago.
¿Necesito aprender Docker para construir una app con IA?
Normalmente no. Muchos constructores de apps con IA gestionan los contenedores por ti. Conviene saber qué es un Dockerfile para entender cómo se empaqueta un backend y para poder ejecutar o alojar la app en otro lugar si la exportas.