Evita que tu Mac se duerma durante un build de Docker

Henry AGI
6 min de lecturaJun 2026
Evita que tu Mac se duerma durante un build de Docker

La forma más rápida de evitar que tu Mac se duerma durante un build de Docker es envolver el build en una aserción de suspensión por inactividad: caffeinate -i docker build -t myapp . en Terminal, o el propio comando gratuito de LidRun, lidrun -- docker build -t myapp ., que hace lo mismo sin necesidad de licencia. Ambos evitan que el temporizador de inactividad del Mac corte un build que puede correr durante muchos minutos de trabajo sostenido de CPU — pero ninguno vigila tu batería, ni el calor que genera una compilación larga, ni mantiene un build corriendo por sí solo con la tapa cerrada. Esto es el arreglo gratuito por línea de comandos, dónde se queda corto en un build real, y cómo LidRun le agrega una capa de seguridad encima.

Por qué la suspensión cancela un build de Docker

Un docker build corre en segundo plano mientras haces otra cosa — leer código, responder un mensaje, cerrar la tapa para ir a otro cuarto. Esa es exactamente la situación en la que un temporizador de inactividad por defecto o una tapa cerrada activan la suspensión.

LidRun
Diagram showing a Docker build's layers, with Mac sleep interrupting mid-layer and the rebuild restarting from an earlier cache point
El reposo no pausa un build de Docker — lo corta de raíz, y tienes que reconstruir desde donde se quedó la caché.

La suspensión no pausa un build con delicadeza para retomarlo después. Corta el proceso a mitad de capa. Según dónde se detuvo, pierdes la caché de esa capa que estabas esperando y terminas reconstruyendo desde más atrás de lo que quisieras — a veces toda la capa de instalación de dependencias, a veces solo el último paso RUN.

Los builds que en verdad sufren esto son las imágenes multi-etapa con una instalación de dependencias lenta o un paso de compilación pesado, y los builds multi-arquitectura — docker buildx build --platform linux/amd64,linux/arm64 -t myapp . corre cada destino por emulación en un Mac y puede tardar varias veces más que un build nativo. Esas son justo las corridas que superan un temporizador de inactividad por defecto.

El arreglo gratuito y nativo: caffeinate y pmset

Dos comandos que ya vienen en todo Mac cubren el caso común, sin instalar nada. caffeinate -i docker build -t myapp . corre el build como proceso hijo de caffeinate, mantiene una aserción de 'prevenir suspensión por inactividad' mientras dura, y la libera automáticamente en cuanto docker build termina — con éxito o con error. Si el build ya está corriendo en otro lado, caffeinate -w <pid> se engancha a ese id de proceso en lugar de arrancar un comando nuevo.

LidRun trae exactamente el mismo truco como comando CLI gratuito: lidrun -- docker build -t myapp . toma la misma aserción de macOS (kIOPMAssertionTypePreventUserIdleSystemSleep — la misma que usa el -i de caffeinate) alrededor del proceso hijo y la libera cuando el comando termina. No necesita licencia ni la app corriendo en segundo plano; es un wrapper autónomo, la misma idea que caffeinate con el nombre de LidRun.

Para un build que arrancaste en una pestaña de terminal de la que estás por alejarte, sudo pmset noidle bloquea la suspensión por inactividad en todo el sistema hasta que le hagas Ctrl-C — sin comando objetivo, solo un bloqueo general del que tú eres responsable de terminar.

Guía relacionadaCuando tu MacBook se calienta al programar

Dónde caffeinate y pmset se quedan cortos en un build real

Ninguno de los dos comandos vigila temperatura ni batería. caffeinate -i y lidrun -- ... mantienen la aserción con la misma fuerza sin importar si el SoC está frío en reposo o corriendo caliente, y sin importar si la batería está en 80% o en 3% — no tienen opinión, solo sostienen hasta que el comando envuelto termina.

Una aserción de suspensión por inactividad no anula la suspensión por tapa cerrada. Si cierras la tapa a mitad del build sin un monitor externo conectado, el Mac igual se duerme por debajo de caffeinate o del wrapper CLI — para eso hace falta sudo pmset disablesleep 1, que afecta el comportamiento de suspensión de todo el Mac, no solo el build. Si te olvidas de correr pmset disablesleep 0 después, el Mac no volverá a dormirse por sí solo, con la tapa abierta o cerrada, hasta que lo hagas.

Ninguno de estos se limpia solo si te olvidas de ellos. Una pestaña de terminal de sobra que sigue corriendo caffeinate o pmset noidle de un build de hace una hora mantiene el Mac despierto — y, con batería, caliente — mucho después de que quede algo que proteger.

Cómo LidRun agrega la capa de seguridad

La app completa de LidRun hace la misma detección, pero con un gobernador vigilando todo. Auto Mode viene con docker y docker-compose ya en su lista de vigilancia por defecto, así que un build aparece en el momento en que arranca — nada que configurar. Auto Mode también revisa la CPU: un proceso detectado necesita superar más o menos 20% de CPU (el umbral por defecto) antes de contar como activo, con cerca de un minuto de margen para que una baja breve no suelte el bloqueo a mitad del build.

Esa revisión de CPU normalmente no es problema para los propios procesos del compilador o del gestor de paquetes del build, pero según tu configuración de Docker Desktop, el trabajo pesado puede pasar dentro de un proceso de VM en segundo plano mientras el cliente docker en sí se queda casi inactivo transmitiendo la salida. Para eso está la Smart Rule integrada "Docker → keep awake + balanced cooling": se activa con solo que docker esté presente, sin piso de CPU, y enciende Keep Awake más un perfil de enfriamiento balanceado en cuanto ve uno corriendo.

Además de la detección, el Safety Governor de LidRun vigila ese mismo build. Si el SoC llega al nivel térmico crítico, libera el bloqueo de keep-awake de inmediato, en cualquier modo y con cualquier fuente de energía. Si sigue en crítico y te alejaste — o la tapa está cerrada — escala hasta dejar que el Mac se duerma de verdad, en lugar de dejar que los ventiladores peleen una batalla perdida. A un usuario presente con la tapa abierta nunca se lo fuerza a dormir solo por calor; LidRun libera el bloqueo para que macOS decida, no te corta la sesión por debajo.

La batería recibe el mismo trato gradual: por defecto LidRun avisa cerca del 15%, escala al 5%, y no sostiene el bloqueo más allá de un piso que no puede bajar de 4% — una parada controlada es mejor que una descontrolada. Ese auto-stop base es gratis para todos; Pro agrega la posibilidad de ajustar cada umbral. Es el mismo trato que hace LidRun en todos lados: si el agente — o el build — está corriendo, se mantiene despierto; si terminó o no es seguro, se libera.

Cómo configurarlo para un build de Docker

Gratis, sin licencia: lidrun -- docker build -t myapp . desde Terminal te da la misma protección que caffeinate -i, solo que con el propio binario de LidRun. Funciona de forma independiente — no hace falta tener la app completa abierta.

Con la app abierta, Auto Mode ya tiene docker en su lista por defecto, así que un build se detecta sin tocar Settings. Si prefieres la versión basada en presencia — útil cuando el propio proceso cliente corre frío — abre Smart Rules desde el menú y activa la regla integrada "Docker → keep awake + balanced cooling". Auto Mode y Smart Rules son funciones Pro; Keep Awake, Timer, y Charging-only run se mantienen gratis y sin límite de cualquier forma.

Para un build que quieres que sobreviva a la tapa cerrada, combina cualquiera de las opciones anteriores con Closed-Lid mode (también Pro), sobre una superficie dura y ventilada y conectado a la corriente. Closed-Lid mode es lo único en la app autorizado a llamar pmset disablesleep, y siempre empareja el 'on' con un 'off' correspondiente — al detenerse, al cerrar la app, y al siguiente arranque — así que revertirlo no es algo que tengas que recordar tú mismo.

Para un build multi-plataforma puntual desde un script, el wrapper CLI suele ser lo más simple: lidrun -- docker buildx build --platform linux/amd64,linux/arm64 -t myapp . mantiene el Mac despierto exactamente el tiempo que dura el build multi-arquitectura y lo suelta en cuanto termina.

Cuándo de verdad necesitas esto

Esto es para los builds largos — una imagen desde cero, una reconstrucción completa estilo CI hecha en local, una corrida de buildx multi-plataforma por emulación, una imagen base sobre la que estás iterando y que tarda de verdad. Esos son los builds que superan un temporizador de inactividad y valen la pena proteger.

Una reconstrucción rápida con caché caliente termina en segundos y ni se acerca a un temporizador de suspensión — nada de esto hace falta para la iteración del día a día.

Si un build largo se te ha muerto por cerrar la tapa o por un timeout de inactividad más de una vez, esa es la señal: usa el wrapper CLI gratuito para una corrida puntual, o la app completa con Auto Mode y la vigilancia térmica corriendo en segundo plano si prefieres que se maneje solo, sin tener que pensarlo.

Consejos para builds pesados

Conecta a la corriente para builds grandes. La CPU sostenida — o, con buildx, CPU emulada en dos arquitecturas a la vez — drena una laptop rápido, y la corriente eléctrica mantiene la atención del safety governor en el calor y no en la carga.

Mantén el Mac sobre una superficie dura y ventilada, sobre todo con la tapa cerrada. El calor de una compilación larga tiene que ir a algún lado, y una mochila o una superficie blanda bloquea las rejillas que lo sacarían.

Trata los builds multi-plataforma con buildx como el caso de 'build largo' incluso cuando el equivalente nativo suele terminar rápido — compilar cruzado por emulación corre más caliente y tarda notablemente más por cada arquitectura destino.

Si un build se puede colgar o entrar en loop — un paso RUN inestable que se reintenta sin fin, un docker compose up que se dejó sin --build — no dejes que mantenga el Mac despierto sin fin por accidente. El wrapper CLI se libera en cuanto el comando termina de cualquier forma, y el cooldown de una Smart Rule evita que LidRun se re-active sin parar con un contenedor en crash-loop.

Pruébalo en vez de pelear con el reposo de tapa cerrada

LidRun mantiene tu trabajo en marcha con la tapa cerrada, con protección de batería y temperatura integrada.

Descargar para macOS

¿Ya tienes LidRun? Lee la guía de configuración →

¿Nuevo en LidRun? Consulta los precios →

Preguntas frecuentes

¿LidRun mantiene el Mac despierto durante todo el build de Docker?

Sí, mientras la batería y el estado térmico se mantengan dentro de los umbrales activos — por defecto, un aviso cerca del 15%, escalación al 5%, y un piso de force-sleep que no puede bajar de 4%. Si se alcanza un límite, o el SoC llega al nivel térmico crítico, LidRun libera el bloqueo (y, si te alejaste o la tapa está cerrada, deja que el Mac se duerma de verdad) en lugar de forzar la continuación.

¿Cuál es la diferencia entre LidRun y simplemente correr caffeinate -i docker build ...?

Mecánicamente, no mucha para un solo comando — el propio CLI de LidRun, lidrun -- docker build ..., sostiene la misma aserción de suspensión por inactividad que usa la bandera -i de caffeinate, y es gratis. La diferencia aparece cuando la app completa está corriendo: Auto Mode y la Smart Rule integrada de Docker detectan el build sin que tengas que escribir un comando wrapper, y el Safety Governor agrega conciencia térmica y de batería que caffeinate a secas no tiene — caffeinate sostiene su aserción con la misma fuerza sin importar qué tan caliente se ponga el Mac.

¿La detección de Docker es gratis, o necesito Pro?

El wrapper CLI lidrun -- docker build ... a secas es gratis y no necesita licencia — la misma idea que caffeinate. La detección automática dentro de la app (la lista por defecto de Auto Mode, y la Smart Rule integrada de Docker) es parte de LidRun Pro. Keep Awake, Timer, y Charging-only run se mantienen gratis y sin límite de cualquier forma.

¿Puedo cerrar la tapa durante un build de Docker?

Con Closed-Lid mode activado (Pro), sí, siempre que las condiciones se mantengan dentro de tus límites de batería y temperatura — se recomienda mucho una superficie dura y ventilada y estar conectado a la corriente. Sin Closed-Lid mode, cerrar la tapa duerme el Mac sin importar lo que caffeinate, lidrun -- , o Auto Mode estén sosteniendo, porque ninguno de esos anula por sí solo la suspensión por tapa cerrada.

¿Voy a perder mi caché de capas si el Mac se duerme de todas formas?

Si un umbral de seguridad termina la sesión — o la tapa se cierra sin Closed-Lid mode activado — el build se detiene como cualquier build interrumpido, y puedes perder la capa en la que ibas. Mantenerlo conectado, fresco, y dentro de la opción de keep-awake que hayas elegido es lo que le permite correr hasta el final y conservar la caché.

Si me alejo de un build largo, ¿LidRun libera el bloqueo de todas formas?

No mientras el build esté confirmado como activo. El guard de inactividad desatendida de LidRun solo libera el bloqueo cuando confirma que en verdad no hay nada corriendo — un proceso docker genuinamente activo, o uno detectado por la Smart Rule, mantiene el bloqueo sin importar cuánto tiempo lleves lejos del teclado. Son los límites térmicos y de batería, no el tiempo de inactividad por sí solo, los que pueden terminar un build activo antes de tiempo.

¿Los builds multi-plataforma con buildx se manejan de forma distinta?

No mecánicamente — un proceso docker buildx build --platform ... sigue siendo solo docker para Auto Mode y la Smart Rule. La diferencia es práctica: los builds multi-arquitectura por emulación corren más largo y más caliente que un build nativo, así que son el caso que más vale la pena combinar con Closed-Lid mode, corriente eléctrica, y una superficie ventilada, en lugar de correrlos a secas.

¿Tienes curiosidad por saber si LidRun es para ti?

Deja que ChatGPT, Claude o Perplexity lo investiguen — haz clic abajo y mira qué opina la IA sobre LidRun.