Fabric鏈碼安裝成功卻實例化失敗,提示“chaincode registration failed: container exited with 0”是什么原因?

fabric鏈碼實例化失敗排查:安裝成功卻提示“chaincode registration failed: container exited with 0”

本文分析并解決了一個Fabric鏈碼實例化失敗的問題。問題現象:官方demo鏈碼安裝成功,但實例化時報錯“chaincode registration failed: container exited with 0”,init方法僅返回錯誤字符串

鏈碼代碼片段:

func (t *simplechaincode) init(stub shim.chaincodestubinterface) pb.response {     return shim.error("hello") }

安裝與實例化命令:

# 安裝鏈碼 peer chaincode install -n mycca -v 1.0 -p chaincode/  # 實例化鏈碼 peer chaincode instantiate -o orderer0.adminnodborderer:7050 --tls --cafile /etc/hyperledger/crypto-config/ordererorganizations/adminnodborderer/orderers/orderer0.adminnodborderer/msp/tlscacerts/tlsca.adminnodborderer-cert.pem -c myc -n mycca -v 1.0 -c '{"args":["init"]}'

安裝成功,但實例化失敗,返回500錯誤碼。 經排查,問題源于docker服務的DNS配置。

解決方案: 修改/lib/systemd/system/docker.service文件,在ExecStart參數后添加DNS配置,確保Docker容器能正確解析域名。

  1. 編輯/lib/systemd/system/docker.service文件:

    sudo vim /lib/systemd/system/docker.service
  2. 在ExecStart參數后添加以下DNS配置:

    --dns=10.96.0.10 --dns=192.168.0.1 --dns-search default.svc.cluster.local --dns-search svc.cluster.local --dns-opt ndots:2 --dns-opt timeout:2 --dns-opt attempts:2

    其中10.96.0.10為kube-dns IP地址,192.168.0.1為宿主機DNS地址。 kubernetes集群環境下,需在每個worker節點執行此操作。

  3. 重啟Docker服務:

    sudo systemctl daemon-reload && sudo systemctl restart docker

通過以上步驟,即可解決鏈碼實例化失敗的問題。 請根據實際環境調整DNS地址。

Fabric鏈碼安裝成功卻實例化失敗,提示“chaincode registration failed: container exited with 0”是什么原因?

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享