Hyperledger Composer环境部署求助:执行./startFabric.sh时出现“Error response from daemon: Container is not running”错误
Hyperledger Composer startFabric.sh 容器启动失败问题排查方案
我之前也碰到过类似的情况,结合Hyperledger Composer和Fabric的使用经验,给你几个针对性的排查和解决方向:
1. 先定位容器启动失败的具体原因
报错只提示容器没运行,但没说明核心失败原因,第一步一定要查看容器日志:
- 先列出所有容器(包括已停止的):
docker ps -a - 找到报错里的容器ID
abf272793595...,确认它对应的容器名称(比如peer0.org1.example.com、couchdb等) - 查看该容器的启动日志:
docker logs <容器ID或名称>
日志里通常会给出具体的失败原因,比如端口被占用、配置文件错误、依赖缺失等,这是最关键的排查步骤。
2. 针对常见问题的解决方法
端口冲突
新机器上可能有其他服务占用了Fabric所需的端口(比如peer的7051、couchdb的5984、CA的7054等):
- 检查特定端口是否被占用,比如检查7051:
netstat -tulpn | grep 7051 - 如果发现被占用,可以停止占用端口的服务,或者修改
startFabric.sh里的端口映射配置(比如把-p 7051:7051改成-p 70510:7051这类未被占用的端口)。
Docker资源不足
Fabric启动多个容器需要足够的内存和CPU,新机器如果Docker分配的资源太少(比如内存低于2GB),很容易导致容器启动失败:
- 打开Docker的设置界面,找到“资源”选项,把内存分配调整到4GB以上,CPU至少分配2核,然后重启Docker再尝试运行脚本。
镜像版本不匹配或损坏
虽然脚本默认使用hlfv12版本,但新机器拉取的镜像可能有问题,或者本地镜像损坏:
- 先清理现有容器和镜像:
docker stop $(docker ps -aq) docker rm $(docker ps -aq) docker rmi $(docker images | grep hyperledger | awk '{print $3}') - 然后重新运行
./startFabric.sh,让脚本重新拉取正确的镜像文件。
Docker用户权限问题
如果新机器的当前用户不在docker用户组里,运行脚本时可能会因为权限不足导致容器启动失败:
- 检查当前用户是否在docker组:
groups - 如果没有,执行命令添加:
sudo usermod -aG docker $USER - 注销当前用户再重新登录,让权限生效后再运行脚本。
启动超时时间不足
默认的15秒启动超时可能不足以让新机器上的Fabric容器完全启动:
- 编辑
startFabric.sh脚本,修改FABRIC_START_TIMEOUT的值,比如改成30秒:export FABRIC_START_TIMEOUT=30 - 保存后重新运行脚本。
你可以按照这个顺序逐步排查,先通过日志找到具体原因,再针对性解决问题。
内容的提问来源于stack exchange,提问作者Ashish Tomar
相关产品推荐
相关产品推荐

