What is com.docker.backend on Mac?
com.docker.backend is the heart of Docker Desktop on Mac. It starts the Linux VM, shares your files into it and forwards container ports to your Mac. That’s why lsof shows it, not your container, on port 5432 or 3000.
Updated
- Process
com.docker.backend- Comes from
- Third-party
- Safe?
- Safe if signed by Docker Inc. Quit Docker Desktop from its menu instead of killing it.
What com.docker.backend does
com.docker.backend lives at /Applications/Docker.app/Contents/MacOS/com.docker.backend and runs as your user. It is Docker Desktop’s main service process. It:
- starts and supervises the Linux VM that actually runs your containers
- forwards published ports (
-p 5432:5432) from your Mac into the VM - shares your folders into containers (bind mounts, via VirtioFS on current versions)
- serves the Docker API socket that the
dockerCLI talks to - runs Docker Desktop’s networking, updates and extensions
The VM itself usually appears separately as com.apple.Virtualization.VirtualMachine when Docker uses the Apple Virtualization framework.
Why it uses CPU and memory
- Bind mounts with lots of activity: a Node or Rails app with
node_modulesor log files on a mounted host folder. Every file operation crosses the VM boundary. - File watchers in containers watching mounted folders.
- Lots of network traffic through forwarded ports, such as load tests or a busy database.
- Image builds and pulls: decompressing layers and building is CPU-heavy.
- Containers running hot: the VM’s CPU shows under the VM process, but some overhead lands on the backend.
How to make it calm down
See what’s running and what it costs:
docker ps
docker stats --no-stream
Then:
- Stop containers you aren’t using:
docker compose downin each project. - In Docker Desktop › Settings › Resources, cap CPU and memory, and turn on Resource Saver so the VM pauses when idle.
- Use named volumes for
node_modulesand databases instead of bind-mounting them from your Mac. - Make sure Settings › General uses VirtioFS file sharing, which is much faster than older options.
- Clean up disk:
docker system df, thendocker system prune(removes stopped containers, unused networks and dangling images).
Docker can also keep the Mac from sleeping while containers run; pmset -g assertions will show it.
When to worry
Check the signature on the app:
codesign -dv --verbose=2 /Applications/Docker.app 2>&1 | grep -E 'Authority=Developer|TeamIdentifier'
It should be Developer ID Application: Docker Inc. The bigger risk is what the backend exposes: a port published as -p 5432:5432 listens on all interfaces, so your database may be reachable from the local network. Use -p 127.0.0.1:5432:5432 for anything you don’t want shared.
Seeing it in Stat Space
Stat Space’s Ports tab shows every listening port, warns when one is exposed on 0.0.0.0, and can stop it after asking. With Pro, Docker mapping replaces com.docker.backend with the container name and image behind each port (Docker and OrbStack). The Apps tab groups the backend and its VM under Docker, and the Awake tab shows when Docker is the app keeping your Mac awake.
Questions
Why does lsof show com.docker.backend on my port?
Docker Desktop forwards each published container port from your Mac into the VM. Run docker ps to see which container published it, then docker stop <name> to free it.
Why is Docker using memory when no containers are running?
The Linux VM keeps the memory it has been given. Turn on Resource Saver in Docker Desktop’s settings so the VM stops after a few idle minutes, or quit Docker Desktop.
Can I kill com.docker.backend?
It’s better to quit from Docker’s menu bar icon. Killing it stops all containers abruptly and can leave the VM in a bad state until you restart Docker Desktop.
Know what your Mac is doing, without adding to it.
Free, no account. Pro is $9.99 once for the first 100 buyers.