docker相较于conda做生信分析有很多优势,尤其是在生信流程的搭建,多系统的支持移植性。但Docker学习难度有点高,需要花时间来学习。对于小白来说,初次安装肯定是很困难的,今天我不讲Docker Desktop的安装,这个和大家平时电脑上装微信的流程是差不多的,当然很多童鞋的网速,肯定都受影响,大家多尝试,自己去寻找解决的办法,我第一次安装使用的时候也搞了半天。后期视频课程中我会把需要的资源分享给大家。
下面就以SPAdes为例,看一下Docker在window下的简单使用效果,
世上无难事,只怕有心人。
安装SPAdes
在软件上方搜索Spades.出来很多镜像image,我们选择官方的镜像下载来使用,因为该镜像为State Public Health Bioinformatics Community
(就是下载量最高的那一个选择pull)
![](https://img.haomeiwen.com/i29884827/b5525e8b3b8b1c15.png)
安装成功后就要进行run镜像,我一开始也是选择在Docker Desktop软件中直接run,但是spades跑起来过后自动退出,在网络上搜索了半天终于找到了原因
![](https://img.haomeiwen.com/i29884827/4e1e3a2043b970d2.png)
退出原因
1、docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出(我并没有给Docker desktop 传入其他参数)
2、容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出3、这个是 docker 的机制问题
解决办法
通过命令行重新创建容器:你可以通过命令行(我选择用power shell )创建并启动一个新容器,同时指定命令,以确保它保持运行:
bash
docker run --rm -it -v C:\path\to\data:/data staphb/spades /bin/bash
这样,容器启动后会进入bash shell,而不会立即退出。这样我们就可以在Docker Desktop 中查看镜像当前状态了
![](https://img.haomeiwen.com/i29884827/a0934900c60007de.png)
使用SPAdes进行组装
![](https://img.haomeiwen.com/i29884827/d1b1e33043a259dd.png)
我把双端测序文件 1.R1.fastq.gz和1.R2.fastq.gz 文件放在了C盘suv文件夹下,并和镜像中/data进行映射
打开命令行终端:
在Windows系统中,可以使用 Command Prompt 或 Windows Terminal。
运行以下命令来启动容器并执行SPAdes命令:
bash
docker run --rm -v C:\path\to\data:/data staphb/spades spades.py
--rm
: 容器运行完后自动删除它。
-v
C:\path\to\data:/data
: 将你的本地目录映射到容器内的/data
目录,以便SPAdes可以访问你的输入文件。
staphb/spades
: 这是你拉取的SPAdes镜像名称。
spades.py
-1 /data/sample_1.fastq -2 /data/sample_2.fastq -o /data/output
: 这是你要在容器内执行的SPAdes命令,替换成你的实际文件路径。
命令执行完毕后,容器会自动退出,同时结果会保存到你本地的 C:\path\to\data\output
目录下。
保持容器运行(可选)
如果你希望容器在执行完命令后不立即退出,而是保持运行(例如为了继续操作或检查结果),可以在命令末尾添加&& /bin/bash
:
bash
docker run --rm -v C:\path\to\data:/data staphb/spades bash -c "sp
ades.py -1 /data/sample_1.fastq -2 /data/sample_2.fastq -o /data/output && /bin/bash"
这样做的结果是:
SPAdes命令执行完毕后,容器会进入bash shell,保持运行,直到你手动输入 exit
命令。
总结
使用 docker run
命令启动容器并执行命令是一个非常常见的操作方式,尤其在你希望在容器内快速执行某个任务时。如果你只想执行一次任务并让容器自动退出,那么上述方法完全适用。如果你希望保持容器运行以便进一步操作,也可以通过添加bash命令来实现。
效果如下图(太激动人心了)
我们可以在DockerDesktop中看到他的运行情况
![](https://img.haomeiwen.com/i29884827/9f3d73fc80bae189.gif)
下面是最终运行结果在我的suv文件夹下生成contig 文件
![](https://img.haomeiwen.com/i29884827/c0f523d6b8199cad.png)
网友评论