构建Docker镜像时加载元数据失败,无法基于bitnami/spark完成构建
错误原因
该报错是Docker拉取Docker Hub仓库的基础镜像bitnami/spark时网络连接超时,无法获取镜像拉取所需的认证令牌,和你的Dockerfile内容、构建命令本身没有关联。此前能正常构建是因为本地已经缓存了bitnami/spark镜像,删除本地镜像后需要重新从远程仓库拉取,刚好触发了网络不通的问题。
可行解决步骤
- 临时重试:先尝试重新执行
docker build命令,Docker Hub官方节点偶尔会出现短时间不稳定的情况,多重试2次大概率可以正常拉取。 - 配置Docker镜像加速源:
国内访问Docker Hub默认链路经常出现不稳定的情况,你可以给Docker配置国内公共镜像加速源,操作步骤如下:- 打开Docker设置界面(桌面版直接点击设置按钮,Linux版直接编辑
/etc/docker/daemon.json文件) - 找到「Docker Engine」配置项,添加如下内容:
{ "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com" ] }- 保存配置后重启Docker服务,再重新执行构建命令即可。
- 打开Docker设置界面(桌面版直接点击设置按钮,Linux版直接编辑
- 离线导入基础镜像:如果当前设备网络确实无法连通Docker Hub相关地址,你可以找一台能正常访问的设备提前拉取
bitnami/spark镜像,导出为tar包后导入到当前设备,再执行构建就不需要重新拉取基础镜像。
额外优化建议
你的Dockerfile里存在一处文件名不匹配的问题,当前逻辑是下载spark-xml_2.12/0.13.0/spark-xml_2.12-0.13.0.jar后保存为spark-xml_2.10-0.2.0.jar,如果是误写建议修改为和下载版本一致的文件名,避免后续运行Spark任务时出现依赖版本不兼容的问题。
内容的提问来源于stack exchange,提问作者Obězný Päťdesiatnik
相关产品推荐
相关产品推荐

