前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着jimmy学docker系列之第3讲:为何不创建自己的docker容器呢?

跟着jimmy学docker系列之第3讲:为何不创建自己的docker容器呢?

作者头像
生信技能树
发布2018-10-25 11:44:16
5330
发布2018-10-25 11:44:16
举报
文章被收录于专栏:生信技能树生信技能树

✎✎✎

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

前面我们说到,在docker仓库下载的那个容器是错误的,因为它配置的Ubuntu库文件不够,所以我更新了,形成了自己的容器

jimmy的docker教程——第3讲

为何不创建自己的docker容器呢?

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

代码语言:javascript
复制
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 

用commit命令创建镜像

首先下载一个镜像,并以此创建运行容器,这样就可以在容器里面操作它了,整理后就是自己的容器啦。

代码语言:javascript
复制
sudo docker pull ubuntu
docker run -it ubuntu    
## -it运行的容器是交互式的,直接进入了容器里面,进行下面的操作
cat /etc/issue.net 
uname -a 
cat /etc/lsb-release 
apt update && apt upgrade

apt -y install wget curl g++ gcc make cmake  git 
apt -y install bzip2 zip unzip  zlib1g zlib1g-dev libncurses5-dev   
apt -y install libbz2-dev liblzma-dev libssl-dev libbamtools-dev libcurl4-openssl-dev

mkdir -p /opt/
cd /opt/
git clone git://github.com/nygenome/lancet.git
cd lancet
make
ln -s /opt/lancet/lancet /usr/bin/lancet
mkdir /test && cd /test  
mkdir ref 
## https://console.cloud.google.com/storage/browser/genomics-public-data/resources/broad/hg38/v0?pli=1 
## lancet --tumor t1.bam --normal n.bam --ref ref/Homo_sapiens_assembly38.fasta --reg chr3:179230000-179240000 > t1.vcf 
exit

要把它当前状态保存下来,就不必每次都创建一个新容器并再次安装 wget/make这些小工具 先用exit命令退出容器,再运行docker commit命令!

代码语言:javascript
复制
docker images
sudo docker commit -a 'jimmy' -m ‘lancet:v1.0’ a0db8d411f52 jmzeng/lancet:v1.0
docker images

提交镜像: 执行命令提交镜像到本地(这个跟git的其实是一样的,先提交镜像到本地,才能推送到你的远程镜像仓库,一定要注意提交的镜像名格式 帐号/名字:如 jmzeng/lancet,否则无法推送) https://hub.docker.com/u/jmzeng/ 解释参数:

  • -m: 提交的描述信息
  • -a: 指定镜像作者

提交镜像到本地可以看到:

代码语言:javascript
复制
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
jmzeng/lancet       v1.0                f86af09c0cc8        4 seconds ago       548MB
ubuntu              latest              cd6d8154f1e1        4 weeks ago         84.1MB

这个548MB的就是需要上传到docker hub的, 上传需要登录自己的账号密码,执行命令: docker login 登录你的 hub.docker 帐号 , 登录成功后就可以使用来提交自己自己好的镜像到远程仓库,这个时候就很考验网速啦。

上传完毕就可以去 https://hub.docker.com/u/jmzeng/ 里面查看是否成功。

不过,好像大多数人更推荐直接使用dockerfile来构建镜像,所以我可以把上面的操作转换为 dockerfile 形式的。

使用dockerfile创造lancet镜像

代码也很简单,如下:

代码语言:javascript
复制
## Update the repository sources list
RUN apt update && apt upgrade
RUN apt -y install wget curl g++ gcc make cmake  git 
RUN apt -y install bzip2 zip unzip zlib1g zlib1g-dev libncurses5-dev   
RUN apt -y install libbz2-dev liblzma-dev libssl-dev libbamtools-dev libcurl4-openssl-dev

RUN mkdir -p /opt/
WORKDIR /opt/
RUN git clone git://github.com/nygenome/lancet.git
WORKDIR /opt/lancet
RUN make
RUN ln -s /opt/lancet/lancet /usr/bin/lancet
RUN mkdir -p /test/
WORKDIR /test/
RUN mkdir -p /ref/

参考:

http://wiki.jikexueyuan.com/project/docker/docker-hub/builds.html

https://segmentfault.com/a/1190000012662268

使用自己的镜像

我制作的镜像是:jmzeng/lancet:v1.0 简单运行即可

代码语言:javascript
复制
docker run -it -v  /Users/jmzeng/data/project:/work_dir jmzeng/lancet:v1.0 /bin/bash 
lancet --tumor T.bam --normal N.bam --ref ref.fa --reg 22:1-51304566 --num-threads 2 > out.vcf
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档