Guías
DevOps Actualizado el 6 de noviembre de 2026

Docker básico

Imágenes, contenedores, volúmenes, redes, Dockerfile multi-stage con pnpm, depuración y limpieza con Docker.

  • #docker
  • #contenedores
  • #imagenes
  • #devops
  • #dockerfile

Imágenes

AcciónComando
Construir una imagen desde el directorio actual
Construir pasando un argumento de build
Construir solo hasta una etapa del Dockerfile
Listar las imágenes locales
Descargar una imagen de Docker Hub
Etiquetar una imagen para un registro
Subir una imagen al registro
Ver las capas y su tamaño
Eliminar una imagen local

Contenedores

AcciónComando
Ejecutar contenedor en segundo plano exponiendo puerto
Ejecutar con variables de entorno
Ejecutar cargando variables desde un archivo
Ejecutar uno temporal que se borra al salir
Ver contenedores en ejecución (o todos con -a)
Detener un contenedor
Iniciar un contenedor detenido
Reiniciar un contenedor
Detener y eliminar un contenedor

Inspeccionar y copiar

AcciónComando
Ver la configuración completa en JSON
Ver consumo de CPU y memoria en vivo
Copiar un archivo del contenedor al host
Copiar un archivo del host al contenedor
Ver los procesos dentro del contenedor

Volúmenes

AcciónComando
Crear un volumen con nombre
Listar volúmenes
Ver dónde vive y quién lo usa
Montar un volumen con nombre
Montar una carpeta del host (bind mount)
Eliminar un volumen
  • Volumen con nombre (pgdata:/ruta): lo gestiona Docker, sobrevive al contenedor. Ideal para bases de datos.
  • Bind mount (./carpeta:/ruta): refleja una carpeta del host. Ideal para desarrollo con recarga en vivo.

Redes

AcciónComando
Crear una red bridge propia
Listar redes
Arrancar un contenedor en esa red
Conectar un contenedor existente a la red
Ver qué contenedores están en la red

En una red creada por ti, los contenedores se encuentran por nombre: desde api puedes conectar a db:5432. La red bridge por defecto no ofrece esa resolución DNS.

Dockerfile multi-stage con pnpm

dockerfile
# syntax=docker/dockerfile:1
FROM node:24-alpine AS base
# Official pnpm binary (use the non-alpine tag for Debian-based images)
COPY --from=ghcr.io/pnpm/pnpm:12-alpine /opt/pnpm /opt/pnpm
RUN for bin in pnpm pnpx; do ln -s "/opt/pnpm/$bin" "/usr/local/bin/$bin"; done
WORKDIR /app

FROM base AS build
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml* ./
RUN --mount=type=cache,id=pnpm,target=/var/cache/pnpm \
    pnpm install --store-dir /var/cache/pnpm --frozen-lockfile
COPY . .
RUN pnpm run build && pnpm prune --prod

FROM base AS runtime
ENV NODE_ENV=production
COPY --from=build --chown=node:node /app/node_modules ./node_modules
COPY --from=build --chown=node:node /app/dist ./dist
USER node
EXPOSE 3000
CMD ["node", "dist/index.js"]

pnpm se copia desde la imagen oficial ghcr.io/pnpm/pnpm, como indica la guía de Docker de pnpm. El cache mount de BuildKit reutiliza los paquetes descargados entre builds.

Un .dockerignore evita copiar basura y secretos al contexto de build:

output
node_modules
dist
.git
.env*
*.log
Dockerfile

Depuración

AcciónComando
Seguir los logs de un contenedor en tiempo real
Ver logs de los últimos 10 minutos
Ver solo las últimas 100 líneas
Abrir una terminal interactiva dentro del contenedor
Ver la IP del contenedor
Ver el estado y el código de salida

Limpieza

AcciónComando
Eliminar contenedores detenidos, redes y capas huérfanas
Limpieza profunda (incluye imágenes no usadas y volúmenes)
Eliminar solo imágenes sin etiqueta
Eliminar volúmenes que ningún contenedor usa
Ver el uso de disco de Docker