Docker初探:利用Docker运行samtools

# Dockerfile 文件

From ubuntu:18.04
LABEL maintainer="luo <@ibnesayeed>"

WORKDIR /app

RUN apt-get update
RUN apt-get install -y samtools
COPY runsamtools.py /app/
RUN chmod 777 runsamtools.py

ENTRYPOINT ["./runsamtools.py"]
# runsamtools.py 文件

#!/usr/bin/env python
import sys, os

sam = sys.argv[1]
bam = sys.argv[2]

ans = os.system("samtools view -bS "+sam+' > '+bam)

print("well done runsamtools")

 跟着Dockerfile描述的过成,Docker创建一个类似虚拟机的环境,里面装好了runsamtools.py这个脚本要运行需要的东西。

写好了Dockerfile,准备好相关文件后,就创建image

docker image build -t test2_docker:2.0 .
lgh@n100:~/learnDocker/docker_test2$ docker image build -t test2_docker:2.0 .
Sending build context to Docker daemon  3.072kB
Step 1/8 : From ubuntu:18.04
 ---> 20bb25d32758
Step 2/8 : LABEL maintainer="luo <@ibnesayeed>"
 ---> Using cache
 ---> b9a27f206137
Step 3/8 : WORKDIR /app
 ---> Using cache
 ---> 9fc1b9cdab27
Step 4/8 : RUN apt-get update
 ---> Using cache
 ---> cb459d9b1272
Step 5/8 : RUN apt-get install -y samtools
 ---> Using cache
 ---> ddc302bf1173
Step 6/8 : COPY runsamtools.py /app/
 ---> Using cache
 ---> 2430e293231b
Step 7/8 : RUN chmod 777 runsamtools.py
 ---> Running in f848bfae98ff
Removing intermediate container f848bfae98ff
 ---> 589f25feb073
Step 8/8 : ENTRYPOINT ["./runsamtools.py"]
 ---> Running in 99de85f31e02
Removing intermediate container 99de85f31e02
 ---> 0f307b71f219
Successfully built 0f307b71f219
Successfully tagged test2_docker:2.0

 成功后运行这个装在Docker中的脚本:

docker run -v /simm/home/lgh/lgh/gatk_pegasus:/app/files -it --rm test2_docker:2.0 /app/files/test_pe_ans.sam /app/files/create_by_docker.bam

 这里要考虑一个Docker容器和宿主机之间沟通的问题,Dockerfile中指定这个‘虚拟机’的WORKDIR是/app,这里将本地要处理文件的文件夹mount到‘虚拟机’的WORKDIR下,这样,这个‘虚拟机’中的操作就可以在本地文件夹里进行。

(黄底部分是mount的方法:-v /path/in/host:/path/in/docker),完成后最后本地目录下是这样的。

create_by_docker.bam  test_pe_ans.sam
原文地址:https://www.cnblogs.com/lokwongho/p/11429725.html