全国电子网站建设,江苏建设厅厅长徐其耀,网站专题策划,百度教育Singularity容器技术
docker的缺点:
资源限制问题:Slurm利用cgroups实现资源分配#xff0c;Docker通过ocker daemon无法实现。
权限问题:Docker daemon使用 root用户启动#xff0c;HPC场录期望使用普通用户运行容器。 singuiarily主要是适合HPC中的普通用户#xff0c;…Singularity容器技术
docker的缺点:
资源限制问题:Slurm利用cgroups实现资源分配Docker通过ocker daemon无法实现。
权限问题:Docker daemon使用 root用户启动HPC场录期望使用普通用户运行容器。 singuiarily主要是适合HPC中的普通用户因其完全兼容docker并且具有很好权限隔离非常适合普通用户使用。docker因大多时候需变管理员的权眼且普通用户进行数据卷的挂载时容易导致其他不可访问的日录也被容器内访问安全性较差。因此对于HPC的普通用户建议使用singularity运行容器。
1、Singularity安装 step1:安装基础依赖包
apt-get install -y build-essential libssl-dev glib-2.0 libglib2.0-dev libfuse3-dev libfuse-dev uuid-dev libgpgme11-dev squashfs-tools libseccomp-dev wget pkg-config git cryptsetupstep2:安装go
export VERSION1.20.4 OSlinux ARCHamd64 # 设置具体的环境变量
wget https://dl.google.com/go/go$VERSION.$OS-$ARCH.tar.gz # 下载GO的安装包
tar -C /opt/software -xzvf go$VERSION.$OS-$ARCH.tar.gz # 解压GO文件
rm go$VERSION.$OS-$ARCH.tar.gz # 删除安装包
export PATH/opt/software/go/bin:$PATH #设置GO语言环境变量step3:下载singularity源码包
export VERSION3.11.3 # 设置版本
wget https://github.com/sylabs/singularity/releases/download/v${VERSION}/singularity-ce-${VERSION}.tar.gz # 下载源码包
tar -xzf singularity-ce-${VERSION}.tar.gz
cd singularitystep4:编译源码包:
./mconfig --prefix/opt/software/singularityCE-3.11.3
make -C builddir
make -C builddir installstep5:配置modulefle
cd /opt/software/modules/modulefiles
mkdir -p singularity
touch singularity/3.11.3#%Module1.0proc ModulesHelp {} {global version modrootputs stdout \t loads singularity 3.11.3\n
}module-whatis Singularity 3.11.3set VERSION 3.11.3
set SINGULARITY_DIR /opt/software/singularityCE-3.11.3prepend-path PATH ${SINGULARITY_DIR}/binif [ module-info mode load ] {system echo singularity 3.11.3 is loaded
}
if [ module-info mode switch2 ] {system echo singularity 3.11.3 is loaded
}
if [ module-info mode remove ] {system echo singularity 3.11.3 is unloaded
}2、singularty镜像相关命令 官方镜像仓库:hps:/icloud.sylabs,.iomibray但由于官方仓库镜像较少一般都是使用docker镜像仓库中的镜像。 Singularity 镜像文件(Singularity lmage File,sif)是一种内容只读的文件格式其文件内容不能被修改
#搜索镜像
singularity search ubuntu #从官方仓库搜索镜像注意Ubantu和centos 镜像无法获取search限制
singularity search mysql
#下载镜像
singularity build ubuntu.sif library://ubuntu #从官方仓库下载并转化成sif格式
singularity build ubuntu.sif docker://ubuntu:18.04 #从docker仓库中下载并转化为isf格式
# 下载编译好的镜像
singularity pull centos #获取编译好的镜像完成后会在本地生成目录文件image-name_tag.sif
singularity pull docker://centos
singularity pull docker://ubuntu:18.04#删除镜像
rm -f ubantu.sif
3、singularity容器相关命令
#交互式运行容器当前目录自动做映射
singularity shell ubuntu_18.04.sif #进入容器内
Singularity cat /etc/lsb-release
DISTRIB_IDUbuntu
DISTRIB_RELEASE18.04
DISTRIB_CODENAMEbionic
DISTRIB_DESCRIPTIONUbuntu 18.04.6 LTS
#运行容器并执行一条命令
singularity exec ubuntu_18.04.sif bash -c cat /etc/lsb-release
#运行容器自动进入交互模式
singularity run ubuntu_18.04.sif
#查看运行的容器实例
singularity instance list
#实例容器内执行命令不进入容器内执行instance表示容器内执行容器名叫ub1 执行cat /etc/lsb-release
singularity exec instance://ub1 cat /etc/lsb-release
#交互进入容器
singularity shell instance://bu1
#停止示列
singularity instance stop ub1
#目录映射-B挂载目录类似与docker中的-v 参数singularity shell -B /opt:/opt ubuntu_18.04.sif #交互式目录映射 singularity instance start -B /opt:/opt ubuntu_18.04.sif ub1 #后台运行目录映射
4、singularity沙盒模式(重要概念)
#使用-sandbox选项创建沙盒镜像(不推荐此方法进入容器修改文件)singularity build --sandbox ubuntu/ docker://ubuntu:18.04 ls ubuntu
bin boot dev environment etc home lib lib64 media mnt opt proc root run sbin singularity srv sys tmp usr var
#运行容器添加-writabie参数使容器变为可写容器便于修改容器内容此处需要以管理员身份运行(推荐)
singularity run --writable ubuntu/
Singularity apt-get update
Singularity apt install -y vim
#基于修改后的容器制作新的镜像(此处也需要管理员权限因为上一步是以管理员身份安装的vim)
singularity build ubuntu-2.sif ubuntu/5、持久化 Singularity 容器退出时所有修改均丢失可以通 Overlay 实现文件持久化 Singularity 的 Overay 其实就是一个目录或文件系统使用 --overiay 指定支持如下命令: run exec shell instance sta
#案例
$ sudo singularity pull centos
$ sudo mkdir demo_overlay #用于存放的修改
$ sudo singularity shell --overlay demo_overlay centos_latest.sif
Singularity yum install -y vim
Singularity which vim
/usr/bin/vim#再次执行查看vim 存在
$ sudo singularity shell --overlay demo_overlay centos_latest.sif
Singularity which vim
/usr/bin/vim#重新启动改镜像容器查看vim不存在
sudo singularity shell centos_latest.sif
说明: Singlarity 不能基于 Overiay日录创建镜像 6、使用singularity运行科学计算软件cpak
#下载镜像
singularity search cp2k
singularity build cp2k.sif library://pgarias/oarc/cp2k:v1.0
#准备输入文件Ce02111.inp,coord.xyZ,BASIS,POTENTIALS
#使用singularity运行计算
singularity exec cp2k.sif /opt/cp2k/exe/local/cp2k.ssmp -i CeO2_111.inp除了可以命令行运行外也可以结合脚本或者slurm调度完成作业提交