进阶 | 本地「Docker」镜像转换为「Singularity」镜像,直接运行于任何服务器~

写在前面

近期,组织了第三期暑期培训,想想也有四个年头。另外,分别给本科生和硕士生均分别讲过一学期的生物信息数据分析课程,其中实践部分,以往使用的是 VituralBox。好处在于可以完全模拟服务器环境,从硬件到软件。而不好的地方在于,对应的环境几乎只适合与学习或练习,无法直接使用到生产环境。
如此,即使学生掌握得再熟练,真正到生产环境时,也就是他们的服务器时,需要重新配置一次环境。尽管,conda等方式已经比较方便,但还是不够方便。
基于此,我一直使用 docker 的想法。经过一年左右的筹备,终于还是下定决定使用 docker 环境作为学生联系。此举最大好处在于:

  1. 跨平台,无论是Windows、MacOS、Linux均可以直接使用
  2. 镜像可以迁移到不同环境
  3. 计算集群可以使用安装的 singularity 来使用 docker 镜像

有了这些为基础,只要学生掌握课程上的内容,那么课程相关镜像,完全直接用于他们个人电脑、服务器甚至计算集群上。
前述,关于 docker 已经做了不少介绍,感兴趣的朋友可以翻看往期推文。今次,主要介绍,如何将自己创建的 docker 镜像转换为 singularity 镜像,以及转换之后,如何使用。

docker 镜像转换为 singularity 镜像

准备一个本地的 docker 镜像

为了方便演示,首先,建立本地的 docker 仓库服务(用的也是 docker),注意:如果是windows,那么需要在 wsl2 中安装好 docker 后执行。

sudo docker pull centos:7
sudo docker run -it centos:7 #进入,exit可以退出环境

#查看docker已有的镜像
sudo docker images
#REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
#centos       7         eeb6ee3f44bd   9 months ago   204MB
利用docker官方提供的registry镜像,搭建本地docker仓库镜像服务
sudo docker pull registry

#查看本地ip
ip addr
#ip为127:0:0:1

在docker内配置适用的ip

sudo vim /etc/docker/daemon.json

#补充以下信息/ 修改成个人的ip/ 
{
"insecure-registries": ["127.0.0.1:5000"]
}

#重新启动docker
sudo service docker stop
sudo service docker start
 
sudo docker info #查看下图

将本地的 docker 镜像上传到 本地的 docker 镜像仓库(有点绕,事实上,此处就是通过构建本地镜像仓库来替代 hub.docker.com 官方提供的仓库服务)

sudo docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
#查看是否建好仓库
sudo docker ps

#设置上传镜像的tag
sudo docker tag centos:7 127.0.0.1:5000/centos:7
 
#上传到本地仓库
sudo docker push 127.0.0.1:5000/centos:7
 
#查看仓库的镜像
curl http://127.0.0.1:5000/v2/_catalog
使用 singularity 转换镜像为 docker 镜像
#从本地仓库转化成sif镜像
singularity build --no-https  mycentos.sif  docker://127.0.0.1:5000/centos:7

如此,输出的 mycentos.sif 即可用于分发。到任何生产环境,服务器或者集群,只需要

#转成可写读的sandbox
singularity build --sandbox ./centos centos_centos7.9.2009.sif
#进入centos
singularity shell -w centos
实例:导入xialab2022暑期培训docker镜像

根据上述的措施/先load -i 本地docker镜像后,再上传到本地仓库,再被singularity转换为sif镜像文件。学生只需要下载培训期间提供的scauclass.sif文件,即可用于个人服务器或集群

#转换为sandbox
singularity build --sandbox  ./scauclass  scauclass.sif
#测试
singularity run scauclass conda --help

当然,可能需要注意的是暑期培训镜像有conda环境,几乎所有软件都是建立在conda环境下。
接下来我们需要解决怎么调用scauclass镜像的conda环境?

singularity run scauclass conda info -e

是不能够直接激活,需要进行conda init


#进入scauclass
singularity shell -w scauclass
#进入镜像
Singularity> conda init
Singularity> source .bashrc

接下来就可以随意玩耍了

conda activate xiasmallrna

接下来当然是检查一下conda环境下的软件可行与否?


exit
Singurlity 的优势:
  1. 在使用Singurlity过程下,几乎是没有使用到权限。方便了集群普通用户使用已经打包好的沙盒/镜像文件。Docker不管是安装、使用、修改都必须要有权限。
  2. 进入Singurlity 的环境,并没有封闭的空间。因此不需要提前映射本机路径,再进入环境。
  3. 没有容器的说法,只有可写的沙盒(sandbox)/不可写的镜像(sif),便于传输分发。

写在最后

感觉不错,一直想折腾的事情也确定可行了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容