Mac环境下Pack无法通过Socket连Docker,Docker CLI却正常运行怎么办?
解决Mac上pack无法连接Docker Socket的问题
问题原因
Docker Desktop for Mac的Unix socket路径和Linux默认的/var/run/docker.sock不一样,pack工具默认会去这个Linux路径查找,导致连接失败,但Docker CLI已经适配了Mac的路径,所以能正常执行命令。
可行解决方案
方案1:手动创建软链接
在终端执行以下命令,把Mac上的Docker socket链接到pack预期的路径:
sudo ln -s ~/Library/Containers/com.docker.docker/Data/docker.sock /var/run/docker.sock
如果/var/run/docker.sock已经存在,先删除再创建:
sudo rm -f /var/run/docker.sock && sudo ln -s ~/Library/Containers/com.docker.docker/Data/docker.sock /var/run/docker.sock
方案2:临时设置环境变量
执行pack命令前,先指定正确的Docker socket路径:
export DOCKER_HOST=unix://$HOME/Library/Containers/com.docker.docker/Data/docker.sock
之后再运行你的构建命令:
pack build my-app --builder paketobuildpacks/builder:base
如果想让这个设置永久生效,把上面的export命令添加到~/.zshrc(zsh终端)或~/.bash_profile(bash终端)里,然后执行source ~/.zshrc或source ~/.bash_profile让设置立即生效。
方案3:通过Docker Desktop自动配置
打开Docker Desktop,进入Settings -> General,找到「Allow the default Docker socket to be used」选项并勾选。这个选项会自动创建/var/run/docker.sock的软链接,不用手动操作。
完成以上任一操作后,重新运行pack构建命令即可正常连接Docker daemon。
内容的提问来源于stack exchange,提问作者Jakub Holý
相关产品推荐
相关产品推荐

