在运行fabcar期间创建通道时出现容器错误(fabric-sample)

时间:2018-06-30 06:37:17

标签: hyperledger-fabric

了解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

4 个答案:

答案 0 :(得分:1)

对我来说,这个问题是由WSL(适用于Linux的Windows子系统-Windows 10上)向Docker的卷切换造成的。使用Kitematic查看您的Docker容器(请参阅下面的屏幕截图,并注意文件夹路径是如何弄乱的)。单击容器,然后转到“设置”和“音量”。手动更改音量使其正常运行。

就我而言,docker自动将\ c更改为C: image

我可以使用以下技巧来解决该问题: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中检查卷安装点和容器,如下所示:

image

答案 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帐户中执行

初始步骤:

  • 设置GOPATH环境变量
  • 检查Go是否正确构建可执行文件

在Powershell中以管理员模式进行的所有后续操作

  • 运行npm install npm@5.6.0 -g
  • sudo apt-get install python(请注意,对于我来说,此命令失败,但是仍然有python,并且由于找不到sudo而似乎工作正常)
  • 检查python 2.7是否正确安装
  • 设置git config --global core.autocrlf false
  • 将git config --global core.longpaths设置为真
  • 运行npm install --global Windows-build-tools
  • Ran npm install --global grpc

在Git Bash中运行以下命令,因为cURL在powershell中不起作用:

  • curl -sSL http:/ /bit.ly/2ysbOFE | bash -s 1.2.0

请注意,要使上述命令成功运行,我需要在外壳中运行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为您解决此问题提供的帮助。