容器化
容器技术
容器技术能够对应用及其整个运行时环境(包括全部所需文件)一起进行打包或隔离。从而可以在不同环境(如开发、测试和生产等环境)之间轻松迁移应用,同时还可保留应用的全部功能。有了容器不再需要管理员为你安装任何东西。容器是一个独立的系统,你可以在里面做任何想做的事情。
Singularity
Singularity 是一套类似于 Docker 的容器解决方案,是用于HPC容器系统。
加载环境
module load singularity/latest
source /fs00/software/singularity/latest/etc/bash_completion.d/singularity
镜像
公共镜像
在 /fs00/software/singularity-images/
已存放了许多常用镜像,可直接使用。
导入镜像
镜像可以从 Docker Hub 等镜像仓库直接导入,或打包上传后导入
singularity build ubuntu.sif docker://docker.nju.edu.cn/ubuntu #从 Docker Hub 南大源导入镜像
singularity build ngc_cuda.sif docker://ngc.nju.edu.cn/nvidia/cuda #从 NVIDIA NGC 南大源导入镜像
singularity build abc.sif docker-archive://abc.tar #导入 docker save 保存的镜像文件
制作镜像
因登录节点无root权限,因此建议在自己的系统上做好镜像在上传。
CI创建镜像
用 git.nju.edu.cn 上的 CI/CD 自动调用 kaniko 构建 Docker 镜像,详见官方文档
提交作业
提交容器作业的示例脚本
#BSUB -q 62v100ib
#BSUB -gpu num=4
/fs00/software/singularity/latest/bin/singularity exec --nv cuda.sif app
常用选项
-
--nv
:提供NVIDIA GPUs & CUDA支持 -
--bind/-B src[:dest[:opts]]
:绑定额外的路径