MacOS编译Cosmos生态区块链项目时Docker拉取golang镜像报错的解决求助
看起来你遇到的是MacOS上Docker拉取官方镜像时的凭证获取异常问题,我之前在调试类似区块链项目时也碰到过几乎一模一样的报错,给你几个实用的排查和解决步骤:
检查Docker凭证助手配置
打开Docker Desktop的偏好设置(Settings),切换到Docker Engine标签页,看看配置里有没有"credsStore": "osxkeychain"这一行。MacOS上的docker-credential-osxkeychain有时候会出现异常,导致Docker无法正常获取拉取镜像的凭证。
你可以先把这一行注释掉(在前面加//),然后点击Apply & Restart重启Docker,之后再尝试编译项目。如果是通过命令行修改的话,直接编辑~/.docker/config.json文件,移除或注释掉credsStore相关配置即可。修复或重新安装Docker凭证助手
打开终端,运行以下命令测试凭证助手是否正常工作:docker-credential-osxkeychain list如果这条命令报错,说明凭证助手确实有问题。可以通过Homebrew重新安装它:
brew install docker-credential-helper安装完成后再重新运行测试命令,要是能正常输出(哪怕是空内容),说明助手已经恢复,重启Docker后再尝试拉取镜像。
手动拉取所需镜像绕过问题
如果上面的方法都没起效,你可以先手动拉取项目需要的golang镜像:docker pull golang:1.20.1-alpine3.17等镜像拉取成功后,回到项目目录重新执行编译命令,此时Docker会直接使用本地已有的镜像,不需要再去远程仓库拉取,就能绕过这个凭证错误了。
排查网络相关问题
有时候看似是凭证错误,实际可能是网络代理或DNS解析问题导致Docker无法正常连接镜像仓库。你可以试试关闭系统代理,或者在Docker Desktop的偏好设置>Network里,把DNS服务器改为8.8.8.8,重启Docker后再尝试编译。
备注:内容来源于stack exchange,提问作者0xVitalii

