当前位置: 首页 > news >正文

Singularity容器安装与使用

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 cryptsetup

step2:安装go

export VERSION=1.20.4 OS=linux ARCH=amd64                        # 设置具体的环境变量
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 VERSION=3.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 singularity

step4:编译源码包:

./mconfig --prefix=/opt/software/singularityCE-3.11.3
make -C builddir
make -C builddir install

step5:配置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.3"set 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_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 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调度完成作业提交

http://www.lryc.cn/news/419068.html

相关文章:

  • Linux 文件、重定向、缓冲区
  • WEB漏洞-SQL注入之MYSQL注入
  • mysql 查询 from a, b 和 a left join b 有什么区别
  • 禁用ssh 22端口
  • C++基础编程的学习3
  • Java中的Optional类:解锁优雅编程的秘密
  • 聆思CSK6大模型开发板语音控制风扇(上)
  • 代码随想录算法训练营第四十一天 | 121. 买卖股票的最佳时机、122. 买卖股票的最佳时机II、123. 买卖股票的最佳时机III
  • 延时队列与redis and rabbitmq
  • 数据结构--单链
  • 春秋云镜CVE-2023-38836
  • Linux 进程概念
  • 【秋招突围】2024届校招-米哈游笔试题-第二套
  • tklog v0.0.9 :Rust灵活高效日志管理
  • 长安链java-sdk打成jar包部署找不到配置文件,springBoot项目制作Docker镜像
  • AI问答:理解软件开发中的几个概念 / 软件逆向、加密、加固、脱壳、反编译
  • 第十一届MathorCup高校数学建模挑战赛-C题:基于有限差分法的散热机理建模与海底数据中心优化设计
  • 【java】常量
  • react如何使用useContext + TS 自定义hooks
  • 【网络安全学习】SQL注入03:如何防止SQL注入
  • linux利用crontab捕获iotop
  • android13 关闭selinux 临时关闭或者永久关闭
  • JetBrains GoLand单元测试不支持单个单元测试case执行
  • 基于STM32设计的盆栽种植自动管理系统(微信小程序)(201)
  • 白骑士的PyCharm教学实战项目篇 4.1 Web应用开发
  • Linux与Docker常用运维命令一览
  • 怎样在 SQL 中创建视图(VIEW),以及视图的作用和优势是什么?
  • Tomcat 使用和配置文件(详解)
  • html+css+js+jquery实现一个 飘零的树叶
  • 鸿蒙(API 12 Beta3版)【时域可分层视频编码】 音视频编码