写在前面
这个学期,我新开了一门研究生课程《园艺植物生物信息学实践》,尽管现在三次课下来,发现99%的时间都在讲理论知识和进展前沿,但还有1%的时间,我会给大伙演示如何运行一些软件。过去三四年,参与到课程教学或者培训,我们都在用 Vitural Box做虚拟机镜像。今年我想着还是搞点自己一直想做但是没做的事情,尽管过程可能会比较痛苦。当然,确实痛苦。尤其是今天。
早晨其他软件都有好心人打包好的镜像放在 docker hub,我需要的就是一个 docker pull。但是 ALLHiC 就比较尴尬。
ALLHiC 的docker image
我们可以简单的在 docker hub 上面找到这个镜像。
但这个镜像似乎就只是....放了一个ALLHiC的压缩包?或者是另外的 conda env?
但进去 conda 发现,似乎就没有 env。换句话说,直接用不了?
那咋整?晚上还要上课呢。
自己写 Dockerfile
想来想去,只能靠自己了。于是靠着 百度 和 Bing,看看 Dockerfile 的基本语法(其实几年前,我有简单用过,这个基础估计也是有帮助)。写成文件如下,
FROM continuumio/miniconda
COPY ALLHiC-master.zip /ALLHiC-master.zip
RUN conda install -y python=3.7
RUN conda install -y -c bioconda matplotlib ParaFly
RUN conda install -y -c bioconda bwa bedtools pysam samtools
RUN conda install -y unzip
RUN unzip ALLHiC-master.zip
RUN chmod a+x -R ALLHiC-master
RUN ln -s /opt/conda/lib/libcrypto.so.1.1 /opt/conda/lib/libcrypto.so.1.0.0
ENV PATH=/ALLHiC-master/bin/:/ALLHiC-master/scripts/:${PATH}
简单的几行,还是花了我两三个小时的,关键是,我早上的时候课件还没做,下午要开组会,哪里折腾得起。优化就先不做了。逻辑上有两点可以做:
- 可以做 conda clean,这样镜像会小很多
- 可以用 && 把 RUN 串起来,这样docker 少刷几层
当然还有其他.....Anyway,能用就行,上课够了。课后大伙上服务器,也直接 Singularity 啦。
写在最后
Emmm,没想到,我还是很厉害,毕竟这可以算是我写的第一个能用的 Dockerfile。今天正好海南香蕉哥也问到我docker的问题。恍惚间,我想起了几年前与瑜胖的讨论,他现在真是.....Rich。每个人都有自己的判断,有自己的选择。
网友评论