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

ezykj2lf  于 2023-11-17  发布在  Docker
关注(0)|答案(1)|浏览(205)

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

  1. 192.168.189.134 orderer.example.com
  2. 192.168.189.134 peer0.org1.example.com
  3. 192.168.189.128 peer0.org2.example.com
  4. 192.168.189.132 peer0.org4.example.com
  5. 192.168.189.133 peer0.org3.example.com

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

  1. `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"]}'`
  2. `**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容器日志:

  1. `**[root@localhost chaincodes]# docker logs 53e556904589
  2. 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类似于此):

  1. `version: '2'
  2. services:
  3. couchdb0.org1.example.com:
  4. container_name: couchdb0.org1.example.com
  5. image: couchdb:3.1
  6. environment:
  7. - COUCHDB_USER=admin
  8. - COUCHDB_PASSWORD=adminpw
  9. ports:
  10. - 5984:5984
  11. peer0.org1.example.com:
  12. container_name: peer0.org1.example.com
  13. image: hyperledger/fabric-peer:2.2.0
  14. environment:
  15. - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
  16. - CORE_PEER_ID=peer0.org1.example.com
  17. - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
  18. - CORE_PEER_LISTENADDRESS=0.0.0.0:7051
  19. - CORE_PEER_CHAINCODEADDRESS=peer0.org1.example.com:7052
  20. - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
  21. - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
  22. - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
  23. - CORE_PEER_LOCALMSPID=Org1MSP
  24. - FABRIC_LOGGING_SPEC=INFO
  25. - CORE_PEER_TLS_ENABLED=true
  26. - CORE_PEER_GOSSIP_USELEADERELECTION=true
  27. - CORE_PEER_GOSSIP_ORGLEADER=false
  28. - CORE_PEER_PROFILE_ENABLED=true
  29. - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
  30. - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
  31. - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
  32. - CORE_CHAINCODE_EXECUTETIMEOUT=300s
  33. - CORE_LEDGER_STATE_STATEDATABASE=CouchDB
  34. - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0.org1.example.com:5984
  35. - CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=admin
  36. - CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=adminpw
  37. depends_on:
  38. - couchdb0.org1.example.com
  39. working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
  40. command: peer node start
  41. volumes:
  42. - /var/run/:/host/var/run/
  43. - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
  44. - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
  45. ports:
  46. - 7051:7051
  47. - 7052:7052
  48. - 7053:7053
  49. extra_hosts:
  50. - "orderer.example.com:192.168.189.134"
  51. - "peer0.org1.example.com:192.168.189.134"
  52. - "peer0.org2.example.com:192.168.189.128"
  53. - "peer0.org3.example.com:192.168.189.133"
  54. - "peer0.org4.example.com:192.168.189.132"
  55. cli:
  56. container_name: cli
  57. image: hyperledger/fabric-tools:2.2.0
  58. tty: true
  59. stdin_open: true
  60. environment:
  61. - GOPATH=/opt/gopath
  62. - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
  63. - FABRIC_LOGGING_SPEC=INFO
  64. - CORE_PEER_ID=cli
  65. - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
  66. - CORE_PEER_LOCALMSPID=Org1MSP
  67. - CORE_PEER_TLS_ENABLED=true
  68. - 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
  69. - 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
  70. - 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
  71. - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp
  72. working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
  73. command: /bin/bash
  74. volumes:
  75. - /var/run/:/host/var/run/
  76. - ./chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric-cluster/chaincode/go
  77. - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
  78. - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
  79. extra_hosts:
  80. - "orderer.example.com:192.168.189.134"
  81. - "peer0.org1.example.com:192.168.189.134"
  82. - "peer0.org2.example.com:192.168.189.128"
  83. - "peer0.org3.example.com:192.168.189.133"
  84. - "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地址是否可访问。
希望我的回答给予你一些调试的思路

相关问题