很早就了解過docker,但一直沒機會用(也不是沒機會,主要還是自己懶)。最近可能被工作需求了,才又撿起來了。真的是需求才是動力呀。
sudo service docker start假如想以非 root 用戶的身份使用 docker , 把用戶添加到 docker 用戶組即可。#非 root 用戶使用 dockersudo usermod -aG docker your-user直接在命令行下敲 docker就會有docker的各種命令以及幫助。
docker運行需要鏡像,可以自己做也可以在docker hub上拉一個。
一些簡單的命令網上很多就不囉嗦了。說下自己需要用的一個鏡像AnnotSV。這個軟體是用來做SV(Structural variation)注釋的,當然注釋SV的軟體還有其他的一些,比如VEP等。
首先從docker hub上把該鏡像pull下來(pull之前可用docker search也可在docker hub直接進行搜素)docker pull mgibio/annotsv-cwl:2.3docker run -it mgibio/annotsv-cwl:2.3 AnnotSVdocker run -v /home/wjb/Desktop/sv_test/:/mnt:rw mgibio/annotsv-cwl:2.3 AnnotSV -SVinputFile /mnt/100601044.sv.vcf -SVinputInfo 1 -outputFile /mnt/test.annotated2.tsv -svtBEDcol 4 -annotationsDir /mnt/-v 參數:掛載宿主機目錄到容器內目錄,冒號前為宿主機目錄,後為容器內目錄,最後是以讀寫方式掛載,掛載後宿主機和容器內該目錄下的文件會同步。然後說下Singularity,這個東東是第一次聽說,查了下這個是特意為HPC準備的,安裝也挺麻煩的。##sudo apt-get update && sudo apt-get install -y \ build-essential \ uuid-dev \ libgpgme-dev \ squashfs-tools \ libseccomp-dev \ wget \ pkg-config \ git \ cryptsetup-binexport VERSION=1.15.1 OS=linux ARCH=amd64 && \ wget https://dl.google.com/go/go$VERSION.$OS-$ARCH.tar.gz && \ sudo tar -C /usr/local -xzvf go$VERSION.$OS-$ARCH.tar.gz && \ rm go$VERSION.$OS-$ARCH.tar.gz
echo 'export GOPATH=${HOME}/go' >> ~/.bashrc && \ echo 'export PATH=/usr/local/go/bin:${PATH}:${GOPATH}/bin' >> ~/.bashrc && \ source ~/.bashrcexport VERSION=3.6.0 && wget https://github.com/sylabs/singularity/releases/download/v${VERSION}/singularity-${VERSION}.tar.gz && \ tar -xzf singularity-${VERSION}.tar.gz && \ cd singularity./mconfig && \ make -C ./builddir && \ sudo make -C ./builddir installsingularity 可直接把docker的鏡像轉成自己的格式singularity -d build annotsv.sif docker://mgibio/annotsv-cwl:2.3singularity run annotsv.sif AnnotSV 查看AnnotSV軟體幫助信息singularity run annotsv.sifsingularity run annotsv.sif AnnotSV -SVinputFile /home/wjb/100601044.sv.vcf -SVinputInfo 1 -outputFile /home/wjb/annotsv_result/test.annotated2.tsv -svtBEDcol 4 -annotationsDir /home/wjb/singularity的好處不止是支持HPC,無需掛載宿主機目錄,而且singularity的鏡像直接通過複製到其他地方就可以直接使用,這點更方便部署及遷移。