singularity使用简介
singularity与docker功能相似,但是相比与docker需要root权限,或者专门添加用户组,singularity在非root时也可使用,且轻量级,修改方便。
·
singularity使用
1. singularity简介
singularity与docker功能相似,但是相比与docker需要root权限,或者专门添加用户组,singularity在非root时也可使用,且轻量级,修改方便。singularity镜像有两种格式:sif格式可用于部署;sanbox格式是可写的文件系统,用于开发过程,方便根据需要修改其中的内容。两种格式之间相互转换,即开发完成后转换为sif。具体可参考官网。
2. singularity特性
- 比如可在本地构建docker镜像,然后上传服务器使用singularity运行,从而避免使用root相关权限;
- Singularity镜像 中的文件可以直接在当前系统操作;但是通过shell 启动容器后,容器内是只读的文件系统,如果要在容器内修改,需要root 权限,且指定 -writable;
- 可直接在sandbox容器内创建环境,安装软件等;
3. 常用操作
(1) 搜索镜像,search
singularity search alp
(2)下载镜像,pull或build
singularity build ubuntu.sif library://ubuntu
singularity pull docker://sachet/polysolver:v4
- 以library:// 开头的URI,表示是从Container Library构建
- 以docker:// 开头的URI,表示是从Docker Hub构建
- 以shub:// 开头的URI,表示是从Singularity Hub构建
(3)创建容器,build
build命令可以从一个现有容器创建一个新容器,意味着可以转换容器的格式,比如可以将修改过的sandbox(目录)转换为sif;也可以将sif转换为sandbox;
singularity build test.sif test/
(4)运行,run或exec
singularity 可提供一个运行环境,在容器中配置好运行环境后,用于运行独立的软件。
singularity exec my_sing.img bash /pth/to/script.sh
singularity exec --writable ubuntu touch /foo,使用--writable 参数,可以在镜像目录中写入文件;
4. 常用问题
- 默认下载的镜像存储在home下 .singularity,可以通过设置SINGULARITY_CACHEDIR 修改缓存目录;
- build时的一些报错部分 FATAL: While performing build: while creating SIF: while creating container: writing data object for SIF file: copying data object file to SIF file: write /tmp/image-: no space left on device,可通过设置 SINGULARITY_TMPDIR 解决;
- run运行时的一些报错也有可能是权限问题,需要仔细查看指示位置的权限;
- 另有一些运行错误是由于singularity版本与系统不兼容,尝试更换镜像;
- 挂载目录时,需要指定到最末端目录,否则会报错;或者设置
enable underlay = yes
更多推荐
已为社区贡献2条内容
所有评论(0)