docker-compose启动Hyperledger Fabric testNetwork报版本不支持错误
Hyperledger Fabric测试网络启动失败排查方案
问题与环境信息
- 部署目标:参照Hyperledger Fabric 2.2版本test_network官方文档部署首个Fabric测试网络
- 镜像准备:执行命令
curl -sSL https://bit.ly/2ysbOFE | bash -s拉取所需Docker镜像,已获取的镜像包含hyperledger/fabric-ca:1.5.3、hyperledger/fabric-peer:2.4.3、hyperledger/fabric-orderer:2.4.3等全系列2.4.3版本Fabric组件 - 运行环境版本:
- Docker:20.10.17
- docker-compose:1.20.0
- 报错触发场景:进入
fabric-samples/test-network目录执行./network.sh up命令启动测试网络时触发异常 - 报错内容:
./compose/compose-test-net.yaml声明的Compose文件版本不受支持,建议指定2.2、3.3等受支持版本并将服务定义置于services节点下,或省略version字段使用v1版本规范
根因确认
报错核心触发原因是本地docker-compose 1.20.0版本过低,无法兼容当前fabric-samples中Compose配置文件使用的语法规则。通过GitHub Release渠道下载新版docker-compose失败为网络访问限制导致,无需强行跨网获取安装包,可通过以下路径完成修复。
解决步骤
方案1:通过国内软件源升级docker-compose(优先推荐)
- 先卸载系统中旧版本docker-compose:
sudo apt remove docker-compose - 配置国内Docker CE软件源后,直接安装Docker Compose V2插件:
sudo apt update && sudo apt install docker-compose-plugin - 安装完成后执行
docker compose version验证版本,版本号≥v2.10.0即可满足Fabric测试网络的兼容性要求 - 注意:Docker Compose V2为Docker CLI插件,默认调用命令为
docker compose(命令中间为空格),和旧版docker-compose(中间为连字符)格式不同。为避免修改官方启动脚本,可执行以下命令做软链接兼容旧调用格式:
软链接创建完成后,原有sudo ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin/docker-composedocker-compose命令即可正常调用新版Compose程序。
方案2:离线二进制安装(无公网环境适用)
- 在可正常访问软件源的设备上,下载与目标服务器系统架构匹配的docker-compose二进制文件,将文件拷贝到目标服务器的
/usr/local/lib/docker/cli-plugins/目录下 - 为二进制文件添加执行权限:
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose - 参照方案1的软链接步骤配置命令兼容即可。
方案3:临时修改配置适配旧版本(仅应急使用,不推荐)
若暂时无法升级docker-compose,可手动修改test-network/compose/目录下所有yaml格式配置文件:
- 将文件开头的
version字段值修改为'3.3' - 检查所有服务配置,确保全部置于
services层级下,移除仅新版Compose支持的语法字段(如profiles配置项) - 该方案可能引发后续链码部署、证书生成环节的兼容性问题,无特殊情况优先选择升级Compose的方案。
启动验证
完成上述配置后,先回到test-network目录执行./network.sh down清理之前启动失败产生的残留资源,再重新执行./network.sh up即可正常启动包含Peer节点、Orderer节点的Fabric测试网络。
内容的提问来源于stack exchange,提问作者Ashish Parab
相关产品推荐
相关产品推荐

