簡體   English   中英

Hyperledger Fabric:撥打 unix /host/var/run/docker.sock:連接:沒有那個文件或目錄

[英]Hyperledger Fabric: dial unix /host/var/run/docker.sock: connect: no such file or directory

我們在嘗試實例化鏈碼時收到此錯誤:

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

我們怎樣才能解決這個問題?

編輯:除了我們沒有將/var/run安裝到容器之外,我們使用的配置與 [ 1 ] 幾乎相同。 根據 [ 2 ],這似乎是一個很大的安全漏洞

因為您不需要依賴於在容器中安裝/var/run/docker.sock 另一種選擇是通過tcp 連接啟用 docker 守護進程,然后將CORE_VM_ENDPOINT的值修改為CORE_VM_ENDPOINT=http://172.17.0.1:2375

考慮檢查您希望向哪個 IP 公開 API。

TL;DR:我們必須將/var/run掛載到 docker 容器才能使其工作。

回復:通過 tcp 公開 docker 守護進程,它對安全漏洞沒有任何影響,因為在這兩種情況下(文件掛載與 tcp)守護進程都暴露在容器中,這就是漏洞的所在。

如果我們嘗試將 CORE_VM_ENDPOINT 設置為http://172.17.0.1:2375 ,那么連接被拒絕的效果會出現一些錯誤,因為沒有人在監聽端口。

為了解決這個問題,似乎必須啟用dockerd -H ...守護進程( 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" >

我們在 MacOS 上使用 Docker Desktop 3.0+ 時遇到了同樣的問題,Hyperledger Fabric 1.4.3 實例化了一個智能合約。 我們將 Docker 版本更改為 2.5+,一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM