6 Funciones avanzadas de Docker que todo desarrollador debe dominar

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.