Docker与生物信息学
Docker是近年来新起的一种应用(计算机)分发工具,它极大的方便了人们获取、构建、发布软件应用。
在生物信息学领域,很重要的一环就是开发用于数据分析的工具或软件包。在没有Docker之前,人们总是要对各类软件的错综复杂的依赖问题头痛不已(事实上Conda/Bioconda等目前被广泛应用的软件包管理工具总是会出现一些问题)。现在,Docker似乎为生物信息学相关从业人员提供了一个释放自己的途径,我相信在不久的将来,使用Docker进行生物信息学应用、软件的发布将成为共识。
目的
作为一名生物信息专业学生,Docker在很早之前就被我列入了必学的项目之一,现在我也逐渐开始将新开发的项目使用Docker进行打包。这篇博文主要目的在于记录一些最常用的一些Docker命令和学习资源,并谈谈我对Docker在生物信息学相关领域上应用的一些看法。
Docker的常用命令
# 可以跳过直接运行下一步
docker run learn/tutorial
更多Docker的操作以及配置见官方文档
Dockerfile
Dockerfile是一种用于自动化构建Docker Image的配置文件,它可以让其他用户知道自己正在使用的容器是如何构建的,自己有没有可修改或定制的地方。如果,你正在使用的Image是由其他用户通过交互式操作构建的:
;apt install r-base
docker commit -m
那么你是很难知道容器里做了哪些修改,有没有嵌入恶意代码,所以,我们需要一个文件记录用户所有的操作,并让其他用户可以便于查看或修改 (详细讲解):
Docker的大与小
Docker容器可大可小(alpine似乎正在成为一种最小化构建Docker容器的标准):
- 用“小”容器够建不需要太多外界依赖数据的各类应用(BWA、SAMtools .etc),这些应用往往在编译或安装之后就可以开始使用;
- 还有一类就是各种大型的网页应用、依赖软件众多的Pipeline,这类软件应用配置起来最为麻烦,或许在一个容器内完成会更加方便(数据库除外),或者是使用compose来进行组合多个容器构建应用。
Docker的不便之处
- Docker运行需要ROOT权限(以后也一定需要),对于大多数非云计算的高性能计算而言,只能够使用conda等工具完成相应分析环境部署
- Docker容易带来一些额外的存储,如重复的依赖、重复的数据等等。特别地,如果软件开发人员不能够很好的拆分应用到不同容器中,将会带来很多冗余文件,对于硬盘紧张的用户来说可能压力会比较大
使用非ROOT用户使用docker
${
Docker的一些常用链接
- Docker Github
- Docker Home
- Docker Hub
- Docker Document
- Moby Project
- awesome-docker: A curated list of Docker resources and projects
- compose: Define and run multi-container applications with Docker
- docker菜鸟教程
- Docker 的应用场景在哪里?
- 非常详细的 Docker 学习笔记