首页 > 解决方案 > 在 Hyperledger Fabric 上部署链码失败

问题描述

我正在尝试从 fabric-samples 文件夹运行示例测试网络,但由于某种原因,链码安装失败,给我一个错误。这是我尝试运行deployCC命令时得到的所有信息:

    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: cannot connect to Docker endpoint
Chaincode installation on peer0.org1 has failed
Deploying chaincode failed

$ ./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-java -ccl java
deploying chaincode on channel 'mychannel'
executing with the following
- CHANNEL_NAME: mychannel
- CC_NAME: basic
- CC_SRC_PATH: ../asset-transfer-basic/chaincode-java
- CC_SRC_LANGUAGE: java
- CC_VERSION: 1.0
- CC_SEQUENCE: 1
- CC_END_POLICY: NA
- CC_COLL_CONFIG: NA
- CC_INIT_FCN: NA
- DELAY: 3
- MAX_RETRY: 5
- VERBOSE: false
Compiling Java code...
~/Desktop/fabric-samples/asset-transfer-basic/chaincode-java ~/Desktop/fabric-samples/test-network
Starting a Gradle Daemon, 1 incompatible and 2 stopped Daemons could not be reused, use --status for details
<-------------> 0% INITIALIZING [118ms]
<-------------> 0% INITIALIZING [627ms]
<-------------> 0% CONFIGURING [919ms]
<-------------> 0% CONFIGURING [2s]
> root <==-----------> 20% EXECUTING [3s]
> r<======-------> 53% EXECUTING [3s]
<===========--> 86% EXECUTING [4s]tRuntimeClasspath

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.5.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 12s
10 actionable tasks: 2 executed, 8 up-to-date
~/Desktop/fabric-samples/test-network
Finished compiling Java code
+ peer lifecycle chaincode package basic.tar.gz --path ../asset-transfer-basic/chaincode-java/build/install/basic --lang java --label basic_1.0
+ res=0
Chaincode is packaged
Installing chaincode on peer0.org1...
Using organization 1
+ peer lifecycle chaincode install basic.tar.gz
+ res=1
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: cannot connect to Docker endpoint
Chaincode installation on peer0.org1 has failed
Deploying chaincode failed

我在 Docker for Windows 上运行它,不幸的是,我在 Internet 上找到的所有有用答案都与关闭 gRPC 功能有关,Windows 不支持该功能。

任何帮助将不胜感激,我已尝试卸载所有内容(包括二进制文件)并重新安装,但过去 2 天没有运气。

设置网络和通道创建工作没有错误/警告,所以我猜这是一个与 docker 相关的通信问题。

标签: dockerdocker-composehyperledger-fabrichyperledger

解决方案


问题是测试网络使用内置的链代码构建器和启动器,这需要在 Windows 设置上访问您的 docker。报告的错误是它无法连接到它。

如果您使用的是 fabric-samples 的主分支,则可以在窗口 shell 中启动测试网络之前尝试设置 DOCKER_SOCK 环境变量。看看https://docs.docker.com/desktop/faqs/看看你可以设置什么。另请查看在不安全的端口上公开 docker 守护程序的选项,这可能会有所帮助。

DOCKER_SOCK 选项已添加到 main 中的 fabric-samples 中,但似乎不在 2.2 分支中,因此请注意您在这里没有使用 Fabric LTS 版本

需要注意的是我没有尝试过,所以不能保证它会起作用

不幸的是,目前 Windows 在使用 Fabric 方面没有给予太多关注,所以我现在能给你的最好建议是使用 linux 作为你的平台(你可以使用 WSL2,但你应该谷歌将 docker 安装到 WSL2 发行版中,因为它确实需要一些额外的工作)


推荐阅读