为什么将/ var / hyperledger / production安装到主机卷导致错误?

我尝试将/ var / hyperledger / production文件夹挂载到主机(我正在使用Windows 7并通过Docker ToolBox运行Docker),以便在我的hyperledger对等端口容器退出时保留注册证书。

这是我用的命令:

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似乎有不兼容的地方( 请看这里的例子 )。 我不确定哪些人有问题,但是在未安装vboxfs的卷上使用leveldb时,search结果显示成功。

将使用VirtualBox的Docker Toolbox升级到Docker for Windows ,后者使用Window内置的Hyper-V虚拟化。

如果你不能运行Docker for Windows(例如,你需要将Windows 7升级到至lessWindows 10,然后尝试通过NFS等其他方法将/var/hyperledger/production挂载到主机文件夹中。