Docker镜像(本地tar文件)创建Singularity镜像(SIF文件)报错:FATAL: While performing build: conveyor failed to get: loading tar component manifest.json: archive/tar: invalid tar header解决办法
“这个问题可能是由于Windows和Unix之间的stdout行为的不同而发生的。”
所以在windows版本的docker上用:
查看镜像
docker images #查看镜像
hello-world latest feb5d9fea6a5 22 months ago 13.3kB
镜像保存到本地(注意!!!一定要用 -o 的方式保存)
docker save feb5d9fea6a5 -o hello_world.tar
#这种方法保存的镜像就是singularity中报错的根本原因👇
docker save feb5d9fea6a5 > hello_world.tar
上传至linux后
用
singularity build hello_world.sif docker-archive://hello_world.tar
运行成功日志↓
[g@node singular_projects]$ singularity build hello_world_ceshi_1.sif docker-archive://hello-world_ceshi.tar
INFO: Starting build...
2023/08/13 10:00:24 info unpack layer: sha256:b02aa9dda6345c4b85ec4d621fbc4a4177aed6b047a82f3c0d7d2085a78c88f0
INFO: Creating SIF file...
INFO: Build complete: helll_world_ceshi_1.sif
可行,解决
最后,小tips:
1.如果docke镜像文件太大,保存到本地可直接保存为压缩文件格式,即
docker save feb5d9fea6a5 -o hello_world.tar.gz
上传到Linux,转化成singularity镜像也是同样的操作,不增加任何的参数,即
singularity build hello_world.sif docker-archive://hello_world.tar.gz
2.如果可以,朋友们,还是尽量尝试从docker中直接转化成singulariy镜像,减少下载下来又上传上去的麻烦步骤(毕竟如果文件大,又网速一般,那……)如何操作看参考1博客内容的方式1
参考:
- 从Docker镜像创建Singularity镜像(SIF文件)
- https://stackoom.com/question/2kRgA