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 .
[email protected]:~/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

时间: 2024-10-13 05:57:11

Docker初探:利用Docker运行samtools的相关文章

利用docker compose启动gitlab及runner

添加docker compose配置文件 新建文件docker-compose.yml,输入如下内容: gitlab: image: 'gitlab/gitlab-ce:latest' container_name: 'gitlab' restart: always hostname: 'gitlab.cjx.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://gitlab.cjx.com' # Add any othe

利用docker 最新漏洞渗透--提取root 权限

一.事出 近期乌云漏洞平台等科技新闻,爆出Docker虚拟化 端口漏洞,本着热爱开源,实践动手的精神,我也去尝试了下,漏洞严重性确实很高,可以拿到root 登陆账户. 二.还原 2.1 通过扫描,我们找到了一些主机,下面是其中一台运行了docker 主机的服务器,并且开了ssh 端口 知道了22端口后,我们后面会利用此端口来使用root免密码登陆该主机. 2.2 我们可以利用2375 端口做什么? 看到上面的信息后,我们就知道,可以管理该主机上的docker 容器了,启动.停止.创建.下载镜像.

利用Docker构建开发环境

最近接触PAAS相关的知识,在研发过程中开始使用Docker搭建了自己完整的开发环境,感觉生活在PAAS时代的程序员真是幸福,本文会简要介绍下Docker是什么,如何利用Docker来搭建自己的开发环境(本文主要是面向Mac OS X),以及期间所遇到的一些坑和解决方案.(本文会要求你对PAAS.LXC.CGroup.AUFS有一定的了解基础,请自行Google ) 大背景–虚拟化技术历史 计算机虚拟化技术由来已久,从硬件仿真到全虚拟化,再到准虚拟化和操作系统虚拟化,各种技术粉墨登场,种类繁多,

ubuntu14.04环境下利用docker搭建solrCloud集群

主要内容: 技术关键点:docker17.06.3安装,docker自制镜像及相关容器操作,docker分配固定IP及添加端口映射,solrCloud集群部署等 主要思路:在Ubuntu14.04操作系统的宿主机中,安装docker17.06.3,将宿主机的操作系统制作成docker基础镜像,之后使用自制的基础镜像在docker中启动3个容器,分配固定IP,再在3个容器中配置solrCloud集群. 注:solrCloud采用的solr内置jetty,需要单独配置zookeeper 容器IP及名

Riddler助力Docker容器为runC运行环境做准备

这篇文章由www.mingpaixinxi.com名牌信息网转载:这是一个关于标准化带来的优势的故事,同时介绍如何利用Riddler转换一个Docker容器为runC镜像.Riddler由容器开发者Jess Frazelle研发. Phil Estes 是IBM开放云技术的高级技术经理,他将在本周多伦多的LinuxCon会议上介绍Riddler的性能. 运行,运行,运行! 回顾开放容器,runC是一个开源引擎和规范运行容器,它遵守OCI的规范,包括Docker在内.runC的思想配合远景规划,是

有容云:实战总结之 利用Docker、Docker Compose &amp;Rancher构建持续部署

前言: 本文由John Patterson . Chris Lunsford写于2016年4月4日,译者有容云张向波,转载请注明出处.(原文链接见文末) 作者John Patterson和Chris Lunsford 运营了一家提供运营和基础架构服务的公司,本文是他们给大家分享的内容:关于如何通过使用Docker.Docker-Compose和Rancher来实现容器部署落地. 我们想跟你一起从头开始体验整个过程,特别是之间遇到的一些痛点和所做的决策.目前,已经有许多的资源和工具可以与Docke

[转]利用Docker构建开发环境

利用Docker构建开发环境 Posted by makewonder on 2014 年 4 月 2 日 最近接触PAAS相关的知识,在研发过程中开始使用Docker搭建了自己完整的开发环境,感觉生活在PAAS时代的程序员真是幸福,本文会简要介绍下Docker是什么,如何利用Docker来搭建自己的开发环境(本文主要是面向Mac OS X),以及期间所遇到的一些坑和解决方案.(本文会要求你对PAAS.LXC.CGroup.AUFS有一定的了解基础,请自行Google ) 大背景–虚拟化技术历史

Docker学习总结(8)——利用Docker开启持续交付之路

持续交付即Continuous Delivery,简称CD,随着DevOps的流行正越来越被传统企业所重视.持续交付讲求以短周期.小细粒度,自动化的方式频繁的交付软件,在这个过 程中要求开发.测试.用户体验等角色紧密合作,快速收集反馈,从而不断改善软件质量并减少浪费.然而,在我所接触的传统企业中,对于持续交付实践的实施都 还非常初级,坦白说,大部分还停留的手工生成发布包,手工替换文件进行部署的阶段,这样做无疑缺乏管理且容易出错.如果究其原因,我想主要是因为构建一个 可实际运行且适合企业自身环境的

Docker的安装和镜像管理并利用Docker容器实现nginx的负载均衡、动静分离

Docker的安装 一.Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 二.安装Docker 1.检查内核版本 # uname -r      查看当前linux得版本信息 Docker要求CentOS7最低内核版本为3.1版本 2. 关闭防火墙和selinux # systemctl stop firewalld #