docker - Hyperledger Fabric:拨打 unix /host/var/run/docker.sock:连接:没有这样的文件或目录
问题描述
尝试实例化链码时出现此错误:
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 ] ,这似乎是一个很大的安全漏洞
解决方案
TL;DR:我们必须挂载/var/run
到 docker 容器才能使其工作。
回复:通过 tcp 暴露 docker 守护进程,这对安全漏洞没有任何影响,因为在这两种情况下(文件挂载与 tcp),守护进程已经暴露给容器,这就是漏洞所在。
如果我们尝试将 CORE_VM_ENDPOINT 设置为http://172.17.0.1:2375,则会出现连接被拒绝的错误,因为没有人在端口上监听。
要解决这个问题,似乎必须启用 docker daemon ( 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" >
推荐阅读
- python-3.x - 将列中的值与整数进行比较
- java - 使用 ArrayList 的挂钩方法
范围 - flutter - 检查输入的电话号码时,颤振表单验证不起作用
- xamarin - 有谁知道如何使 SfCalendar 的周视图漂亮?
- java - 如何在 Android 上使用 ServiceWorkerController
- python - Pygame:我的子弹类除了被绘制之外什么都不做
- ios - 使用多个按钮查看各自的转发视图
- c# - 如何在特定布局中添加表单?
- asp.net-core - 如何使用 ServiceLocator 按服务类型解析服务?
- javascript - 如何正确地从 Kotlin.js 开始