Skip to main content

容器化

容器技术

容器技术能够对应用及其整个运行时环境(包括全部所需文件)一起进行打包或隔离。从而可以在不同环境(如开发、测试和生产等环境)之间轻松迁移应用,同时还可保留应用的全部功能。有了容器不再需要管理员为你安装任何东西。容器是一个独立的系统,你可以在里面做任何想做的事情。

Singularity

Singularity 是一套类似于 Docker 的容器解决方案,是用于HPC容器系统。

加载环境

module load singularity/latest
source /fs00/software/singularity/latest/etc/bash_completion.d/singularity

镜像

一般保存为压缩只读Singularity Image File (SIF)格式的镜像文件。

公共镜像

/fs00/software/singularity-images/ 已存放了许多常用的SIF镜像文件,可直接使用。

导入镜像

以从 Docker Hub 等镜像仓库或镜像文件直接创建SIF镜像文件

  • 从 Docker Hub 南大源导入镜像:singularity build ubuntu.sif docker://docker.nju.edu.cn/ubuntu
  • 从 NVIDIA NGC 南大源导入镜像:singularity build ngc_cuda.sif docker://ngc.nju.edu.cn/nvidia/cuda
  • 从 docker save 保存的镜像文件导入镜像:singularity build abc.sif docker-archive://abc.tar

制作镜像

  1. 创建沙盒目录:singularity build --sandbox build docker://docker.nju.edu.cn/ubuntu
  2. 沙盒中添加文件:如cp -r abc build/home
  3. 进入沙盒容器:singularity shell build/
  4. 在容器中安装和编译软件:如apt make
  5. 将沙盒打包成SIF镜像文件:singularity build abc.sif build 因登录节点无root权限,可能出现问题,因此建议在自己的系统上制作镜像。

CI创建镜像

git.nju.edu.cn 上的 CI/CD 自动调用 kaniko 构建 Docker 镜像,详见[官方文档],(https://docs.gitlab.com/ee/ci/docker/using_kaniko.html),然后再导入singularity build ocr.sif docker://reg.nju.edu.cn/yaoge123/ocr

提交作业

提交容器作业的示例脚本

#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]]:绑定额外的路径

相关网站