¿Qué es Docker?
También llamado: contenedor, contenedores, Dockerfile, docker compose
Docker es una herramienta para empaquetar una aplicación con todo lo que necesita (código, librerías, configuración) en un contenedor que funciona igual en cualquier servidor. Acaba con el clásico «en mi ordenador funciona».
Un contenedor es un proceso aislado que trae su propio sistema de archivos con todas las dependencias. A diferencia de una máquina virtual, no incluye un sistema operativo completo: comparte el núcleo del anfitrión, así que arranca en segundos y ocupa mucho menos.
Ejemplo
Un Dockerfile describe cómo construir la imagen de una aplicación Node:
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
$ docker build -t miapp .
$ docker run -d -p 3000:3000 --name miapp miapp
$ docker ps
Con Docker Compose se definen varios servicios que trabajan juntos:
# compose.yaml
services:
app:
build: .
ports: ["3000:3000"]
environment:
DATABASE_URL: postgres://app:secreto@db:5432/app
db:
image: postgres:17
volumes: [datos:/var/lib/postgresql/data]
volumes:
datos:
$ docker compose up -d
Conceptos clave
- Imagen: la plantilla de solo lectura (lo que construye el
Dockerfile). - Contenedor: una imagen en ejecución.
- Volumen: almacenamiento que sobrevive al contenedor. Sin volumen, los datos se pierden al recrearlo.
- Registro: donde se publican imágenes (Docker Hub, GitHub Container Registry…).
Errores habituales
- Guardar la base de datos dentro del contenedor sin volumen y perderla al actualizar.
- Publicar puertos (
-p) de bases de datos a todo Internet: Docker modifica las reglas del cortafuegos y puede saltarse las de UFW.
¿Tienes un producto o servicio relacionado con Docker? Anúnciate en este término.
Términos relacionados
- Kubernetes — Kubernetes es un sistema que gestiona contenedores en un grupo de servidores: decide dónde...
- Máquina virtual — Una máquina virtual es un ordenador simulado por software dentro de un ordenador físico,...
- VPS — Un VPS (Virtual Private Server) es un servidor virtual con recursos reservados (CPU, memoria...
- CI/CD — CI/CD (integración y despliegue continuos) es la práctica de automatizar las pruebas y la...
- Despliegue — Un despliegue es el proceso de publicar una nueva versión de una web o...
- Proxy inverso — Un proxy inverso es un servidor que recibe las peticiones de los visitantes y...
Categorías: DevOps