¿Qué es Docker? Contenedores explicados para no programadores
Docker es una herramienta que empaqueta una app junto con todo lo que necesita para funcionar —la versión correcta del lenguaje, las librerías, 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 «pero en mi máquina funcionaba». La receta para construir un contenedor es un archivo de texto corto llamado Dockerfile.
Por qué importa Docker cuando creas con IA
Si tu app tiene un backend —una API en Python, Node, C# o Java—, tiene que ejecutarse en algún sitio con exactamente el software adecuado instalado. Docker es la forma más habitual de hacerlo 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 junto con un Dockerfile, y Publicar construye la imagen y la despliega (backends de API).
- Salir de una plataforma. Si exportas una app creada con IA, un Dockerfile facilita mucho ejecutarla en otro host. Consulta cómo exportar y alojar por tu cuenta una app creada 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 transporte estándar, la carga se manipulaba pieza a pieza —sacos, barriles, cajas— y cada puerto lo 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 importarle lo que hay dentro.
Docker hace lo mismo con el software:
- El Dockerfile es la lista de empaquetado y las instrucciones.
- La imagen es el contenedor sellado y 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 librerías 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 para 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 completo e independiente con su propio sistema operativo, así que pesa mucho y tarda en arrancar. Un contenedor comparte el núcleo del sistema operativo anfitrión y solo aísla la app y sus archivos, por lo que suele arrancar en segundos y usa mucha menos memoria. Muchos contenedores pueden funcionar uno al lado del otro en un mismo servidor.
Un ejemplo práctico: una pequeña API en Python
Imagina que tu creador de apps con IA ha creado un backend en Python con FastAPI para una app de reservas. El Dockerfile podría ser 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 librerías 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. |
Dicho con palabras sencillas: «Parte de Python 3.12. Instala las librerías 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 está en la imagen: contraseñas y claves de API. Esos datos se pasan al arrancar el contenedor, como variables de entorno, de modo que la misma imagen pueda funcionar 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 acelera las reconstrucciones. |
| Mapeo de puertos | Conectar un puerto del anfitrión con un puerto dentro del contenedor. |
| Volumen | Almacenamiento que sobrevive cuando se sustituye 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 apps pequeñas no lo necesitan. |
Ideas erróneas 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 a salvo». Los contenedores están pensados para desecharse y sustituirse. Todo lo que deba durar —datos de usuarios, archivos subidos— debe ir 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 desfasado y configuraciones débiles sigue siendo vulnerable.
- «Todas las apps necesitan Docker». Un sitio estático o un frontend sencillo suele alojarse como archivos planos, sin ningún contenedor.
- «Docker Desktop es gratis para todos». El motor es gratuito; según las condiciones de Docker, Docker Desktop requiere una suscripción de pago en las empresas más grandes.
Qué pedir a tu creador de 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 sepa si la API está funcionando.»
Docker en Mythex
No necesitas instalar ni ejecutar Docker para usar Mythex. Tu proyecto funciona en un entorno de nube privado, y cuando pides un backend que necesita contenedor —por ejemplo, C#, Java o un servicio personalizado en Node o Python— Mythex escribe la app junto con un Dockerfile, la previsualiza en el entorno y la despliega al publicar, sin que tengas que 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 términos sencillos?
Docker es una herramienta que empaqueta una app junto con todo lo que necesita para funcionar —el entorno de ejecución del lenguaje, las librerías y la configuración— en una unidad estándar llamada contenedor. El contenedor funciona igual en un portátil, un servidor de pruebas o 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 sola 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 solo aíslan la app, por lo que arrancan más rápido y usan menos memoria.
¿Es gratis Docker?
Docker Engine, el núcleo que ejecuta los contenedores, es gratuito y de código abierto. A septiembre de 2026, las condiciones de Docker indican que 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 crear una app con IA?
Normalmente no. Muchos creadores 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 sitio si la exportas.