You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac M1 Pro上Hyperledger Fabric链码安装报错求助

解决Mac M1 Pro上Hyperledger Fabric链码安装Docker Socket访问失败问题

问题场景

在Mac M1 Pro设备上使用Docker Desktop v4.32.0部署Hyperledger Fabric v2.2.7双组织网络,Peer、CA、Orderer容器均正常运行,但执行链码安装命令:

peer lifecycle chaincode install snb-chaincode-chitgroup-act.tar.gz

时出现如下错误:

Error: chaincode install failed with status: 500 - failed to invoke backing implementation of 'InstallChaincode': could not build chaincode: docker build failed: docker image inspection failed: Get "http://unix.sock/images/prod-peer1.regulatororg.snbchain.com-snb-chaincode-chitgroup-act_1-e57cbc6399c641f23b9fc09c8777213886c981ee483d545f47c89d1ce7662d9n-38a9c951ca5cfece43263dd8043dc218f2cb9171cf38610474815d5bb595176/json": dial unix /host/var/run/docker.sock: connect: no such file or directory

已完成的配置:

  • 启用Docker Desktop的"Allow the default Docker socket to be used (requires password)"选项
  • 本地/var/run/docker.sock为指向/Users/sridharreddyu/.docker/run/docker.sock的软链接
  • Peer容器Compose配置已设置CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock,并挂载/var/run/:/host/var/run/

解决方法

1. 直接挂载实际Docker Socket文件(核心步骤)

容器内无法解析宿主机的软链接路径,将Peer容器的卷挂载配置从挂载目录改为直接挂载实际socket文件:
修改Docker Compose中Peer服务的volumes字段:

volumes:
  # 替换原有的 /var/run/:/host/var/run/
  - /Users/sridharreddyu/.docker/run/docker.sock:/host/var/run/docker.sock
  # 保留其他必要挂载项

修改后重启Peer容器:

docker-compose restart peer1.regulatororg.snbchain.com

2. 检查并调整Docker Socket权限

宿主机上执行以下命令,确认socket文件权限:

ls -l /Users/sridharreddyu/.docker/run/docker.sock

如果当前用户无访问权限,可临时调整权限(测试环境适用,生产环境建议通过用户组配置):

sudo chmod 666 /Users/sridharreddyu/.docker/run/docker.sock

3. 配置链码容器网络模式

在Peer容器的环境变量中添加网络模式配置,确保链码容器加入Fabric专用网络:

environment:
  # 原有环境变量保留
  - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=snbchain  # 替换为你的Fabric网络名称

4. 启用M1专属虚拟化框架

打开Docker Desktop设置 → Features in development,勾选"Use the new Virtualization framework",重启Docker Desktop。该选项可解决M1芯片上部分虚拟化兼容性问题。

5. 验证容器内Socket访问

进入Peer容器,执行命令验证socket连通性:

docker exec -it peer1.regulatororg.snbchain.com bash
curl --unix-socket /host/var/run/docker.sock http://localhost/version

若返回Docker版本信息,说明socket访问正常。

内容的提问来源于stack exchange,提问作者Sidhu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 15:28:11