Singularity可以方便地处理Docker镜像,以下是三种方式:
参考:https://sylabs.io/guides/3.7/user-guide/singularity_and_docker.html#remotely-hosted-images
有以下两个命令可用:
singularity pull docker://godlovedc/lolcow # 下载pre-built image
singularity build mylolcow_latest.sif docker://godlovedc/lolcow # 下载后再build成镜像
假设本地有godlovedc/lolcow镜像
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
godlovedc/lolcow latest 577c1fe8e6d8 16 months ago 241MB
那么通过如下命令可从本地docker镜像构建SIF文件:
$ sudo singularity build lolcow_from_docker_cache.sif docker-daemon://godlovedc/lolcow:latest
该命令与方式1的主要区别有:
参考:https://sylabs.io/guides/3.7/user-guide/singularity_and_docker.html#locally-available-images-stored-archives
首先需要将docker镜像转成tar文件:
先查看当前的docker镜像
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 5 months ago 13.3kB
使用如下命令将hello-world镜像转成tar文件,这里save后面的参数就是IMAGE ID,即上面输出的第三列
$ sudo docker save d1165f221234 -o hello_world.tar
这样当前目录下面就出现了hello_world.tar文件。
接着,将该tar文件转成singularity镜像,命令与输出如下:
$ singularity build hello_world.sif docker-archive://hello_world.tar
INFO: Starting build...
Getting image source signatures
Copying blob f22b99068db9 done
Copying config 1189c90721 done
Writing manifest to image destination
Storing signatures
2021/08/15 16:46:15 info unpack layer: sha256:a99912efe9c767b280c869d2e734bef3c92d29d45d4e3beefbeb5a1924ed7445
INFO: Creating SIF file...
INFO: Build complete: hello_world.sif
该命令与方式1的主要区别有: