Preamble:
I still use Docker desktop to run containers on my MacBook Air. I know there's Colima but have no time to switch and deal with the consequences.
I also recently started using ko for containerizing my Go apps.
ko is Great but...
I love ko - it builds distroless secure and slim images. But there's one issue - by default - ko build
pushes the resulting image to the remote registry.
It's kinda fine for continuous delivery, but I do a lot of experiments and I don't always want to publish all the garbage I create to remote - trying to be considerate of network bandwidth and image storage.
So instead I want to build my images to the local image storage.
It's possible to do that with ko build . -L
Just that on MacOs this was failing for me with the following:
2024/07/22 15:52:50 Loading otomato/myapp:717e6196339c956bc878bd58f5ab8244a709dc0510051f9e6df72620f28a2aaa
2024/07/22 15:52:50 daemon.Write response:
Error: failed to publish images: error publishing ko://github.com/otomato/myapp: error loading image: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Calling the Docker daemon
Clearly the docker client inside ko
is trying to contact Docker daemon on the standard socket and failing.
I tried googling for this error but didn't find anything. So I decided to solve it myself.
Here's the thing - on MacOS the Docker socket isn't the standard /var/run/docker.sock
- instead it's at ~/Library/Containers/com.docker.docker/Data/docker.raw.sock
The Solution
In order to fix this what I needed to do is create a symlink from the actual Docker socket to where the standard Docker client expects to find it:
sudo ln -s ~/Library/Containers/com.docker.docker/Data/docker.raw.sock /var/run/docker.sock
Now that Docker daemon can be contacted via the standard socket address - ko can push images to it:
ko build . -B -L --platform linux/arm64
2024/07/22 16:04:04 Building github.com/otomato/myapp for linux/arm64
2024/07/22 16:04:04 Loading otomato/myapp:717e6196339c956bc878bd58f5ab8244a709dc0510051f9e6df72620f28a2aaa
2024/07/22 16:04:05 Loaded otomato/myapp:717e6196339c956bc878bd58f5ab8244a709dc0510051f9e6df72620f28a2aaa
2024/07/22 16:04:05 Adding tag latest
2024/07/22 16:04:05 Added tag latest
otomato/myapp:717e6196339c956bc878bd58f5ab8244a709dc0510051f9e6df72620f28a2aaa
Meanwhile I also opened an issue on the ko
repo. But until it's fixed - this hack works like charm.
Hope this helps you too.
Top comments (0)