了解Hyperledger的最新知识,并尝试在Hyperledger-Fabric教程fabcar中运行,但是每次尝试在startFabric.sh脚本中创建通道时都遇到错误。
这是错误:
守护程序的错误响应:容器3640f4fca98aef120a2069292a3fc613954a0fbe7c625a31c2843ec643462未运行
运行所有先决条件和列出的命令,克隆最新的结构样本,更新节点,并尝试更长的启动时间。但是仍然有这个错误。如果有人知道我要去哪里错了,将非常感谢您提供一些帮助来解决。预先感谢。
也许值得一提的是,我正在Windows 7上运行并使用Docker Toolbox。
startFabric.sh输出如下所示。
$ ./startFabric.sh node
# don't rewrite paths for Windows Git Bash users
export MSYS_NO_PATHCONV=1
docker-compose -f docker-compose.yml down
Stopping ca.example.com ... done
Stopping couchdb ... done
Removing peer0.org1.example.com ... done
Removing orderer.example.com ... done
Removing ca.example.com ... done
Removing couchdb ... done
Removing network net_basic
docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb
Creating network "net_basic" with the default driver
Creating ca.example.com ... done
Creating couchdb ... done
Creating orderer.example.com ... done
Creating peer0.org1.example.com ... done
# wait for Hyperledger Fabric to start
# incase of errors when running later commands, issue export FABRIC_START_TIMEOUT=<larger number>
export FABRIC_START_TIMEOUT=10
#echo ${FABRIC_START_TIMEOUT}
sleep ${FABRIC_START_TIMEOUT}
# Create the channel
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx
Error response from daemon: Container 4ebfce361f3e71dd2d678efca1dbf1853cc5387b491f706917b8c54013ec6a80 is not running
docker ps输出:
$ docker ps
CONTAINER ID IMAGE COMMAND CRED STATUS PORTS AMES
2d93296f3cb1 hyperledger/fabric-couchdb "tini -- /docker-entâ¦" 13nutes ago Up 13 minutes 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcpcouchdb
6b8638d0ecaf hyperledger/fabric-ca "sh -c 'fabric-ca-seâ¦" 13nutes ago Up 13 minutes 0.0.0.0:7054->7054/tcp ca.example.com
docker ps -a输出:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4ebfce361f3e hyperledger/fabric-peer "peer node start" 15 minutes ago Exited (1) 15 minutes ago peer0.org1.example.com
1187120cdcd0 hyperledger/fabric-orderer "orderer" 15 minutes ago Exited (1) 15 minutes ago orderer.example.com
2d93296f3cb1 hyperledger/fabric-couchdb "tini -- /docker-entâ¦" 15 minutes ago Up 15 minutes 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp couchdb
6b8638d0ecaf hyperledger/fabric-ca "sh -c 'fabric-ca-seâ¦" 15 minutes ago Up 15 minutes 0.0.0.0:7054->7054/tcp ca.example.com
答案 0 :(得分:1)
对我来说,这个问题是由WSL(适用于Linux的Windows子系统-Windows 10上)向Docker的卷切换造成的。使用Kitematic查看您的Docker容器(请参阅下面的屏幕截图,并注意文件夹路径是如何弄乱的)。单击容器,然后转到“设置”和“音量”。手动更改音量使其正常运行。
就我而言,docker自动将\ c更改为C:
我可以使用以下技巧来解决该问题:https://superuser.com/questions/1195215/docker-client-on-wsl-creates-volume-path-problems/1203233 WSL将Windows驱动器安装在/ mnt /(因此/ mnt / c / = C :)。如果我们创建一个/ c /绑定点,这将使Docker正确地将其解释为C:\
流程如下:
使用以下命令集(一次一个)绑定驱动器并将结构下载到Windows用户目录中
sudo mkdir /c
sudo mount --bind /mnt/c /c
cd /c/Users/YOUR_WINDOWS_USERNAME #(go to C:\Users to see what its called)
mkdir blockchain #(or whatever you want to call it)
cd blockchain
curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz
tar -xvf fabric-dev-servers.tar.gz
cd ~/fabric-dev-servers
export FABRIC_VERSION=hlfv12
./downloadFabric.sh
现在您应该能够成功运行Fabric
./startFabric.sh
它可能会要求您与Docker共享C驱动器。您应该这样做。您可以在Kitematic中检查卷安装点和容器,如下所示:
答案 1 :(得分:0)
尝试做:
删除所有容器-docker rm -f $(docker ps -aq)
删除网络-docker网络修剪
删除链码映像(如果存在)-docker rmi dev-peer0.org1.example.com
重新启动docker
再次运行startFabric.sh。
希望可以帮助您。
答案 2 :(得分:0)
实际的问题是位置/etc/hyperledger/msp/peer/signcerts
无法访问。由于某种原因,Docker Toolbox似乎在主目录下寻找此位置。因此,使用以下命令检查Docker VM中的主目录
echo $HOME
(在我的情况下是C:/Users/knwny
),然后将fabric-samples文件夹放在该位置。
这为我解决了这个问题。
答案 3 :(得分:0)
通过重新运行结构安装准则来解决此问题:http://hyperledger-fabric.readthedocs.io/en/latest/prereqs.html
以下过程完全在具有管理员权限的Windows帐户中执行
初始步骤:
在Powershell中以管理员模式进行的所有后续操作
在Git Bash中运行以下命令,因为cURL在powershell中不起作用:
请注意,要使上述命令成功运行,我需要在外壳中运行Docker,即运行安装了start.sh脚本的Docker Toolbox(我在Git Bash中运行并运行正常)。
最后,在registerUser.js和enrollAdmin.js中,将本地主机更改为启动时在docker上指定的IP地址。
fabric_ca_client = new Fabric_CA_Client('http://localhost:7054', null , '', crypto_suite);
完成此操作后,我重新运行了Fabric-samples 1)first-network和2)fabcar示例,它们按预期工作!!我认为我错过了GoPath并且在我第一次尝试时没有成功安装cURL命令。
感谢Nhat Duy和knwny为您解决此问题提供的帮助。