docker使用
摘录自
[生信技能树](javascript:void(0);) 跟着jimmy学docker系列
首先需要复习几个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
- 根据需求下载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
的确是有了这个本地镜像,现在可以启动该容器来处理自己的数据。
这里需注意,如果你的TAG不是latest,就这么使用
image.png
docker run -it romanhaa/xenocell:1.0 /bin/bash
REPOSITORY 后面跟冒号再跟TAG
- 启动镜像
[图片上传中...(image.png-2db5dc-1590745054311-0)]
首先
可以用交互式命令行进入该镜像:
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的修改
- 处理数据
软件示例代码很简单:
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