content/manuals/desktop/features/networking/_index.md
This page explains how Docker Desktop routes network traffic and file I/O between containers, the VM, and the host, and how this behavior is visible to firewalls and endpoint protection tools.
Docker Desktop runs the Docker Engine inside a lightweight Linux virtual machine (VM). Depending on your system configuration and operating system, Docker Desktop routes network and file operations between the Docker VM and the host using different backend components.
The backend acts as:
com.docker.backend process.qemu process performs this function.virtiofs, osxfs, or krun, file access is handled by those respective daemons rather than the backend process.The following table summarizes typical setups in more detail:
| Platform | Setup | Networking handled by | File sharing handled by | Notes |
|---|---|---|---|---|
| Windows | Hyper-V | com.docker.backend.exe | com.docker.backend.exe | Simplest setup with full visibility to EDR/firewall tools |
| Windows (WSL 2) | WSL 2 | com.docker.backend.exe | WSL 2 kernel (no visibility from host) | Recommended only when WSL 2 integration is needed |
| Mac | Virtualization framework + gRPC FUSE | com.docker.backend | com.docker.backend | Recommended for performance and visibility |
| Mac | Virtualization framework + virtiofs | com.docker.backend | Apple's Virtualization framework | Higher performance but no file access visibility from host |
| Mac | Virtualization framework + osxfs | com.docker.backend | osxfs | Legacy setup, not recommended |
| Mac | DockerVMM + virtiofs | com.docker.backend | krun | Currently in Beta |
| Linux | Native Linux VM | qemu | virtiofsd | No com.docker.backend process on Linux |
Each Linux container in Docker Desktop runs inside a small virtual network managed by Docker and every container is attached to a Docker-managed network and receives its own internal IP address. You can view and manage these networks with docker network ls, docker network create, and docker network inspect. They are managed by the daemon.json.
When a container initiates a network request, for example with apt-get update or docker pull:
eth0 interface connects to a virtual bridge (docker0) inside the VM.192.168.65.3). You can view or change this with the Docker Desktop settings.All outbound container network traffic originates from the com.docker.backend process. Firewalls, VPNs, and security tools, like Crowdstrike, see traffic coming from this process — not from a VM or unknown source so firewall and endpoint security software can apply rules directly to com.docker.backend.
When you publish a container port using the -p or --publish flag, Docker Desktop makes that container port accessible from your host system or local network.
For example, with docker run -p 80:80 nginx:
80.172.17.0.2:80.By default, docker run -p listens on all network interfaces (0.0.0.0), but you can restrict it to a specific address, such as 127.0.0.1 (localhost) or a particular network adapter. This behavior can be modified to bind to localhost by default in Docker Desktop's network settings
Host firewalls can permit or deny inbound connections by filtering on com.docker.backend.
Docker Desktop can use your system’s default proxy settings or custom settings that you configure with Docker Desktop's proxy setting. All proxy traffic passes through com.docker.backend.exe.
When a proxy is enabled:
docker pull, through an internal proxy at http.docker.internal:3128.Note that:
localhost as a workaround.HTTP_PROXY, HTTPS_PROXY, and NO_PROXY environment variables.To restrict VM or container networking apply rules to com.docker.backend.exe (Windows) com.docker.backend (Mac) or qemu (Linux) as all VM networking is funneled through these processes.
Use Windows Defender Firewall or enterprise endpoint firewalls for control. This enables traffic inspection and restriction at the host level without modifying the Docker Engine.
Crowdstrike and similar tools can observe all traffic and file access that passes through the backend process.
| Action | Visible to host EDR? | Reason |
|---|---|---|
| Container reads host files | Yes | Access handled by com.docker.backend |
| Container writes host files | Yes | Same process performs the write |
| Container accesses its own filesystem layers | No | Exists only inside the VM |