Fabric中Orderer容器启动挂掉——解决方案
Orderer日志报错
查看docker日志
docker logs 容器名
具体报错 :前两条是警告消息(黄色),更容易引起我们的注意,但是真正引起容器挂掉的原因是最后一条(绿色),所以我们在看日志的时候要从第一条开始看,这样更容易查到出错的地方。
1.Failed connecting to {"CAs":[{"Expired":false,"Issuer":"self","Subject":"CN=tlsca.example.com,O=example.com,L=San Francisco,ST=California,C=US"}],"Endpoint":"orderer.example.com:7050"}: failed to create new connection: connection error: desc = "transport: error while dialing: dial tcp: lookup orderer.example.com on 127.0.0.11:53: no such host" channel=mtest-channel
2.Failed pulling system channel: failed obtaining the latest block for channel mtest-channel panic: Failed pulling system channel: failed obtaining the latest block for channel mtest-channel
3.Not bootstrapping because of 1 existing channels
说明在启动之前已经存在了一条通道
引起错误原因
之前启动过Orderer容器,然后通过docker-compose -f xxx.yaml down命令之后,虽然docker容器删除了,但是容器内部的虚拟卷并没有清除,之前部署出来的文件依旧还在里面。
解决步骤
然后通过以下命令,可以看到channel-artifacts里面已经有了channel.tx,之后可以把它删除。
docker exec -it cli bash
根据报错来说,走到这里,然后重启一下docker-compose应该就好了,但是我在走得时候,依然报错,然后我又将容器中的虚拟卷删除就好了。
docker volume ls //查看当前宿主机上有哪些 volume:
显示已经启动的虚拟卷
local multimachine_orderer0.example.com
local multimachine_peer0.org1.example.com
local multimachine_peer1.org1.example.com
root@node57:/home/script/fabric-samples/multimachine# docker volume rm multimachine_orderer0.example.com
multimachine_orderer0.example.com
然后删除Orderer相关的虚拟卷
docker volume rm VOLUME_NAME 删除对应的无用的volume
最终解决。