跟着jimmy学docker系列之第4讲:docker容器资源调度问题(MAC版本)

前面我们复习了docker的用法,而且我还带领大家亲自构建了一个自己的docker容器,也成功的在测试数据集里面运行了,但是前面我说的,我这次搞docker是因为真的有需求,那么就必然要处理我的真实数据。

这个时候的bam文件是10-20G大小了,不是我GitHub上面的几十个K的小测试文件,真正跑起来才发现,进程总是被kill掉,因为内存的问题,所以就有了本教程。

前面第三讲我创建了自己的docker容器,而且还成功的在小数据集上面测试成功啦,但是想真正分析大数据的时候发现进程总是被killed,仔细想了想应该是docker容器能调用的资源被限制,所以也搜索学习了一些。

在使用 docker 运行容器时,一台主机上可能会运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU、内存和磁盘资源。如果不对容器使用的资源进行限制,那么容器之间会互相影响,小的来说会导致容器资源使用不公平;大的来说,可能会导致主机和集群资源耗尽,服务完全不可用。

docker 作为容器的管理者,自然提供了控制容器资源的功能。正如使用内核的 namespace 来做容器之间的隔离, docker 也是通过内核的 cgroups 来做容器的资源限制。 可以参考:

  • 使用 docker 对容器资源进行限制
  • Docker 运行时资源限制

本来我也是按部就班的理解前辈们的教程,调整参数希望可以调度资源,最后始终无法解决问题,就求助了在华为生信云容器的北大胡博士,他指出来了我的docker是安装在我的iMac上面,所以这些教程都不能使用。

如果我要修改内存和CPU,直接跳转界面版本的docker的preference 即可。

如果资源配置好了?

docker run -it -v  /Users/jmzeng/data/project/:/work_dir jmzeng/lancet:v1.0   /bin/bash
root@ca3a9e72b32f:/# cd /work_dir/lancet/
## 脚本如下:
## 也可以设置;--num-threads 
ref=/work_dir/ref/Homo_sapiens_assembly38.fasta
cat config  |while read id;
do
    arr=($id)
    normal_bam=${arr[1]}
    tumor_bam=${arr[2]}
    sample=${arr[0]}
    echo $id;

    for chrom in {1..22} X Y  M;do
        echo $chrom
        echo "lancet --tumor $tumor_bam --normal $normal_bam --ref $ref --num-threads 4 --reg chr$chrom > ${sample}_chr${chrom}.vcf"
        lancet  --tumor   $tumor_bam  --normal   $normal_bam --ref  $ref  --num-threads 4  --reg chr$chrom > ${sample}_chr${chrom}.vcf
    done

done
# lancet --tumor t1.bam  --normal  n.bam  --ref  ref/Homo_sapiens_assembly38.fasta --reg  chr3:179230000-179240000 > t1.vcf

现在就可以批量把所有的肿瘤配对WES数据走一波lancet软件,得到somatic的vcf格式的突变记录文件啦。非常方便。可以看到docke把mac的cpu全部调用了

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Brian

Docker 学习系列一之原理

---- Docker 认识 在谈及Docker时,不得不牵扯到一个现在很重要的一个领域:云计算。云计算是一种资源的服务模式,该模式可以按需的从可配置计算资源共...

37090
来自专栏企鹅号快讯

在 KubeCon 大会上备受关注的 K8S Helm 到底是什么?

作者:王青,JFrog 中国首席架构师,之前在 IBM,HPE,爱奇艺,新浪,VIPKID 等公司做过研发和架构,是有十多年开发经验的互联网老兵,专注于软件生命...

35980
来自专栏FreeBuf

浅谈Docker隔离性和安全性

介绍 相信很多开发者都默认Docker这样的容器是一种沙盒(sandbox)应用,也就是说他们可以用root权限在Docker中运行随便什么应用,而Docke...

54080
来自专栏IBG JOOX的专栏

JOOX Music & targetversion25 爬坑指南

文章提到的问题都是一点一点慢慢爬出来的,虽然说网上的适配文章很多,但是大部分内容都是相同的,当遇到一些比较偏的问题只能说是自己慢慢爬了,写这篇文章也是为了方便大...

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

在容器中部署MySQL和Hadoop集群(内含视频)

前言 之前,笔者发表的《非开发人员看Devops--从一张图谈起》的文章,在不到24小时内,阅读量已经达到1100,说明大家对DevOps和OpenShift此...

35660
来自专栏宝哥的专栏

Docker系列学习文章 - 镜像仓库的介绍(七)

| 导语 前面我们讲了镜像的制作,知道了镜像是怎么生成的。但是镜像制作好了后,要怎么管理?他们存在哪里。通过本篇文章的讲解,大家就清楚了。

2.4K180
来自专栏Albert陈凯

Windows环境VMWare WorkStation 12安装步骤

如果您已经安装好了虚拟机软件,下面文章链接是虚拟机安装Linux操作系统:http://www.jianshu.com/p/9a65e26cb1c7 双击安装文...

34470
来自专栏魏艾斯博客www.vpsss.net

如何下载安装使用 SSH 软件

24550
来自专栏北京马哥教育

docker容器技术系列一:基本概念

前言:从去年下半年开始,我们就尝试在使用docker部署生产应用,至现在已经有十多个项目使用了docker容器部署,docker为我们节约 了大量的服务器资源,...

30840
来自专栏Rainbond开源「容器云平台」

在生产环境使用Kubernetes一年后,我们总结了这些经验和教训

31630

扫码关注云+社区

领取腾讯云代金券