Hyperledger Fabric:拨打unix /host/var/run/docker.sock:connect:没有这样的文件或目录

问题描述 投票:0回答:2

我们在尝试实例化链码时遇到此错误:

2019-03-14 23:17:01.917 UTC [dockercontroller] Start -> ERRO 152d start-could not recreate container <dev-peer1-kp-mycc-1.0>, because of Post http://unix.sock/containers/create?name=dev-peer1-kp-mycc-1.0: dial unix /host/var/run/docker.sock: connect: no such file or directory

我们可以在主机上看到一个文件/var/run/docker.sock

$ ls /var/run/docker.sock
/var/run/docker.sock

我们怎么解决这个问题?

编辑:我们使用与[1]完全相同的配置,除了我们没有将/var/run安装到容器中。根据[2],这似乎是一个很大的安全循环漏洞

docker hyperledger-fabric
2个回答
0
投票

因为您不需要依赖于在容器中安装/var/run/docker.sock。您可以通过tcp connection启用docker守护程序,然后修改CORE_VM_ENDPOINT的值以成为CORE_VM_ENDPOINT=http://172.17.0.1:2375的另一个选项

请考虑检查要向其公开API的IP。


0
投票

TL; DR:我们必须将/var/run安装到docker容器才能使其工作。

Re:在tcp上暴露docker守护进程,它与w.r.t没有任何区别。安全漏洞,因为在这两种情况下(文件安装与tcp),守护程序已暴露给容器,这是漏洞的含义。

如果我们尝试将CORE_VM_ENDPOINT设置为http://172.17.0.1:2375,则连接拒绝的效果会有一些错误,因为没有人监听端口。

要解决此问题,似乎必须启用docker守护程序(dockerd -H ...)。我们尝试这样做,但得到一些错误说PID存在。看起来必须重启守护进程,我们不想这样做。所以我们选择了文件挂载选项。

我们以为我们会在实例化链代码后关闭对等体,从而处理安全漏洞,但如果我们这样做,那么调用链代码就会失败,因为再次调用依赖于与守护进程的通信。

2019-03-18 23:23:39.108 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> DEBU 04d ESCC invoke result: response:<status:500 message:"failed to execute transaction 9c8928ffda960c89225682d0c4d0936342b60c687dd7ea0547378a88fd5f6749: [channel dscsa] could not launch chaincode mycc:1.0: error starting container: error starting container: Post http://unix.sock/containers/create?name=dev-peer1-kp-mycc-1.0: dial unix /host/var/run/docker.sock: connect: no such file or directory" >
© www.soinside.com 2019 - 2024. All rights reserved.