Mac上的 Pack无法通过套接字连接到docker(但docker CLI工作正常)



尝试在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-但dockerCLI本身工作得很好。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替换为您各自的文件

相关内容

  • 没有找到相关文章

最新更新