三、查询tag,和使用原生centos挂载使用北极星集群安装软件--singularity修改、打包和运行镜像
三、修改镜像并打包,将/appnews挂载到容器里,这里我们以运行/appsnew/usr/R/R-4.2.0/lib64/R为例
这种就可以把集群已经安装好的软件,打包到里面去,然后安转设置别的软件,比如intel编译器等,后面mpi、GPU会讲到
1、拉取
推荐使用北极星集群dockerserver
执行:
dockersearch centos
输入提示如箭头
在login06(比较快):
singularitybuild --sandbox R-4.2.0 docker://bjxdockerfast:5000/centos7.6_bjx:latest
其他登陆节点
singularitybuild --sandbox R-4.2.0 docker://bjxdocker:5000/centos7.6_bjx:latest
或者使用docker服务器自己的:
singularitybuild --sandbox R-4.2.0 docker://centos:7.6.1810
注意:
其中R-4.2.0为sandbox的文件夹
7.6.1810为版本的tag,需要去https://hub.docker.com/搜索自己想要的版本的tag
2、创建文件夹和加载文件
mkdir R-4.2.0/appsnew
vi R-4.2.0/environment
加入这行source /appsnew/source/R-4.2.0.sh
(也可以 echo 'source /appsnew/source/R-4.2.0.sh'>> R-4.2.0/environment)
同时创建其他文件夹
mkdir R-4.2.0/lustre1
mkdir R-4.2.0/lustre2
mkdir R-4.2.0/lustre3
mkdir R-4.2.0/gpfs1
mkdir R-4.2.0/gpfs2
注意,cn_nl,cn-short不挂载gpfs,cn-long不挂载lustre3,其他包括登陆节点都挂载
3、进入系统安装相关软件,以虚拟root的身份进入的,使用root安装依赖,您没有看错是root 可以用yum
singularityshell -B /appsnew:/appsnew,/apps -w R-4.2.0
注意:-B /appsnew:/appsnew ,B为挂载选项;第一个为系统的/appsnew ,第二个为镜像内部的/appsnew ,如果同名可以直接写-B /appsnew。 -w 为挂载为可写
如果需要挂载并行文件系统,运行命令如下:
singularityshell -B /appsnew,/apps,/lustre1,/lustre2,/gpfs1,/lustre3 -w R-4.2.0
如果需要挂载并行文件系统和系统库,运行命令如下:
singularityshell -B /appsnew,/apps,/lustre1,/lustre2,/gpfs1,/lustre3,/usr,/lib64,/etc,/sys -w R-4.2.0
进入后运安装缺的包
Apptainer> yum install -y gcc gcc-c++ gcc-gfortran readline-devel bzip2-devel libXt-devel fonts-chinese tcl tcl-devel tclx tk tk-devel
Apptainer> yum install -y mesa-libGLU mesa-libGLU-devel libcurl libcurl-devel xz-devel.x86_64 pcre2-devel libicu wget which perl libgfortran5
安装完后,输入并执行exit退出系统
4、测试
singularityrun -B /appsnew,/apps R-4.2.0 R
5、打包
singularitybuild R-4.2.0.sif R-4.2.0
##打包的时候出现:"Can't add file 的时候
chmod -R +r R-4.2.0 就可以,或者删除提示中没有用的文件
6、执行
singularityrun -B /appsnew:/appsnew R-4.2.0.sif R
注意:-B /appsnew:/appsnew ,B为挂载选项;第一个为系统的/appsnew ,第二个为镜像内部的/appsnew
也可以 singularityrun -B /appsnew,/apps R-4.2.0.sif R