Docker日常使用

Docker 介绍

Docker是目前使用率最高的容器技术,详细技术介绍可以参考Docker官方网站( https://docs.docker.com ) 或者中文社区( https://www.docker.org.cn/index.html )。对生信用户来说,Docker容器提供了独立的程序运行环境。不同用户通过使用不同的Docker镜像,拥有了独立的运行环境,包括使用自己熟悉的Linux发行版(centos、ubuntu等等),使用自己需要的软件版本等等。如果不使用容器,用户和系统管理员之间需要大量交互和协商。版本冲突也可能导致计算资源和特定软件绑定,造成资源浪费。Docker很好的解决了这个问题。

Docker


Docker 技术几个重要概念

  • 镜像(image): 所谓镜像,是指一个静态的系统环境。用户可以创建、删除。镜像是一个系统的静态展现,其中包含了系统相关的文件以及软件。
  • 容器(container) : 容器是系统的一个实例,即运行着某一条或一些命令的系统。
  • Docker 服务:Docker 镜像资源的使用依托于Docker 服务。Linux 用户可以通过系统管理员用户,安装docker 命令来获取Docker 服务。
  • 宿主机 :指运行Docker 服务的机器,此处一般指一台实体的计算机。

如何获取Docker镜像

为了生物信息相关工作者,更方便的使用Docker 容器化技术。极道科技为用户提供了的Docker hub(link here), 用户可以轻松获取生物信息相关的分析软件的镜像资源。

用户可通过在宿主机上运行以下命令来获取镜像资源:

docker pull [镜像名称:标签]

如何制作自己的Docker镜像

虽然目前公开的镜像资源十分丰富,但依然有相当多的工具需要使用者自己进行安装。下面将向用户介绍如何制作自己的镜像资源。

方法一: 手动安装

以安装常用的 blast 程序为例,用户可以先在宿主机下载其对应的程序

cd /mnt/software
wget -c https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.11.0+-x64-linux.tar.gz

下载后,继续在宿主机上运行

sudo docker run -itv /mnt/software:/mnt/software centos:latest bash ## 基础镜像为CentOS 系统
[root@8fa35a09a8a1 /]#  ## 此时已经进入一个CentOS 容器,Docker 服务会为每个容器随机分配ID ,在本示例中,容器ID 为 8fa35a09a8a1

此时,用户已经进入了Docker 容器内,并且已经将宿主机的 /mnt/software 目录,挂载至容器的 /mnt/software 目录下了。用户可以进一步对容器进行软件安装。

[root@8fa35a09a8a1 /]# mkdir /mysoft-ware/ ; cp /mnt/software/ncbi-blast-2.11.0+-x64-linux.tar.gz /mysoft-ware/ ; cd /mysoft-ware/ ## 将下载的压缩包复制到 /mysoft-ware/ 目录下
[root@8fa35a09a8a1 /]# tar -xzvf ncbi-blast-2.11.0+-x64-linux.tar.gz 
[root@8fa35a09a8a1 /]# ls /mysoft-ware/blast-2.11.0/bin/  

[root@8fa35a09a8a1 /]# exit

此时blast已经安装完成,用户可以运行下面的命令,将容器固定化为镜像

docker commit 8fa35a09a8a1 blast:2.11.0 ## 将容器固化为镜像
docker push blast:2.11.0 ## 将镜像推送至集群源

方法二: 通过Dockerfile制作镜像

用户也可以通过Dockerfile 生成镜像,以samtools 的镜像为例,下面为其对应的Dockerfile 中的内容

################## BASE IMAGE ######################

FROM biocontainers/biocontainers:latest

################## METADATA ######################
LABEL base.image="biocontainers:latest"
LABEL version="2"
LABEL software="Samtools"
LABEL software.version="1.3.1"
LABEL about.summary="Tools for manipulating next-generation sequencing data"
LABEL about.home="https://github.com/samtools/samtools"
LABEL about.documentation="https://github.com/samtools/samtools"
LABEL license="https://github.com/samtools/samtools"
LABEL about.tags="Genomics"

################## MAINTAINER ######################
MAINTAINER Saulo Alves Aflitos <sauloal@gmail.com>

RUN conda install samtools=1.3.1

WORKDIR /data/

CMD ["samtools"]

用户将上述内容保存为Dockerfile 后,执行以下代码可以生成对应的镜像

cp /path/to/Dockerfile ./
docker build ./

镜像的使用

运行一个程序

用户可以通过以下命令运行一个docker 任务

docker run -it [image_name:tag] [/path/to/program]

特别地,用户可以通过

docker run -it [image_name:tag] bash

进入镜像,运行程序

进入一个存在的容器

对于一个已经存在的容器,用户可以通过以下命令进入容器查看运行状态

docker exec [container-id] bash

如何映射和访问存储卷

在实际使用上,Docker 必然需要与宿主机存在数据交互。在使用时需要用户启动容器时,增加挂载位置信息,其具体命令如下

docker run -v /path/to/local:/path/to/container [image_name:tag] [program]

Powered by XTAO TechnologyLast Modified On:2021 2023-03-24 09:05:17

results matching ""

    No results matching ""