Guía
¿Docker Desktop consumiendo mucho CPU en tu Mac? Cómo encontrar (y detener) al culpable
15 de julio de 20265 min de lectura
El ventilador se acelera, la Mac se calienta, y cuando revisas el Monitor de Actividad, com.docker.backend (o Docker Desktop directamente) está arriba en la columna de CPU. A veces con contenedores corriendo, a veces sin ninguno activo.
Por qué Docker Desktop dispara el CPU de tu Mac
Docker Desktop en Mac no corre contenedores de forma nativa, corre una VM liviana de Linux en segundo plano y tus contenedores viven adentro de esa VM. com.docker.backend es el proceso que gestiona esa VM y su networking, y hay algunas cosas que confiablemente elevan su uso de CPU:
- Despertar del modo suspendido. La VM a veces no resincroniza bien y se pone a girar tratando de ponerse al día.
- Un contenedor idle que olvidaste que seguía corriendo. Incluso los contenedores “inactivos” pueden hacer polling, loguear o correr health-checks en un intervalo, y eso suma con varios corriendo a la vez.
- Un backend de VM trabado. A veces la capa de virtualización misma queda en mal estado, independiente de lo que estén haciendo tus contenedores.
Nada de esto es algo que rompiste. Es más bien “overhead de fondo a nivel de VM del sistema operativo”, y necesita un diagnóstico distinto al de un proceso normal descontrolado.
Paso 1: ¿es Docker en general, o un contenedor específico?
Abre el Monitor de Actividad y busca docker o com.docker. Si com.docker.backend en sí es el que está alto, y ningún proceso de contenedor individual muestra un uso inusual, el problema es probablemente la capa de VM, no tu carga de trabajo — salta directo a los fixes de abajo.
Si preferís un desglose en vivo por contenedor, Docker lo trae incorporado:
docker stats
Esto se actualiza en tiempo real y muestra CPU%, memoria y I/O de red por contenedor activo, así podés ver de inmediato si es un contenedor específico acaparando recursos en vez de Docker en general.
También vale la pena revisar, ya que es la causa más común de “nada debería estar corriendo, ¿por qué el CPU está alto?”:
docker ps
Si esto lista contenedores que olvidaste, de un docker compose up viejo en una pestaña de terminal que cerraste, o un proyecto en el que ya no estás trabajando activamente, muy probablemente esa es tu respuesta.
Fixes reales
Detén lo que olvidaste que seguía corriendo. El fix más común, de lejos. docker ps, encuentra lo que no necesitás ahora, docker stop <nombre> o docker compose -p <proyecto> down. (Si además tenés conflictos de puerto por contenedores olvidados, no solo CPU alto, eso está explicado paso a paso en Docker: “bind: address already in use” en tu Mac.)
Baja los límites de recursos. Docker Desktop → Settings → Resources. Si quedó en los valores por defecto, sobre todo en una máquina con pocos núcleos, limitar CPUs y memoria puede evitar que un contenedor pesado arrastre a todo el sistema, al costo de que ese contenedor corra más lento.
Revisa la opción de backend de VM. Settings → General → la implementación de file sharing y las opciones de backend de virtualización varían según la versión de Docker Desktop, pero cambiar entre el framework de virtualización nativo de Apple y la alternativa (donde esté disponible) ha resuelto problemas persistentes de CPU a nivel de VM para bastante gente, vale la pena probarlo si nada más de esto ayuda.
Actualiza Docker Desktop. Los bugs de rendimiento del backend de VM se arreglan entre versiones con bastante frecuencia como para que “actualizar y ver si sigue pasando” no sea una sugerencia al pasar, es un fix genuinamente común.
Reinicia el daemon de Docker, no toda tu Mac, solo Docker:
killall Docker && open -a Docker
Esto limpia un estado de VM trabado sin tocar los datos de tus contenedores, y vale la pena probarlo antes de algo más drástico.
Detectarlo más rápido la próxima vez
Una vez resuelto, lo molesto es que “revisar el Monitor de Actividad, y después cruzar con docker ps para averiguar a qué contenedor pertenece ese PID” es un ritual de varios pasos cada vez que vuelve a pasar.
Ese es el hueco específico que cierra Bosun: muestra el nombre real de cada contenedor y su proyecto Compose junto a su CPU, memoria y uptime, en la barra de menú, sin abrir el Monitor de Actividad ni correr docker stats primero. No te va a arreglar un pico de CPU a nivel de VM, pero te lleva directo a “qué contenedor es este, y lo sigo necesitando” en el momento en que notás que el ventilador se aceleró.
Preguntas rápidas
¿Por qué com.docker.backend usa mucho CPU sin contenedores corriendo?
Generalmente es un problema a nivel de VM y no de tus contenedores, más seguido gatillado al despertar del modo suspendido. Reiniciar Docker Desktop (killall Docker && open -a Docker) lo resuelve la mayoría de las veces; si vuelve a pasar constantemente, revisa si hay una actualización pendiente de Docker Desktop.
¿Es seguro forzar el cierre de Docker Desktop en Mac? Sí. Los contenedores se detienen lo suficientemente limpio para uso normal, aunque cualquier cosa a mitad de una escritura sin manejo de cierre ordenado tiene el mismo riesgo pequeño que forzar el cierre de cualquier app. Para un cierre ordenado primero, salí desde el ícono de Docker Desktop en la barra de menú en vez de forzar el cierre cuando tengas la opción.
¿Cerrar Docker Desktop libera CPU y RAM de inmediato? Sí, cerrarlo apaga la VM por completo, liberando los recursos que estaba usando. Si necesitás Docker de nuevo poco después, esperá un pequeño retraso de arranque de la VM la próxima vez que lo abras.
Ve esto en vez de escribirlo
Bosun vive en tu barra de menú y muestra cada puerto abierto en tu Mac, en vivo, mapeado al proceso detrás. Un clic para matarlo, SIGTERM primero. Útil la primera vez que pasa esto. Realmente útil la quinta vez que pasa en una misma tarde.