镜像管理

DCS Cloud大约 10 分钟

镜像管理

镜像是一种轻量级、可移植的软件打包方式,用于将应用程序及其所有的运行时环境、系统库和依赖项打包到一个单一的文件中。这个文件可以被容器化平台(如 Docker、Kubernetes 等)加载和运行,从而实现应用程序的快速部署和执行。

进行生物信息学分析,往往由于不同的操作系统(Windows、Linux、Mac等)原因,无法实现统一的运维管理。同时,这些软件具有不同的版本和软件包,安装、使用过程复杂。将生物信息学软件封装成Docker镜像,可以使程序在不同的环境中运行,并通过DCS智能云平台的镜像管理,实现高效的调用,极大方便了软件的安装和运行。

创建自定义镜像

用户在进行数据分析时,通常需要安装各种类型的工具镜像,为方便用户能够在平台上使用各种类型的分析工具,DCS Cloud提供自定义镜像的功能,通过自定义镜像,用户可自由进行镜像安装。点击左侧导航栏镜像管理,进入到镜像管理页面。点击“自定义镜像”新建镜像。

基于平台预设基础镜像构建

Step1:输入镜像名称,基础镜像选择“预设镜像”

Step2:选择基础镜像

Step3:填写镜像描述并添加镜像自定义标签

Step4:选择工具包安装方式

  1. 输入工具包及版本直接安装

可直接输入工具包名称及版本号安装,安装后的软件将会打包在新镜像中,下次使用时无需重复安装。示例如下:如需安装代码自动补全工具包,可填写工具包名称:code-autocomplete,并输入版本号:0.0.4,版本号不填写则安自动安装code-autocomplete的最新版本。点击“下一步”,系统将创建新的镜像。

新镜像创建成功后,可通过新镜像启动容器,并在容器中确认软件包是否安装成功。

  1. Bash指令安装

通过Bash指令输入框输入shell命令行代码,进行镜像安装。示例如下:

如需安装一个Samtools工具镜像,输入samtools的安装指令并配置环境变量,系统将按照指令执行安装。点击“下一步”,系统将创建Samtools镜像。

提示

在 BGI-深圳 片区构建时,通过输入以下代码可以创建具有sudo权限的镜像。

mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget -O /etc/yum.repos.d/Centos-7.repo http://mirrors1.sz.cngb.org/repository/os/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors1.sz.cngb.org/repository/os/repo/epel7.repo
yum clean all
yum makecache
yum install -y sudo

chmod 444 /etc/sudoers
echo -e "stereonote\tALL=(ALL)\tNOPASSWD: ALL" >> /etc/sudoers

通过外源导入镜像

注意

通过外源导入的镜像可用于项目>流程分析>工作流模块构建WDL,暂不支持用于项目>数据分析 (Stereonote) 模块。

从dockerhub导入镜像

Step1:登录dockerhub(hub.docker.com),复制镜像地址。

Step2:登录DCS Cloud,在镜像管理构建镜像时选择“外源导入>docker.io”方式。输入镜像地址直接构建。

从cloud.sylabs.io导入镜像

Step1登录cloud.sylabs.ioopen in new window,复制镜像的地址。

Step2:登录DCS Cloud,在镜像管理构建镜像时选择“外源导入>cloud.sylabs.io”方式。输入镜像地址直接构建。

本地镜像文件上传构建(仅支持华大内部用户使用)

Sonatype Nexus Repository Manager是一个开源的仓库管理器,用于存储、管理和分发软件包和二进制文件。平台搭建的Sonatype Nexus Repository Manager支持上传本地镜像文件(当前仅支持sif和simg格式),上传完成后可获取文件URL,在DCS Cloud镜像管理构建镜像时选择“外源导入>sif/simg file”方式构建时填写文件URL,即可直接构建镜像。具体步骤如下:

Step1:登录Sonatype Nexus Repository Manager

平台地址mirrors1.sz.cngb.orgopen in new window

公共账号:stomicscloud

账号密码:ftutFG$K%!cuIl8j

Step2:上传本地sif/simg文件

传输完成提示如下,可在上传目录下查看上传文件:

Step3:复制文件地址

Step4:登录DCS Cloud,在镜像管理构建镜像时选择“外源导入>sif/simg file”方式。输入“http://mirrors1.sz.cngb.org/repository/stomicscloud/”+镜像文件地址直接构建。

镜像构建提交后,可在项目「镜像管理」查看镜像构建状态。

持久化保存在线分析环境

启动容器后自行安装的工具包默认是临时的,点击“保存环境”可持久化保存容器环境。

填写镜像名称、镜像描述、镜像标签后保存成新镜像。

如何发布镜像至公共库?

构建成功的镜像,可以点击“发布”按钮,进行镜像发布,方便其他人复用镜像。已发布的镜像,可在公共库查看。

已经发布的镜像支持“更新发布”。

如何从公共库添加公共镜像?

用户可根据需要,将公共镜像库的镜像添加到项目中使用。

镜像使用

  1. 用于创建分析工作流

工作流是生物信息学软件的镜像封装。例如,您可将Cell Ranger软件封装为镜像,并上传至平台。通过工作流把镜像引入,搭建分析流程,执行分析作业。

  1. 用于启动「个性分析」的在线分析

镜像是启动在线分析的基础,在「个性分析」模块创建分析容器时,需要选择一个镜像。

镜像使用常见问题

镜像在云平台怎么使用

  1. 用于创建分析工作流

工作流是生物信息学软件的镜像封装。例如,您可在镜像管理模块将Cell Ranger软件封装为镜像,通过WDL中的runtime代码块中的docker_url参数指定镜像地址把镜像引入,利用应用搭建分析流程,执行分析作业。

  1. 用于启动「个性分析」的在线分析

镜像是启动在线分析的基础,在「个性分析」模块创建分析容器时,需要选择一个镜像。

在云平台如何构建sif镜像

云平台支持构建并使用Sif镜像,可在“个性分析”模块构建sif

  1. 在个性分析模块,新建分析时选择software节点,该节点用于联网安装镜像

  2. 拷贝基础镜像到个人目录:例如saw_pt_0.1.0c.sif,该镜像存放于Sonatype Nexus Repository Manager中,可登录获取,若本地有基础sif镜像,也可上传到work目录下

平台地址mirrors1.sz.cngb.orgopen in new window 公共账号:stomicscloud 账号密码:ftutFG$K%!cuIl8j)

  1. 将基础镜像解压为sandbox,注意,需要在在/home/stereonote目录下执行,否则会报错
singularity build --sandbox saw_pt_0.1.0c saw_pt_0.1.0c.sif
  1. 删除sandbox/opt 目录下之前镜像安装的软件(删除opt目录下所有目录以及数据)

  2. 拷贝conda 安装sh 到opt目录

  3. 进入镜像并安装软件,就是在现在进入的镜像sandbox内安装软件

singularity shell -B /storeData/USER/data/02.Bioinformatics_for_STOmics/01.user/liuwq/Sif_demo:/proc -w saw_pt_0.1.0c # 可写方式进入sandbox
cd /    # 进入根目录
cd opt 
# 安装软件 #
control + D # 退出sandbox
  1. 将sandbox 打包成sif镜像
singularity build Fastp_sif.sif saw_pt_0.1.0c

如何安装conda等常用软件

在云平台深圳片区构建镜像时,在“镜像管理”中通过“Terminal”安装以及在个性分析选择”Software“节点时可以联网访问;当进入“个性分析”启动其余节点,镜像内是无法访问互联网的。以下提供在云平台国内片区场景的一些内网源软件安装方式。

  1. 访问github

访问github时,若遇到网络问题,可尝试在原git链接前添加"https://mirror.ghproxy.com/open in new window"。

如:"git clone https://mirror.ghproxy.com/https://github.com/xxxxxxx.gitopen in new window"

  1. 常用内网软件源(限:BGI-深圳)
  • yum源
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget -O /etc/yum.repos.d/Centos-7.repo http://mirrors1.sz.cngb.org/repository/os/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors1.sz.cngb.org/repository/os/repo/epel7.repo
yum clean all
yum makecache
  • conda源
channels:
  - conda-forge
  - defaults
show_channel_urls: true
default_channels:
  - http://mirrors1.sz.cngb.org/repository/tsinghua-image/anaconda/pkgs/main
  - http://mirrors1.sz.cngb.org/repository/tsinghua-image/anaconda/pkgs/r
  - http://mirrors1.sz.cngb.org/repository/tsinghua-image/anaconda/pkgs/msys2
custom_channels:
  conda-forge: http://mirrors1.sz.cngb.org/repository/tsinghua-image/anaconda/cloud
  msys2: http://mirrors1.sz.cngb.org/repository/tsinghua-image/anaconda/cloud
  bioconda: http://mirrors1.sz.cngb.org/repository/tsinghua-image/anaconda/cloud
  menpo: http://mirrors1.sz.cngb.org/repository/tsinghua-image/anaconda/cloud
  pytorch: http://mirrors1.sz.cngb.org/repository/tsinghua-image/anaconda/cloud
  pytorch-lts: http://mirrors1.sz.cngb.org/repository/tsinghua-image/anaconda/cloud
  simpleitk: http://mirrors1.sz.cngb.org/repository/tsinghua-image/anaconda/cloud
  • pip配置
[global]
index-url=http://mirrors1.sz.cngb.org/repository/pypi-proxy/simple/

[install]
trusted-host=mirrors1.sz.cngb.org
  • R配置
options(repos = c(CRAN = "http://mirrors1.sz.cngb.org/repository/tencent-image/CRAN/"))
options(BioC_mirror="http://mirrors1.sz.cngb.org/repository/bioconductor")

如何使用共享镜像

云平台是以个人维度管理镜像,当项目协作时镜像可以在项目或成员间共享。云平台提供以下几种共享镜像方式:

1、通过share/app共享

深圳片区汇总了一批常用软件放在“share/app”路径下,进入个性分析Terminal中,通过ls /share/app,查看共享目录下的软件。share/app下的软件与集群使用方式一样,可直接运行使用。

2、通过公共库共享

在“镜像管理”构建成功后,将镜像发布到云平台公共库后,项目协作用户根据需要在公共库复制后使用。

3、通过共享功能

当软件不适合发布到公共库时,可以在“镜像管理”卡片中,将构建的镜像共享给指定用户或指定项目

被共享者可在镜像管理查看共享镜像,并可基于共享接着构建新镜像。

常见镜像安装问题处理办法

在云平台构建镜像时,出现以下问题时,可参考解决:

  1. 构建时显示成功,构建成功的镜像却无法启动个性分析

出现此场景请检查构建镜像时是否修改基础镜像内的jupyter,可能在构建镜像时下载了jupyter引擎,覆盖掉了基础镜像内的jupyter导致个性分析启动失败。

  1. 基于公网镜像能不能用于个性分析?

因基于公网镜像可能并不带有jupyter,所以暂不支持外源镜像在个性分析中启动。基于公网镜像可以用于流程分析,复制镜像地址到脚本里 ,就可以使用镜像中安装好的软件及环境。

  1. 构建镜像时,shell解释器无法解析R语言的条件语句和逻辑

可以在工具包及版本处或者bash里面用 Rscript -e 添加R语句

上次编辑于: