跟着jimmy学docker系列之第2讲:一个软件一个容器

✎✎✎

回过头来看当初在生信技能树发布的docker教程已经是2017-07-07的事情了,那是一个好日子?:

我学会docker啦!希望你也可以学会

其实当时只是为了写教程而学习和分享,一直没有找到docker的实际应用场合,当初带我入docker坑的胡博士也离开北大毕业去了华为工作。

而为什么我会重新捡起来docker,可能也是机缘巧合吧,华为生信容器负责人唐博士一直想要合作,我却找不到跟他们的合作接入点,既然是基于docker的合作,我如果都不真正使用它,也的确说不过去,正好最近安装lancet软件各种make报错,缺的系统动态库太多,而它是没有conda源的,这个时候docker是最佳方案。

jimmy的docker教程——第2讲

一个软件一个容器

首先需要复习几个docker指令:

docker
docker info ## 可以查看目前机器上面的docker里面有多少容器或者镜像。
docker version
sudo docker search ubuntu
sudo docker run hello-world 
## 上面代码下载了一个镜像,启动了一个容器,下面就可以查看它们
docker ps -a  ## 查看目前所有没有被销毁的容器进程。
docker images -a ## 查看目前所有的本地镜像 
docker volume ls  
docker network ls 

1. 根据需求下载docker镜像

在服务器上,GitHub里面的软件(https://github.com/nygenome/lancet)安装非常困难

于是想求助于docker版本:https://hub.docker.com/r/seandavi/lancet/

docker run seandavi/lancet

可以看到:

jmzeng$ docker images -a
REPOSITORY          TAG      IMAGE ID        CREATED             SIZE
seandavi/lancet     latest   1a83521f4492    12 days ago         490MB

的确是有了这个本地镜像,现在可以启动该容器来处理自己的数据。

2. 启动镜像

首先

可以用交互式命令行进入该镜像:

docker run -it seandavi/lancet /bin/bash

简单查看配置还有该容器的路径,接下来就可以把本地数据盘挂载进入进行处理。这样在容器启动后,容器内的虚拟电脑会自动创建被添加的目录。

-v参数中,冒号 " : " 前面的目录是宿主机目录,后面的目录是容器内目录。详见:http://blog.csdn.net/magerguo/article/details/72514813

docker run -it -v /Users/jmzeng/tmp:/work_dir seandavi/lancet /bin/bash
                  ----------------- -------------------------
                          ↓                    ↓
                       宿主机目录           容器内目录                   

这样docker能访问本机的/Users/jmzeng/tmp的内容,同时对镜像容器里面的/work_dir目录的修改等同于对本机的/Users/jmzeng/tmp的修改

3. 处理数据

软件示例代码很简单:

lancet --tumor T.bam --normal N.bam --ref ref.fa --reg 22:1-51304566 --num-threads 8 > out.vcf

有趣的是作者制作的镜像其实也有错误,lancet软件安装是失败的,不过docker的好处是里面可以使用root权限。

apt-get install libbz2-dev
apt-get install zlib1g-dev
apt-get install liblzma-dev
apt-get install libssl-dev
apt-get install libbamtools-dev
apt-get install libcurl4-openssl-dev

但是为什么jimmy不自己创建一个成功的lancet镜像呢?

当然是还有续集啦!

原文发布于微信公众号 - 生信技能树(biotrainee)

原文发表时间:2018-10-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏纯洁的微笑

Docker(一):Docker入门教程

如今Docker的使用已经非常普遍,特别在一线互联网公司。使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力。在云服务概念兴起之后,D...

3635
来自专栏云计算

容器只是一个起点

容器,Docker,Kubernetes已经出现有四年了。以致于有些人甚至认为这项技术是成熟的!但是,我强烈认为,容器基础设施的构造任然处于成长阶段。

2359

Docker 的五大优点:持续部署、版本控制、可移植性、隔离性和安全性

我相信 Docker 不需要我过多介绍,它是目前最热门的开源项目之一。您可以使用 Docker 在容器中添加一个抽象层以部署不同的应用程序。在 Docker 生...

4658
来自专栏我是攻城师

8 个你可能不知道的 Docker 知识

3033
来自专栏大魏分享(微信公众号:david-share)

如何将Openshift对接CloudForms云管平台?

Openshift对接云管平台的目的 Openshift是红帽一款优秀的PaaS解决方案。目前国内的行业客户,如金融、电信、制造等,在云平台的构建上,逐渐从Ia...

4225
来自专栏技术翻译

一起使用Kubernetes和Docker的优点

您可能会听到很多关于Kubernetes和Docker的信息 -您可能想知道哪一个更好。

1.5K0
来自专栏安恒信息

Docker 2375端口漏洞 全网安全风险报告

1. Docker简述 ? Docker图标 Docker是一个开源的应用容器引擎,基于LXC的高级容器引擎,源代码托管在Github 上,基于go语言并遵从...

50910
来自专栏云计算D1net

8个你可能不知道的Docker知识

自从上世纪 90 年代硬件虚拟化被主流的技术广泛普及之后,对数据中心而言,发生的最大的变革莫过于容器和容器管理工具,例如:Docker。在过去的一年内,Dock...

3705
来自专栏CSDN技术头条

如何构建企业级Docker Registry Server

很多人问我,虚拟机镜像和docker镜像的区别是什么?其实区别非常明显,我们可以通过阅读Dockerfile文件就可以知道这个镜像都做了哪些操作,能提供什么服务...

23410
来自专栏云计算

Docker带来的五大益处:CI,版本控制,可移植性,隔离性和安全性

Docker的跨环境一致性在开发界已经获得了广泛认可。通常情况下,开发阶段和正式发布的环境之间总会有细微的差异。除非你拥有自己的私有仓库,并严格检查。这些差异可...

3739

扫码关注云+社区

领取腾讯云代金券