docker-compose启动Fabric测试网络时peer0.org2.example.com容器创建报错
报错原因
Cannot create container for service peer0.org2.example.com: create .: volume name is too short, names should be at least two alphanumeric characters
根因定位
你给出的docker-compose配置中,peer0.org2.example.com服务的volumes字段使用了${DOCKER_SOCK}环境变量,该变量未被正确赋值加载,docker-compose会将未定义的变量替换为空值,最终这条挂载规则会被解析为.:/host/var/run/docker.sock,单点.作为卷名长度仅1位,不符合docker要求的卷名最少2个字符的规则,因此触发报错。
解决方案
任选以下一种方案操作即可:
- 方案1:直接写死sock路径
将配置中volumes下的${DOCKER_SOCK}:/host/var/run/docker.sock替换为/var/run/docker.sock:/host/var/run/docker.sock,绝大多数docker环境默认的sock路径都是该值,直接写死可彻底避免环境变量加载问题。 - 方案2:启动前临时导出环境变量
执行docker-compose启动命令前,先在当前终端执行:export DOCKER_SOCK=/var/run/docker.sock
再正常执行启动命令即可。 - 方案3:配置.env文件持久化变量
在docker-compose.yml文件所在目录新建名为.env的文件,添加如下内容:DOCKER_SOCK=/var/run/docker.sock
保存后再启动服务,docker-compose会自动读取该文件中的变量值。
配置验证
修改完成后可先执行docker-compose config命令查看最终生效的配置,确认peer0.org2.example.com的volumes列表中没有单点.的挂载项,确认无误后再启动服务即可。
内容的提问来源于stack exchange,提问作者Ahmed Ali
相关产品推荐
相关产品推荐

