Fix "Docker daemon failed to start" error after (Mac) OS upgrade - macos

After getting numerous messages saying I should upgrade my OS, I have finally decided to upgrade to macOS Big Sur v11.6.1.
Unfortunately, docker doesn't work anymore.
I'm getting an error:
Fatal Error
Docker daemon failed to start
and
2021-12-07T09:47:14Z dockerd time="2021-12-07T09:47:14.957430297Z" level=debug msg="Calling GET /version"
I can see the option to Reset Docker to factory defaults but I'm afraid of resetting because it means I will also erase all my docker images.
Is there any easy way to fix this issue without erasing my work?

I get this fairly often on my Mac. I'm still on Big Sur.
This in the terminal seems to get me working (pay attention to the capitalisation):
pkill Docker
open -a /Applications/Docker.app

Related

Can't get Podman to run on an Mac M1 Monterey

I have done the following so far:
brew install qemu (apparently needed for podman, but want to use it for VMs anyway)
brew install podman
modify ~/.config/containers/containers.conf and add following line to [engine] section:
helper_binaries_dir = ["/Users/user/dev/homebrew/Cellar/podman/4.1.0/bin","/Users/user/dev/homebrew/Cellar/podman/4.1.0/libexec"]
podman machine init
podman machine start
Initially, machine start complained it could not dial up a unix socket at var/folders/v0/xqf571mj5sg5x7k4j1dpb1_w0000gn/T/podman/podman-machine-default_ready.sock. That file existed, so don't know what the problem was.
I rebooted to see if that would help, and now that socket file no longer exists, but podman machine start still wants to use it. Rerunning podman machine init just gives this error:
Error: podman-machine-default: VM already exists
That error always occurs once it successfully inits, so doesn't seem to be related to my issue.
That's as far as I can get from various web pages I read. Hopefully someone can provide further help :)
I've been away from using a Mac for over a decade, so really have no idea how stuff like podman is supposed to work, beyond it apparently needs QEMU to run a VM for each container.
Am I better off using Docker Desktop for Mac instead of fighting with podman? If so, I'll just use that. Podman was butt easy on my Linux desktop, but maybe it's not worth the trouble on a Mac, or at least on an M1 since it's an arm.
I had a similar issue yesterday, as have others. The solution comes from the issue thread linked in the comment above. The problem was resolved by downgrading the version of QEMU from the one currently available as default on homebrew.
You can downgrade to QEMU 6.2.0 on Monterrey with the following:
curl -L -H "Authorization: Bearer QQ==" -o qemu-6.2.0_1.monterey.bottle.tar.gz https://ghcr.io/v2/homebrew/core/qemu/blobs/sha256:fcc3b1a8139f70dae57f5449f3856f9b3b67448ee0623e64da1e47dc255b46f6
brew install -f qemu-6.2.0_1.monterey.bottle.tar.gz
After some time debugging, I found the cause of this problem.
This problem is caused due to qemu 7.0.0 startup latency (3-5s) that occour in every first qemu execution after Mac Machine machine boots.
Podman has some bug that doesn't expect that the creation of socks files, done by the qemu call, can be delayed some seconds, and when podman tries to access the socks files, the qemu is not created them yet, showing the error "Error: dial unix /podman/podman-machine-default_ready.sock: connect: connection refused".
To avoid this problem, just execute qemu, even with invalid options (just to initialize), before call "podman machine start".
After some time debugging, I found the cause of this problem.
This problem is caused due to qemu 7.0.0 startup latency (3-5s) that occour in every first qemu execution after Mac Machine machine boots.
Podman has some bug that doesn't expect that the creation of socks files, done by the qemu call, can be delayed some seconds, and when podman tries to access the socks files, the qemu is not created them yet, showing the error "Error: dial unix /podman/podman-machine-default_ready.sock: connect: connection refused".
To avoid this problem, just execute qemu, even with invalid options (just to initialize), before call "podman machine start".
echo "* Podman VM machine for MACOSX is stoped, starting..."
# workaround - initialize qemu before machine start to avoid socket error
/usr/local/bin/qemu-system-x86_64 -machine q35,accel=hvf:tcg -cpu host -display none INVALID_OPTION >> /dev/null 2>&1
podman machine start podman-machine-default
ECODE=$?;if [ $ECODE -ne 0 ];then echo "* Error starting podman linux vm machine: $ECODE";exit $ECODE;fi

Fatal Error: Docker daemon failed to start with Docker Desktop

I'm on MacOS 12.1. I downloaded Docker Desktop from the Docker site, but when starting it, I always get the following error:
level=error msg="Handler for GET /v1.24/services returned error: This node is not a swarm manager. Use \"docker swarm init\" or \"docker swarm join\" to connect this node to swarm and try again."
How can I resolve this problem? All the results I can find for this error already have the daemon started and working. I can't even get the daemon started. I haven't ever touched docker swarm.
Running any of the suggested commands fails because there is no running docker daemon.
Reseting to factory defaults does not resolve the issue.
Reinstalling Docker Desktop does not resolve the issue.
Reinstalling the Docker cli does not resolve the issue.
Restarting the machine does not resolve the issue.
What do I do to fix this issue?
What I ended up doing was uninstalling Homebrew. Apparently something there was causing issues, even though I didn't install Docker Desktop through brew, and made sure to uninstall all formulas that had anything to do with Docker. Exactly what caused this problem is a mystery still.
I had the same problem.
And I found this log is catched from ~/Library/Containers/com.docker.docker/Data/log/vm/dockerd.log
I try to restart Docker Desktop, but this log doesn't append any content. The strange thing is error Dialog display the same content, even time! Which means Docker Desktop never try to start docker daemon.
I try to close Wi-Fi, then Docker Desktop will start normally.
Check dockerd.log again, this print the same error with new time, but Docker Desktop running normally.
So I think there is some error relate Docker Desktop network process rather than docker daemon.
Additionally, maybe docker daemon printed this error because of network driver is overlay which require a swarm node.

Docker fails when run getting-started image

I installed the Docker Desktop Preview for M1 chipset's Mac. The installation was good and I didn't see any kind of error reported. However when I tried to run docker following the tutorial, I get the following error.
docker: Error response from daemon: dial unix docker.raw.sock: connect: no such file or directory
This is the command that show the error:
docker run -d -p 80:80 docker/getting-started
I don't know what I am missing, is there any way to fix this error? What is it due of?
EDIT: I fixed the issue running clean/purge the data. Now it seems to be working
See here, seems to be known issue: https://github.com/docker/for-mac/issues/5253

Kubernetes not starting in docker for Mac

I am running docker for Mac in latest Mojave. Tried to enable Kubernetes from the preferences. Since then the message is just 'kubernetes is starting'. But it never completes. I am confused as to what has to be done.
Is there anything that I need to change in the network config part?
Just before this, I tried a failed attempt of installing Minikube in the same machine.
I had this same issue on MacOS Catalina. Resetting to factory defaults did finally resolve the issue for me.
Select Troubleshoot from the drop down menu or preferences and click the bug. Then select Reset to factory defaults.
Obviously this is a destructive solution, so use with care.
For me was very useful:
stop docker for desktop
remove the folder ~/Library/Group\ Containers/group.com.docker/pki
rm -rf ~/Library/Group\ Containers/group.com.docker/pki
start docker for destkop
Found the solution here

OSX X11 Error cannot open display

I am trying to run any GUI container I can on MacOS. With every container I try (firefox, chrome, tor, spotify, etc) I always get the error Error: cannot open display. And it's not specific to the docker run command where I pass the environment flag with my $DISPLAY. When I try to run xhost + I get the same error.
I have a fresh XQuartz installation. It is up and running. I have turned on "allow connections from network" under security. I've tried building my own images and pulling jessie frazelle's images. I do not suspect it is a docker issue or the Dockerfiles. It is something on the host, my laptop. I can't seem to figure out what it is.
MacOS Sierra 10.12.5
Docker 17.12.0 Stable
XQuartz 2.7.11 (xorg-server 1.18.4)
My local's $DISPLAY is set to :0.0
So I finally got this to work. And it seems it was pretty simple. I am not certain how this actually fixes the issue, but now the containers work.
How I fixed it was opening up XQuartz and then opening up the "Terminal" app from the "Applications" menu. Then running the command export DISPLAY=192.168.1.X:0, then xhost +. It outputted something like this "access control disabled, clients can connect from any host". After that I was able to run my docker run commands to launch the desired GUI containers.
I am still uncertain how this works and not running them from my laptops Terminal app, but it worked. It must be something I have set in my local env. Hopefully this helps someone else out who may be running into the same issues.
Based on #Byron's answer, I've found out that I could get it to work by running these 2 commands in the normal terminal:
export DISPLAY=:0
/opt/X11/bin/xhost +

Resources