我们正在使用 Hyperledger Fabric 创建一个网络。我们所有的账本数据都存储在 /var/lib/docker/volume 目录中,实际上一旦网络中断就会被删除。在我看来,Docker 安装卷似乎不起作用。如何按照 Hyperledger Fabric ../var/hyperledger 的建议使用本地系统卷来存储它。
您可以在 docker yaml 文件中使用 Volumes 属性。
volumes:
- LOCAL SYSTEM PATH RELATIVE TO THIS FILE: VOLUME INSIDE DOCKER CONTAINER
e.g-
volumes:
- ../system-genesis-block:/var/lib/docker/volume
如果您使用 network.sh 脚本来关闭网络,它会删除所有内容——我认为这对开发有好处。使用 docker-compose 停止网络会使一切保持原样。有一种观点认为,为了安全起见,您的数据应该存在于容器之外。您始终可以重新创建容器,但它不会带回丢失的数据。
我喜欢将我的卷存储在靠近超级账本代码的地方,所以我在我的 YAML 中使用以下代码
volumes:
- ../system-genesis-block/genesis.block:/var/hyperledger/orderer/orderer.genesis.block
- ../organizations/ordererOrganizations/vfact.ie/orderers/orderer.vfact.ie/msp:/var/hyperledger/orderer/msp
- ../organizations/ordererOrganizations/vfact.ie/orderers/orderer.vfact.ie/tls/:/var/hyperledger/orderer/tls
- $PWD/data/orderer.vfact.ie:/var/hyperledger/production/orderer
当前工作目录 (pwd) 是 Hyperledger 文件和目录的根区域。在不太了解您的系统如何工作的情况下,我将此作为对此类使用有良好经验的人的建议。如果您正在使用 network.sh 关闭网络,也许您可以从 networkDown() 函数调用中删除
down --volumes --remove-orphans
docker-compose。
尝试
sudo
例如
sudo ./network.sh up
而不是./network.sh up