使用HPCRunner一键构建镜像
前置条件
- 待构建镜像的节点已挂载配置YUM源。
YUM源挂载配置建议使用全量的ISO Everything包。
- 待构建镜像的节点需要服务器有外网权限。如无外网权限请先配置外网权限或外网代理。
安装步骤
- 使用PuTTY工具,以root用户登录节点。
- 安装基础依赖包。执行如下命令:
yum -y install git time zlib zlib-devel gcc gcc-c++ environment-modules python python3 python3-devel python3-libs python3-pip cmake make numactl numactl-devel numactl-libs rpmdevtools wget libtirpc libtirpc-devel unzip flex tar patch glibc-devel rpcbind csh perl-XML-LibXML xorg-x11-xauth curl curl-devel libcurl-devel libxml2-devel
- 克隆仓库。如已通过手动下载了贾维斯智能助手(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
- 安装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 ${HOME}/openeuler-gcc-hmpi1-grads-2.2.1.sif container/grads/2.2.1/openeuler-gcc-hmpi1-grads-2.2.1.def
回显结果包含如下示例内容,表示镜像构建成功:
... SUCCESSFULLY EXECUTED AT 2025-10-14 08:16:21, CONGRATULATIONS!!! INFO: Adding labels INFO: Adding environment to container INFO: Creating SIF file... INFO: Build complete: ${HOME}/openeuler-gcc-hmpi1-grads-2.2.1.sif
- 运行“singularity build”命令需要服务器有外网权限。
- ${HOME}/openeuler-gcc-hmpi1-grads-2.2.1.sif 表示生成的.sif文件保存到当前用户家目录。
- 运行测试生成的镜像。执行如下命令:
singularity exec ${HOME}/openeuler-gcc-hmpi1-grads-2.2.1.sif bash -c "grads -lbc 'q config' </dev/null && grads -lbc 'q gxconfig' </dev/null"
回显结果包含如下示例内容,表示运行测试成功:
Grid Analysis and Display System (GrADS) Version 2.2.1 Copyright (C) 1988-2018 by George Mason University GrADS comes with ABSOLUTELY NO WARRANTY See file COPYRIGHT for more information Config: v2.2.1 little-endian readline grib2 netcdf hdf4-sds hdf5 opendap-grids athena geotiff shapefile Issue 'q config' and 'q gxconfig' commands for more detailed configuration information GX Package Initialization: Size = 11 8.5 Running in Batch mode Config: v2.2.1 little-endian readline grib2 netcdf hdf4-sds hdf5 opendap-grids athena geotiff shapefile Grid Analysis and Display System (GrADS) Version 2.2.1 Copyright (C) 1988-2018 by George Mason University GrADS comes with ABSOLUTELY NO WARRANTY See file COPYRIGHT for more information Configured on 10/28/25 for aarch64-unknown-linux-gnu This build of GrADS has the following features: -+- Byte order is LITTLE ENDIAN -+- Athena Widget GUI ENABLED -+- Command line editing ENABLED -+- GRIB2 interface ENABLED g2clib-1.6.0 -+- NetCDF interface ENABLED netcdf-4.8.1 -+- OPeNDAP gridded data interface ENABLED -+- OPeNDAP station data interface DISABLED -+- HDF4 interface ENABLED hdf-4.2r5 -+- HDF5 interface ENABLED hdf5-1.12.1 -+- KML contour output ENABLED -+- GeoTIFF and KML/TIFF output ENABLED -+- Shapefile interface ENABLED The 'q gxconfig' command returns Graphics configuration information ga-> [EOF] GX Package Terminated
如遇到文件系统只读的权限问题可加参数--writable-tmpfs执行,执行如下命令:
singularity exec --writable-tmpfs ${HOME}/openeuler-gcc-hmpi1-grads-2.2.1.sif bash -c "grads -lbc 'q config' </dev/null && grads -lbc 'q gxconfig' </dev/null"
运行和验证
- 按使用HPCRunner一键构建镜像中的步骤生成容器openeuler-gcc-hmpi1-grads-2.2.1.sif。
- 按运行和验证中的步骤1~3在当前路径下创建文件test.dat、test.ctl、test.gs。
- 执行以下命令运行测试脚本(测试文件所在路径和容器路径按照实际情况修改):
singularity exec -B ${PWD}:/home --pwd /home ${HOME}/openeuler-gcc-hmpi1-grads-2.2.1.sif grads -blc /home/test.gs
- 若执行成功会在当前目录下生成test.png文件,查看可得到如图1所示图像,表示GrADS安装成功,功能正常: