MacOS部署HDP3.0沙箱运行脚本报sandbox-hdp不存在如何解决
MacOS环境Docker部署HDP3.0沙箱报错处理
核心问题定位
从执行日志可以定位两个连续的报错链路:
- 执行
docker run时抛出docker: invalid reference format错误,直接导致sandbox-hdp容器启动失败 - 后续依赖
sandbox-hdp容器执行的postgresql清理操作,因容器不存在抛出Error: No such container: sandbox-hdp
注:你参考的社区同类报错是磁盘空间不足导致的镜像写入失败,和当前场景触发逻辑完全无关
报错根因
部署脚本的内置版本提取逻辑存在缺陷:
脚本通过docker images | grep hortonworks/sandbox-hdp | awk '{print $2}'自动提取本地sandbox-hdp镜像的版本号,但本地同时存在3.0.1、latest两个标签的同名镜像,命令会输出两行带换行符的内容,被直接拼接到后续的镜像名称参数里,形成带换行的非法镜像引用,直接触发docker的格式校验报错。
对应日志中的异常输出:
+ version='3.0.1 latest'
修复操作步骤
- 清理残留的异常部署状态
依次执行命令清理之前脚本留下的半成品资源:# 停止并移除已启动的sandbox-proxy容器 docker stop sandbox-proxy docker rm sandbox-proxy # 删除脚本创建的空docker网络 docker network rm cda - 修复部署脚本的版本提取逻辑
用文本编辑器打开当前目录下的docker-deploy-hdp30.sh文件,找到自动提取版本号的代码行:
有两种修复方式可选,任选其一即可:version=$(docker images | grep hortonworks/sandbox-hdp | awk '{print $2}')- 直接注释掉这行自动提取代码,手动给
version变量赋值固定值:version=3.0.1 - 修改提取逻辑,过滤掉非数字版本的
latest标签,避免输出多行带换行的内容:version=$(docker images | grep hortonworks/sandbox-hdp | awk '{print $2}' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$')
- 直接注释掉这行自动提取代码,手动给
- 重新执行部署脚本
回到脚本所在目录,重新执行启动命令:
此时sh docker-deploy-hdp30.shdocker run步骤的镜像参数会被替换为合法的hortonworks/sandbox-hdp:3.0.1,不会再触发格式校验报错。
部署验证
- 脚本执行完成后,执行
docker ps | grep sandbox,若能同时看到sandbox-hdp、sandbox-proxy两个处于Up状态的容器,说明核心部署流程已完成 - 等待2-3分钟让沙箱内部服务完成初始化,即可通过宿主机9000端口访问沙箱Web控制台
内容的提问来源于stack exchange,提问作者a.moussa
相关产品推荐
相关产品推荐

