Docker ya no es solo una herramienta para “meter apps en contenedores”. Hoy, es una plataforma completa de desarrollo, despliegue y seguridad, con funciones avanzadas que pueden transformar tu flujo de trabajo.
Descubre las seis más potentes y cómo aplicarlas de forma práctica.
1. Ignora archivos innecesarios con .dockerignore
Usa .dockerignore para evitar subir archivos que no deben incluirse en las imágenes: .git, node_modules, logs, etc.
¿Trabajas con varios Dockerfile? Crea un archivo ignore por cada uno, por ejemplo: build.Dockerfile.dockerignore.
Beneficios: builds más rápidas, imágenes más ligeras y menor riesgo de filtrar información sensible. Instrucciones de construcción aquí.
2. Multi-stage builds: imágenes mínimas y listas para producción
Las construcciones en múltiples etapas te permiten compilar en una imagen y copiar solo lo necesario a la final. Así obtienes imágenes limpias, seguras y pequeñas, ideales para entornos productivos.
Ejemplo (Go):
FROM golang:1.24 AS build
WORKDIR /app
COPY . .
RUN go build -o /app/bin/app
FROM alpine:3.20
COPY --from=build /app/bin/app /usr/local/bin/app
CMD ["app"]
Usa tags explícitos y evita latest para mantener reproducibilidad.
3. Mounts en BuildKit: cache, bind, SSH y secrets
BuildKit introduce montajes temporales que aceleran y protegen tus builds.
- bind: monta archivos del host sin copiarlos al contenedor final.
- cache: guarda dependencias entre builds (npm, pip, go, etc.).
- ssh: usa claves SSH privadas sin dejar rastros en la imagen.
- secret: permite usar variables o claves sensibles sin exponerlas.
Estas opciones te dan builds más rápidas, seguras y reproducibles.
4. HEALTHCHECK: controla la salud de tus contenedores
Con el comando HEALTHCHECK, Docker puede detectar fallos automáticamente y reiniciar contenedores inactivos.
Ejemplo:
HEALTHCHECK --interval=30s --timeout=10s --start-period=15s --retries=3
CMD curl -f http://localhost:8080/ || exit 1
Ideal para integraciones con Swarm o Kubernetes, donde la disponibilidad continua es crítica.
5. Log drivers: controla y rota tus logs
Docker permite definir controladores de logs personalizados (syslog, journald, Fluentd, AWS, Splunk, etc.).
Así puedes integrarlos con tus herramientas de monitoreo y mantener control sobre el almacenamiento.
Ejemplo global (daemon.json):
{
"log-driver": "local",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
Evita el desbordamiento de logs y mejora la trazabilidad de tus contenedores.
6. Credential helpers: protege tus credenciales con cifrado
Los credential helpers guardan tus claves de Docker en el almacén seguro del sistema (macOS Keychain, Windows Credential Manager o pass en Linux).
Así evitas que las contraseñas queden en texto plano en ~/.docker/config.json.
Ejemplo (macOS):
{ "credsStore": "osxkeychain" }
Conclusión
Docker es mucho más que build y run. Usar estas funciones avanzadas te da seguridad, velocidad y control en tus entornos DevOps.
Empieza a aplicarlas y notarás builds más limpias, reproducibles y profesionales.