docker 结构多机网络构造无法示例化链代码

ezykj2lf  于 11个月前  发布在  Docker
关注(0)|答案(1)|浏览(135)

我使用vmware来设置我的多主机网络,**一个排序器和peer0.org1在虚拟机上启动,其他三个对等体中的每一个都在VM上启动,**i Vim /etc/host如下所示:

192.168.189.134 orderer.example.com
192.168.189.134 peer0.org1.example.com
192.168.189.128 peer0.org2.example.com
192.168.189.132 peer0.org4.example.com
192.168.189.133 peer0.org3.example.com

字符串
一切似乎都很完美,直到示例化chaincode,官方示例sacc。我这样示例化chaincode,得到错误:

`bash-5.0# peer chaincode invoke -o orderer.example.com:7050 --isInit --ordererTLSHostnameOverride orderer.example.com --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n sacc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt --peerAddresses peer0.org3.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt --peerAddresses peer0.org4.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org4.example.com/peers/peer0.org4.example.com/tls/ca.crt -c '{"Args":["a","bb"]}'`

`**Error: endorsement failure during invoke. response: status:500 message:"error in simulation: failed to execute transaction d1468605d358e7a99a12dcb4c3412ed6289bda7ea495212d6d4aa1375844c7c8: could not launch chaincode sacc_1:04d2157f61b08cb0d563327085d4af430647a0a8ceece753ee0054befc74c9a3: chaincode registration failed: container exited with 0" **`


我不知道为什么,我也检查了chaincode容器日志:

`**[root@localhost chaincodes]# docker logs 53e556904589 
Error starting SimpleAsset chaincode: connection error: desc = "transport: error while dialing: dial tcp: lookup peer0.org1.example.com on 192.168.189.2:53: no such host"[root@localhost chaincodes]# **`


我曾多次尝试重新启动以构建网络,每一步都没问题,但示例化了链码
我使用docker-compose来构建peer(其他peer类似于此):

`version: '2'

services:
  couchdb0.org1.example.com:
    container_name: couchdb0.org1.example.com
    image: couchdb:3.1
    environment:
      - COUCHDB_USER=admin
      - COUCHDB_PASSWORD=adminpw
    ports:
      - 5984:5984

  peer0.org1.example.com:
    container_name: peer0.org1.example.com
    image: hyperledger/fabric-peer:2.2.0
    environment:
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      - CORE_PEER_ID=peer0.org1.example.com
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_LISTENADDRESS=0.0.0.0:7051
      - CORE_PEER_CHAINCODEADDRESS=peer0.org1.example.com:7052
      - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - FABRIC_LOGGING_SPEC=INFO
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false
      - CORE_PEER_PROFILE_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
      - CORE_CHAINCODE_EXECUTETIMEOUT=300s
      - CORE_LEDGER_STATE_STATEDATABASE=CouchDB
      - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0.org1.example.com:5984
      - CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=admin
      - CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=adminpw
    depends_on:
      - couchdb0.org1.example.com

    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: peer node start
    volumes:
      - /var/run/:/host/var/run/
      - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
      - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
    ports:
      - 7051:7051
      - 7052:7052
      - 7053:7053
    extra_hosts:
      - "orderer.example.com:192.168.189.134"
      - "peer0.org1.example.com:192.168.189.134"
      - "peer0.org2.example.com:192.168.189.128"
      - "peer0.org3.example.com:192.168.189.133"
      - "peer0.org4.example.com:192.168.189.132"   
  cli:
    container_name: cli
    image: hyperledger/fabric-tools:2.2.0
    tty: true
    stdin_open: true
    environment:
      - GOPATH=/opt/gopath
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      - FABRIC_LOGGING_SPEC=INFO
      - CORE_PEER_ID=cli
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: /bin/bash
    volumes:
      - /var/run/:/host/var/run/
      - ./chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric-cluster/chaincode/go
      - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
      - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
    extra_hosts:
      - "orderer.example.com:192.168.189.134"
      - "peer0.org1.example.com:192.168.189.134"
      - "peer0.org2.example.com:192.168.189.128"
      - "peer0.org3.example.com:192.168.189.133"
      - "peer0.org4.example.com:192.168.189.132" `


我以为日志是指当chaincode容器启动时,它ping了peer0.org1.example.com(192.168.189.2:53是我的网关IP),但无法立即连接和退出(意味着chaincode容器死亡?)。我试图手动启动chaincode容器,但当我通过docker ps -a检查时,chaincode容器再次退出。
有人能帮我吗?

mznpcxlj

mznpcxlj1#

看起来你面临的错误表明链码容器和你的对等节点之间的通信有问题,特别是DNS解析问题。
有时,DNS解析的问题可能与Docker本身有关。请尝试在VM上重新启动Docker服务,看看是否可以解决问题。
另外,检查/etc/hosts文件,对等体和排序者的条目是否正确,IP地址是否可访问。
希望我的回答给予你一些调试的思路

相关问题