我尝试将/ var / hyperledger / production文件夹安装到主机(我正在使用Windows 7并通过Docker ToolBox运行Docker),以便在我的Hyperledger对等Docker容器退出时保留注册证书。
这是我使用的命令:
docker run --name c_vp0 --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v /c/Users/hyperledger/production:/var/hyperledger/production -e CORE_VM_ENDPOINT=unix:///var/run/docker.sock -e CORE_PEER_ID=vp0 -e CORE_PEER_ADDRESSAUTODETECT=true -e CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=noop -e CORE_LOGGING_LEVEL=ERROR -e CORE_SECURITY_ENABLED=true -e CORE_SECURITY_PRIVACY=true -e CORE_PEER_PKI_ECA_PADDR=172.17.0.50:7054 -e CORE_PEER_PKI_TCA_PADDR=172.17.0.50:7054 -e CORE_PEER_PKI_TLSCA_PADDR=172.17.0.50:7054 -e CORE_SECURITY_ENROLLID=test_vp0 -e CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT hyperledger/fabric-peer peer node start
但是,我遇到以下错误:
panic: Error opening DB: IO error: directory: Invalid argument
我将命令“peer node start”修改为“/ bin / bash”,以便可以检查安装的目录。我注意到/ var / hyperledger / production(及其子目录和文件)的所有权/组是1000:staff,而不是root:root。
我不确定这是否是导致问题的原因,但是我尝试使用chown命令将所有权/组更改为root:root,但它不起作用。
最佳答案
leveldb与VirtualBox使用的vboxfs(see example here)之间似乎不兼容。我不确定谁出错了,但是在没有vboxfs的卷上使用leveldb时,搜索结果显示成功。
从使用VirtualBox的Docker Toolbox升级到Docker for Windows,后者使用Window的内置Hyper-V虚拟化技术。
如果您无法运行适用于Windows的Docker(例如,您需要将Windows 7升级到至少Windows 10,请尝试通过其他方法(例如NFS)将/var/hyperledger/production
挂载到您的主机文件夹中。
关于docker - 为什么将/var/hyperledger/production安装到主机卷上会导致错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41498894/