Skip to main content

容器化

容器技术

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

Apptainer

2021年11月,Singularity 开源项目加入 Linux 基金会,并更名为 Apptainer。Apptainer 是一套类似于 Docker 的容器解决方案,是用于HPC容器系统。Apptainer 兼容 Singularity Image File (SIF)、Singularity 的环境变量、Singularity 的命令、自动迁移 Singularity 的用户配置。

镜像

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

公共镜像

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

导入镜像

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

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

制作镜像

  1. 创建沙盒目录:apptainer build --fix-perms --sandbox build docker://docker.nju.edu.cn/ubuntu
  2. 进入沙盒容器:apptainer shell build/
  3. 在容器中安装和编译软件:如apt make
  4. 退出容器:exit
  5. 将沙盒打包成SIF镜像文件:apptainer build abc.sif build

因登录节点无root权限,可能出现问题,因此建议在自己的系统上制作镜像。

CI创建镜像

git.nju.edu.cn 上的 CI/CD 自动调用 kaniko 构建 Docker 镜像,详见官方文档,然后再导入apptainer build ocr.sif docker://reg.nju.edu.cn/yaoge123/ocr

一个简单的示例见:CI/CD自动化构建Docker镜像

提交作业

提交容器作业的示例脚本

#BSUB -q 62v100ib
#BSUB -gpu num=4

apptainer exec --nv cuda.sif app

常用选项

  • --nv:提供NVIDIA GPUs & CUDA支持
  • --bind/-B src[:dest[:opts]]:绑定额外的路径

相关网站