Hyperledger Fabric安装链码报错docker build is disabled解决方法
问题描述
在Ubuntu终端执行Hyperledger Fabric链码安装命令:
kubectl hlf chaincode install --path=./chaincode --config=networkConfig.yaml --language=golang --label=supply --user=admin --peer=org1-peer1.fabric
执行后返回错误:
Error: Transaction processing for endorser [128.199.29.209:30906]: Chaincode status Code: (500) UNKNOWN. Description: failed to invoke backing implementation of 'InstallChaincode': could not build chaincode: docker build failed: docker build is disabled
问题原因
通过kubectl-hlf插件部署的Fabric网络,默认Peer节点配置禁用了Docker构建链码的能力,同时Peer容器默认未挂载宿主机Docker套接字,无法调用Docker服务完成链码镜像构建,最终导致安装失败。
解决步骤
- 修改Peer节点Deployment配置,开启Docker构建开关
找到org1-peer1.fabric对应的Peer工作负载,编辑容器环境变量,添加以下配置(镜像版本替换为当前部署的Fabric对应版本即可,比如2.4、2.5版本均可):- name: CORE_CHAINCODE_BUILDER value: hyperledger/fabric-ccenv:2.5 - name: CORE_PEER_CHAINCODEBUILDER_DOCKER_ENABLED value: "true" - 给Peer容器挂载宿主机Docker套接字
在Peer工作负载的volumes配置段添加宿主机Socket映射:
同时在Peer容器的volumeMounts配置段添加挂载规则:- name: docker-sock hostPath: path: /var/run/docker.sock type: Socket- name: docker-sock mountPath: /var/run/docker.sock - 等待Peer Pod重启就绪后,进入容器执行
docker info验证,能正常返回Docker服务信息即配置生效 - 重新执行原链码安装命令即可完成安装
若集群不允许挂载宿主机Docker套接字,可选择本地提前编译链码、打包为可直接运行的外部链码包,用外部链码模式安装,不需要Peer节点执行构建操作,也可绕过该报错。
内容的提问来源于stack exchange,提问作者unknown
相关产品推荐
相关产品推荐

