【问题标题】:Error while trying to join peer to channel in fabric尝试在结构中加入对等通道时出错
【发布时间】:2018-04-29 15:03:01
【问题描述】:

我正在尝试构建具有两个通道的结构网络。一个对等点能够加入频道,但在尝试将第二个对等点加入频道时出现以下错误:

错误:找不到创世块文件打开 mychannel.block:没有这样的文件或目录

这是我用于创建频道和加入同行的代码:

创建频道:

docker exec -e "CORE_PEER_LOCALMSPID=Org2MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org2.example.com/msp" peer0.org2.example.com peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx

加入同行:

docker exec -e "CORE_PEER_LOCALMSPID=Org2MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org2.example.com/msp" peer0.org2.example.com peer channel join -b mychannel.block

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 join -b mychannel.block

如有错误请指正。

【问题讨论】:

  • 如果您也解决了,能否分享一下解决方案!

标签: hyperledger-fabric


【解决方案1】:

问题在于 mychannel.block 仅在 peer0.org2.example.com 容器中可用(因为这是您运行频道创建命令的容器)。 peer0.org1.example.com 容器无权访问 mychannel.block,这就是您收到错误的原因。

您需要做的是实际上必须为两个容器安装一个共享卷,并确保您在运行通道创建时在共享卷中输出 mychannel.block

【讨论】:

  • 如何为 2 个容器挂载共享卷?我是面料新手。谢谢。
  • @Saya22K 与 Fabric 无关。这是一个码头工人问题。
【解决方案2】:

我在相同的情况下运行并找到了解决方案。 由于 mychannel.block 只有 peer0.org2.example.com 容器知道,所有的连接都必须从那里完成。 对于第二个同行,您可以发出:

docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" -e "peer0.org1.example.com:7051" peer0 .org2.example.com peer channel join -b mychannel.block

M

【讨论】:

  • 你能澄清一下-e "peer0.org1.example.com:7051"在命令行中的含义吗?
【解决方案3】:

您需要检查您的 docker-compose.yaml 文件以了解您如何在其中映射卷

在两个peer的定义中,确保有一个共同的映射卷,例如在peer0中你可能有这样的东西;

    volumes:
    - /var/run/:/host/var/run/
    - ./:/etc/hyperledger/configtx
    - ./crypto-config/peers/peer0/msp:/etc/hyperledger/peer/msp
    - ./crypto-config/users/user0/msp:/etc/hyperledger/msp/users

在你的 peer1 中你可能有;

    volumes:
    - /var/run/:/host/var/run/
    - ./:/etc/hyperledger/configtx
    - ./crypto-config/peers/peer1/msp:/etc/hyperledger/peer/msp
    - ./crypto-config/users/user1/msp:/etc/hyperledger/msp/users

您可以看到这里有两个共享卷映射,每个定义中的前两个指向示例位置。

所以要明确一点,卷映射定义如下:

[path on local machine]:[path to map in docker image]

【讨论】:

    【解决方案4】:

    我遇到了同样的问题,但情况略有不同:我在一个组织 (org1) 中有两个同行 (peer0peer1)。我使用以下命令将它们加入同一个频道,并且可以正常工作:

    //Join peer0.org1.example.com to 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 join -b mychannel.block
    
    //Join peer1.org1.example.com to the channel.
    
    docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e 
    "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" -e "CORE_PEER_ADDRESS=peer1.org1.example.com:7051" peer0.org1.example.com peer 
    channel join -b mychannel.block
    

    【讨论】:

      【解决方案5】:

      这个问题是由于在 peer0.org1.example.com 中找不到 mychannel.block 您可以将 mychannel.block 从 peer0.org2.example.com 复制到 peer0.org1.example.com

      试试这些命令

      docker cp peer0.org2.example.com:/opt/gopath/src/github.com/hyperledger/fabric/mychannel.block mychannel.block
      
      
      docker cp mychannel.block peer0.org1.example.com:/opt/gopath/src/github.com/hyperledger/fabric/
      
      sudo rm mychannel.block
      

      现在尝试将 peer0.org1.example.com 重新加入我的频道。

      【讨论】:

        猜你喜欢
        • 2018-03-15
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 2020-06-05
        • 2013-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多