vlambda博客
学习文章列表

搬运一个非常nice的Docker镜像

Docker是啥?

当你经常在conda中碰到环境依赖报错;

当你想重复其他环境中的分析流程,而自己的系统首先就不一样(比如centos vs ubuntun);

当你经常需要在R和python中频繁切换时;

兄嘚,那你可能需要了解下docker了。


从原理上,docker和conda是不同的东西。


docker是非常轻量的虚拟机,你可以在ubuntun中下载centos的镜像,模拟centos中的系统,下载对应的软件,设置相应的配置。


conda是一个环境隔离管理者,在每个环境中可以任意折腾而不影响别的环境。单个环境里安装较少的包时,conda可以轻松驾驭。但当安装包逐渐增多,其所需的底层依赖包常常冲突,conda逐渐力不从心。


我们不是专业的调试环境的程序工作者,花太多时间升降包调试分析环境是不划算的。


这时候,docker挺身而出,可以将一个建立好的分析环境体系呈现,我们不需要安装其他包,只需要启动docker就可以使用它们。


但docker比conda上手要复杂一些,docker的学习不是本期的重点,我们可以通过一些相关教程快速上手(如bilibili视频,docker快速入门等)。


一经熟悉docker流程。你会惊讶它的强大之处。


废话不多说,从一个单细胞分析环境的整合系统(即docker的image)开始,我们站在巨人肩膀上,开始体验docker带来的便利。


第一步,打开GitHub镜像主页

 https://github.com/rnakato/docker_singlecell


第二步,查看 README.md 镜像说明

看看镜像的历史进程

从Ubuntu到cuda-pytorch开始支持GPU计算->修bug修bug->增加SeuratData包->升级python3.9,安装cellchat等(今年3月比较大的更新)

python3.9很新啦,因为支持jupyter notebook,可方便切换为R,我们来看下R环境。

sessionInfo()
R version 4.1.2 (2021-11-01)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04.3 LTS

算是非常新的R版本了。


第三步 精髓在于,此镜像携带了大量分析包,pull完镜像可以一站式完成安装,我们看看有哪些?

Included tools (latest)Pipeline: Seurat (and wrappers), scater, scran, scanpy, scVI, monet, Pagoda2, kallisto (bustools)Doublet finding: Scrublet, DoubletFinderBatch correction and data integration: Harmony, scmap, scBio, SingleCellNetClustering: SC3, metacell, SCCAF, Constclust, bigSCale2Cluster annotation: RCA, CellAssign, garnett, scCatch, SingleRTrajectory analysis: Monocle2/3, slingshot, Palantir, FROWMAPRNA velocity: velocyto, scVelo, CellRank, DynamoGene network: WGCNA, SCENIC (pySCENIC)Cell-to-cell interaction: CellPhoneDB, SingleCellSingnalR, scTensor, cell2cell, CellChatData imputation: scImpute, MAGIC, SAVER, SAVER-X, SCRABBLEMulti-modal: LIGER, scAI, MOFA2Bulk deconvolution: SCDC, MuSiCSimulation: Splatter, dyngenOthers: scGen, sleepwalk, singleCellHaystack, ComplexHeatmapscATAC-seq: cicero, chromVAR, ArchR, Signac, cisTopic, episcanpyDatabase (genome): BSgenome.Hsapiens.UCSC.hg19, BSgenome.Hsapiens.UCSC.hg38, BSgenome.Mmusculus.UCSC.mm10, BSgenome.Scerevisiae.UCSC.sacCer3, BSgenome.Dmelanogaster.UCSC.dm6Database (gene): EnsDb.Hsapiens.v75, EnsDb.Hsapiens.v79, EnsDb.Hsapiens.v86, EnsDb.Mmusculus.v79Database (motif): JASPAR2016, JASPAR2018, JASPAR2020SeuratData: ifnb_3.1.0, panc8_3.0.2, pbmcsca_3.0.0, pbmc3k_3.1.4, celegans.embryo_0.1.0, cbmc_3.1.4, hcabm40k_3.0.0, thp1.eccite_3.1.5, stxBrain_0.1.1, stxKidney_0.1.0, bmcite_0.3.0, pbmcMultiome_0.1.2, ssHippo_3.1.4


梳理一下

搬运一个非常nice的Docker镜像

基本上常用的单细胞分析软件都囊括在内

如python-> scanpy+scVI+scVelo+pySCENIC

R->Seurat+metacell+monocle+CellPhoneDB+SingleR...


第四步 如何使用

# 1. 安装docker (参考官网网站教程,在此不展开)
# 2.安装成功后root权限运行docker命令,包含以下:docker pull rnakato/singlecell_jupyter  # 拉镜像,需要63GB 空间
# 3.创建基于jupyter notebook的容器sudo docker run -it --name notebook-server -p 1997:8888 -v /home/wangxy/seqdata/:/work/mnt rnakato/singlecell_jupyter jupyternotebook.sh## -it 交互使用终端## -p 端口映射 1997为本地端口,8888为容器端口## -v 为挂载目录,即将本地/home/wangxy/seqdata/挂载到容器/work/mnt内
# 4. 浏览器登陆# 弹出tocken=<xxxx> 复制xxxx替换下行xxxx# 本地服务器登陆 http://<your ip>:1997/?token=<xxxx># 即可成功在html页面运行jupyter notebook

第五步 成功运行docker容器界面

搬运一个非常nice的Docker镜像

可以以R或者python内核运行相应软件

且本地文件(需要处理的数据)挂载到/mnt,可以读写。

第六步 python和R软件加载

大功告成,有点怀念conda安装包等待的日子。。。