Docker Desktop not starting up on MacOS Monterey

Hi There,

since a few weeks (I don’t know exactly when) my Docker Desktop hangs up when starting the VM. I’ve already uninstalled Docker Desktop including all folders created by it and re-installed using homebrew but it simply won’t start.

I can find the following entries in log:

Failed to fire hook: unable to create a log file for vpnkit-bridge in directory /root/.docker/desktop/log/host: creating /root/.docker/desktop/log/host: mkdir /root/.docker: read-only file system
standard	09:47:45.205172+0200	com.docker.hyperkit	Failed to fire hook: unable to create a log file for vpnkit-bridge in directory /root/.docker/desktop/log/host: creating /root/.docker/desktop/log/host: mkdir /root/.docker: read-only file system

standard	09:47:46.153613+0200	vpnkit-bridge	mac: still waiting for docker after 22m0.000286629s

Did you installed Docker Desktop originally with Homebrew? If you did, follow the official documentation to install Docker Desktop:

Your error message is strange to me, because there is no /root/ folder on my Mac. The error message is similar to what I see in issues related to Docker Desktop for Linux:

The error message is different, but I searched for .docker/desktoplog/host and found Docker Desktop for Linux only.

Thank your for your response.
I originally installed Docker Desktop the official way. Only the last try was via using Homebrew.

I also think this behavior ist strange. Maybe the log is meant to be inside the VM and not on local system?

Maybe, but I logged in the VM and found nothing there.

Which file did you find this log message? Have you tried to run diagnostic?

This is why I like to create tutorials, because I always learn something too. So I was preparing for a presentation and I tried to intentionally stop the docker daemon inside the container. I could not run any container obviously, so I wanted to check if I could still log in the virtual machine, where I got this error message immediately:

[2022-08-20T14:30:05.236083042Z][vpnkit-bridge][W] guest: docker: cannot dial dial unix /run/guest-services/docker.sock: connect: connection refused
Failed to fire hook: unable to create a log file for vpnkit-bridge in directory /root/.docker/desktop/log/host: creating /root/.docker/desktop/log/host: mkdir /root/.docker: read-only file system

I ran this command to find the desktop folder:

find / -name "desktop"

I got this:

/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/allowlist/rootfs/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/allowlist/tmp/upper/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/socks/rootfs/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/socks/tmp/upper/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/sntpc/rootfs/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/sntpc/tmp/upper/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/http-proxy/rootfs/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/http-proxy/tmp/upper/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/volume-contents/rootfs/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/volume-contents/tmp/upper/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/docker/rootfs/run/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/docker/rootfs/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/docker/tmp/upper/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/docker/tmp/upper/run/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/dns-forwarder/rootfs/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/dns-forwarder/tmp/upper/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/diagnose/rootfs/root/.docker/desktop
/var/lib/mount-services-cache/entries/services.tar/b847918d04f7fdcb717f385e0b9e794e0c5546b27b7b5261bef51db8c41e13d1/containers/services/diagnose/tmp/upper/root/.docker/desktop
/run/desktop
/containers/services/allowlist/rootfs/root/.docker/desktop
/containers/services/allowlist/tmp/upper/root/.docker/desktop
/containers/services/socks/rootfs/root/.docker/desktop
/containers/services/socks/tmp/upper/root/.docker/desktop
/containers/services/sntpc/rootfs/root/.docker/desktop
/containers/services/sntpc/tmp/upper/root/.docker/desktop
/containers/services/http-proxy/rootfs/root/.docker/desktop
/containers/services/http-proxy/tmp/upper/root/.docker/desktop
/containers/services/volume-contents/rootfs/root/.docker/desktop
/containers/services/volume-contents/tmp/upper/root/.docker/desktop
/containers/services/docker/rootfs/run/desktop
/containers/services/docker/rootfs/root/.docker/desktop
/containers/services/docker/tmp/upper/root/.docker/desktop
/containers/services/docker/tmp/upper/run/desktop
/containers/services/dns-forwarder/rootfs/root/.docker/desktop
/containers/services/dns-forwarder/tmp/upper/root/.docker/desktop
/containers/services/diagnose/rootfs/root/.docker/desktop
/containers/services/diagnose/tmp/upper/root/.docker/desktop
/containers/onboot/010-mount-services/tmp/upper/root/.docker/desktop
/containers/onboot/006-metadata/tmp/upper/root/.docker/desktop

So I checked this folder:

find /containers/services/docker/rootfs/root/.docker/desktop
/containers/services/docker/rootfs/root/.docker/desktop
/containers/services/docker/rootfs/root/.docker/desktop/log
/containers/services/docker/rootfs/root/.docker/desktop/log/host
/containers/services/docker/rootfs/root/.docker/desktop/log/host/lifecycle-server.log
ctr -n services.linuxkit container info vpnkit-forwarder

The output contains:

        "root": {
            "path": "/containers/services/vpnkit-forwarder/rootfs"
        },

So that readonly filesystem error was just a result and not the cause. For some reason, docker could not start and a systemc container had no permission to create log files to report that error (I guess). In my case I caused the issue manually, but I don’t know what happened in your case.