尝试在Mac上运行pack
构建云原生构建包,它失败了,抱怨没有找到预期的Docker套接字,通常是:
pack build my-app --builder paketobuildpacks/builder:base
ERROR: failed to build: failed to fetch builder image 'index.docker.io/paketobuildpacks/builder:base':
Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
Is the docker daemon running?
但是所有的docker CLI命令,如docker ps
工作得很好。我正在运行Mac版Docker桌面。
说明
问题原来是Docker Desktop使用不同的套接字。它的工作原理是因为docker命令行被自动设置为使用正确的"上下文"。看到:
我也遇到了这个问题(与Mac的Docker桌面),其中pack build ...
无法连接b/c我没有/var/run/docker.sock
-但docker
CLI本身工作得很好。docker上下文解释了为什么会这样:
$ docker context list
NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default moby Current DOCKER_HOST based configuration unix:///var/run/docker.sock https://kubernetes.docker.internal:6443 (default) swarm
desktop-linux * moby unix:///Users/me/.docker/run/docker.sock
$ docker context show
desktop-linux
所以default
上下文使用标准套接字,但不是活动的,套接字不存在。相反,活动上下文是desktop-linux
,它使用用户的主目录(确实存在)中的套接字。
有一个开放的(3/2023)包问题,使用docker上下文自动获取正确的主机。
解决方案解决方案是将包指向正确的套接字:
env DOCKER_HOST=unix:///Users/me/.docker/run/docker.sock pack build my-app
--builder paketobuildpacks/builder:base
永久修复问题
echo export DOCKER_HOST=unix:///Users/kiplangatvictor/.docker/run/docker.sock >> ~/.zshrc
将.zsshrc替换为您各自的文件