técnica
etapa: foundations
2 min de lectura
Contenedores e imágenes
Un contenedor empaqueta una aplicación con sus dependencias y la ejecuta aislada del host. Una buena imagen es pequeña, determinista y corre como usuario no root.
Docker / PodmanBuildKitTrivyHadolintDivecontainer registries
Cómo funcionan los contenedores
- Un contenedor es un proceso Linux normal con su propia vista del sistema de archivos, la red y la tabla de procesos (namespaces) y con recursos limitados (cgroups). Comparte el kernel del host, a diferencia de una máquina virtual.
- Una imagen es una pila de capas de solo lectura más metadatos. Un contenedor añade una capa delgada escribible encima.
- Un registry almacena imágenes por nombre y tag; un digest (sha256) identifica el contenido exacto y nunca cambia.
- Los contenedores están pensados para ser desechables: el estado vive en volúmenes, bases de datos u object storage, no dentro del contenedor.
Un Dockerfile débil
Problemas: un tag flotante cambia sin aviso, se copia todo el directorio (incluidos .git y .env), las dependencias de desarrollo y las herramientas de build llegan a producción, no hay caché de capas y el proceso corre como root.
FROM node:latest
COPY . .
RUN npm install
EXPOSE 3000
CMD ["node", "server.js"]Uno mejor
Usa una base fijada, un build multi-stage, instalación desde el lockfile, un usuario no root y un archivo de ignore.
# etapa de build: tiene los compiladores y las dependencias de desarrollo
FROM node:22-slim@sha256:<digest-you-reviewed> AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build && npm prune --omit=dev
# etapa de runtime: solo lo que la aplicación necesita
FROM node:22-slim@sha256:<digest-you-reviewed>
ENV NODE_ENV=production
WORKDIR /app
COPY --from=build --chown=node:node /app/dist ./dist
COPY --from=build --chown=node:node /app/node_modules ./node_modules
USER node
EXPOSE 3000
HEALTHCHECK CMD node -e "fetch('http://localhost:3000/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
CMD ["node", "dist/server.js"].git
node_modules
.env
*.log
coverageHábitos
- Reconstruye y vuelve a desplegar con regularidad: las imágenes no se parchean solas.
- Escanea las imágenes en CI y falla ante hallazgos graves que puedas corregir.
- Un proceso por contenedor, logs a stdout, configuración mediante el entorno o archivos montados.
- Etiqueta con el commit y despliega por digest para que el rollback sea exacto.
- Mantén las imágenes pequeñas: menos paquetes, menos vulnerabilidades, pulls más rápidos.
conexiones en el mapa
- Fundamentos de Linux y redeses lo que un contenedor aíslaContenedores e imágenes
- Contenedores e imágeneses programado porFundamentos de Kubernetes
actualizado el 14/10/2026 · fuentes para profundizar · reportar un error
en otros dominios
- Containers - imágenes y cadena de suministrocloudsecla buena imagen y el clúster seguro: dos mitades del mismo problema
Estudia antes
Desbloquea
pon a prueba lo que entendiste
Cargando preguntas…