zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    matlab如何写一个类
    最大稳定极值区域(MSER)检测
    Excel中公式的绝对引用和相对引用单元格
    c++中自增(++)和自减(--)操作符
    C++中的c_str()函数用法
    一些常用的图像数据库
    浅谈C++中指针和引用的区别
    selenium之find_element_by_xpath定位元素
    python selenium使用
    H5页面调用手机扫一扫功能
  • 原文地址:https://www.cnblogs.com/lokwongho/p/11429725.html
Copyright © 2011-2022 走看看