docker相較于conda做生信分析有很多優(yōu)勢(shì),尤其是在生信流程的搭建,多系統(tǒng)的支持移植性。但Docker學(xué)習(xí)難度有點(diǎn)高,需要花時(shí)間來(lái)學(xué)習(xí)。對(duì)于小白來(lái)說(shuō),初次安裝肯定是很困難的,今天我不講Docker Desktop的安裝,這個(gè)和大家平時(shí)電腦上裝微信的流程是差不多的,當(dāng)然很多童鞋的網(wǎng)速,肯定都受影響,大家多嘗試,自己去尋找解決的辦法,我第一次安裝使用的時(shí)候也搞了半天。后期視頻課程中我會(huì)把需要的資源分享給大家。
下面就以SPAdes為例,看一下Docker在window下的簡(jiǎn)單使用效果,
世上無(wú)難事,只怕有心人。
安裝SPAdes
在軟件上方搜索Spades.出來(lái)很多鏡像image,我們選擇官方的鏡像下載來(lái)使用,因?yàn)樵撶R像為State Public Health Bioinformatics Community
(就是下載量最高的那一個(gè)選擇pull)

安裝成功后就要進(jìn)行run鏡像,我一開(kāi)始也是選擇在Docker Desktop軟件中直接run,但是spades跑起來(lái)過(guò)后自動(dòng)退出,在網(wǎng)絡(luò)上搜索了半天終于找到了原因

退出原因
1、docker容器運(yùn)行必須有一個(gè)前臺(tái)進(jìn)程, 如果沒(méi)有前臺(tái)進(jìn)程執(zhí)行,容器認(rèn)為空閑,就會(huì)自行退出(我并沒(méi)有給Docker desktop 傳入其他參數(shù))
2、容器運(yùn)行的命令如果不是那些一直掛起的命令( 運(yùn)行top,tail、循環(huán)等),就是會(huì)自動(dòng)退出3、這個(gè)是 docker 的機(jī)制問(wèn)題
解決辦法
通過(guò)命令行重新創(chuàng)建容器:你可以通過(guò)命令行(我選擇用power shell )創(chuàng)建并啟動(dòng)一個(gè)新容器,同時(shí)指定命令,以確保它保持運(yùn)行:
bashdocker run --rm -it -v C:\path\to\data:/data staphb/spades /bin/bash
這樣,容器啟動(dòng)后會(huì)進(jìn)入bash shell,而不會(huì)立即退出。這樣我們就可以在Docker Desktop 中查看鏡像當(dāng)前狀態(tài)了

使用SPAdes進(jìn)行組裝

我把雙端測(cè)序文件? 1.R1.fastq.gz和1.R2.fastq.gz? 文件放在了C盤(pán)suv文件夾下,并和鏡像中/data進(jìn)行映射
打開(kāi)命令行終端:
在Windows系統(tǒng)中,可以使用 Command Prompt 或 Windows Terminal。
運(yùn)行以下命令來(lái)啟動(dòng)容器并執(zhí)行SPAdes命令:
bashdocker run --rm -v C:\path\to\data:/data staphb/spades spades.py
--rm: 容器運(yùn)行完后自動(dòng)刪除它。
-v C:\path\to\data:/data: 將你的本地目錄映射到容器內(nèi)的/data目錄,以便SPAdes可以訪問(wèn)你的輸入文件。
staphb/spades: 這是你拉取的SPAdes鏡像名稱(chēng)。
spades.py -1 /data/sample_1.fastq -2 /data/sample_2.fastq -o /data/output: 這是你要在容器內(nèi)執(zhí)行的SPAdes命令,替換成你的實(shí)際文件路徑。
命令執(zhí)行完畢后,容器會(huì)自動(dòng)退出,同時(shí)結(jié)果會(huì)保存到你本地的 C:\path\to\data\output 目錄下。
保持容器運(yùn)行(可選)
如果你希望容器在執(zhí)行完命令后不立即退出,而是保持運(yùn)行(例如為了繼續(xù)操作或檢查結(jié)果),可以在命令末尾添加&& /bin/bash:
bashdocker 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"
這樣做的結(jié)果是:
SPAdes命令執(zhí)行完畢后,容器會(huì)進(jìn)入bash shell,保持運(yùn)行,直到你手動(dòng)輸入 exit 命令。
總結(jié)
使用 docker run 命令啟動(dòng)容器并執(zhí)行命令是一個(gè)非常常見(jiàn)的操作方式,尤其在你希望在容器內(nèi)快速執(zhí)行某個(gè)任務(wù)時(shí)。如果你只想執(zhí)行一次任務(wù)并讓容器自動(dòng)退出,那么上述方法完全適用。如果你希望保持容器運(yùn)行以便進(jìn)一步操作,也可以通過(guò)添加bash命令來(lái)實(shí)現(xiàn)。
效果如下圖(太激動(dòng)人心了)
我們可以在DockerDesktop中看到他的運(yùn)行情況

下面是最終運(yùn)行結(jié)果在我的suv文件夾下生成contig?文件
