使用HPCRunner一键构建容器
前置条件
- 待构建镜像的节点已挂载配置YUM源。
YUM源挂载配置建议使用全量的ISO Everything包。
- 待构建镜像的节点需要服务器有外网权限。如无外网权限请先配置外网权限或外网代理。
安装步骤
- 使用PuTTY工具,以root用户登录节点。
- 克隆仓库。如已通过手动下载了贾维斯智能助手(HPCRunner),则忽略该步骤,否则执行如下命令:
git clone https://gitee.com/openeuler/hpcrunner.git
回显结果包含如下示例内容,表示HPCRunner克隆成功:
... Cloning into 'hpcrunner'... remote: Enumerating objects: 13018, done. remote: Counting objects: 100% (171/171), done. remote: Compressing objects: 100% (142/142), done. remote: Total 13018 (delta 89), reused 57 (delta 23), pack-reused 12847 (from 1) Receiving objects: 100% (13018/13018), 72.71 MiB | 2.57 MiB/s, done. Resolving deltas: 100% (6150/6150), done.
- 初始化HPCRunner。执行如下命令:
cd hpcrunner
source init.sh
hpcrunner表示HPCRunner安装目录。可根据实际情况调整。
- 安装go。执行如下命令:
- 配置加载go环境变量。执行如下命令:
module load ${JARVIS_ROOT}/software/modulefiles/go/1.18
无回显结果表示正常。
- 安装singularity。执行如下命令:
./jarvis -install singularity/3.9.6 any
回显结果包含如下示例内容,表示singularity安装成功:
... SUCCESSFULLY EXECUTED AT 2025-10-13 09:55:31, CONGRATULATIONS!!!
- 配置加载singularity环境变量。执行如下命令:
module load ${JARVIS_ROOT}/software/modulefiles/singularity/3.9.6
无回显结果表示正常。
- 使用singularity构建镜像。执行如下命令:
singularity build NCL_6.6.2.sif container/ncl/6.6.2/data.NCL662-gcc.arm.cpu.config.def
回显结果包含如下示例内容,表示镜像构建成功:

- 构建完成之后生成的.sif文件保存到当前目录。
- 运行测试生成的镜像。执行如下命令拷贝算例:
singularity exec -B ${PWD} NCL_6.6.2.sif cp -r /hpcrunner/software/utils/ncl/6.6.2/gcc/lib/ncarg/nclex/gsun ./
singularity exec -B ${PWD} NCL_6.6.2.sif cp -r /hpcrunner/software/utils/ncl/6.6.2/gcc/lib/ncarg/nclex/nug ./
- 进入算例目录
cd nug - 创建测试脚本
vim test.sh
#!/bin/bash wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/CNTASN_1m_200103_grid_T_curvilinear_grid.nc wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/rectilinear_grid_2D.nc wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/T2M_ERAINT_rectilinear_grid_2D.nc wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/r2b4_amip.nc wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/tas_mon_1961-1990_rectilinear_grid_2D.nc wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/MITgcm_rectilinear_grid_3D.nc wget http://www.ncl.ucar.edu/Images/NCLLogoWeb.jpg wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/thetao_curvilinear_ocean.nc wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/tripolar_grid_STORM.nc[d(2] cat > ex01.f << EOF C NCLFORTSTART subroutine cquad (a, b, c, nq, x, quad) real x(nq), quad(nq) C NCLEND C C Calculate quadratic polynomial values. C do 10 i=1,nq quad(i) = a*x(i)**2 + b*x(i) + c 10 continue return end C NCLFORTSTART function arcln (numpnt, pointx, pointy) dimension pointx(numpnt),pointy(numpnt) C NCLEND C C Calculate arc lengths. C if (numpnt .lt. 2) then print *, 'arcln: number of points must be at least 2' stop endif arcln = 0. do 10 i=2,numpnt pdist = sqrt((pointx(i)-pointx(i-1))**2 + + (pointy(i)-pointy(i-1))**2) arcln = arcln + pdist 10 continue return end EOF WRAPIT ex01.f for file in *.ncl;do if [ -e "$file" ];then echo "============test $file==============" ncl $file fi done - 执行测试脚本
- 执行以下命令进入另一个测试目录
cd ../gsun
- 创建测试脚本
vim test.shcp $NCARG_ROOT/share/ncarg/data/asc/u.cocos ./ for file in gsun*n.ncl do ncl $file done - 执行测试脚本
singularity exec -B `pwd` ../NCL_6.6.2.sif bash ./test.sh测试显示X11弹窗,点击画面关闭

