Bioconductor的Docker容器

码头工人将软件打包到自包含的环境中,称为容器,其中包含运行所需的依赖项。容器可以运行在任何操作系统上,包括Windows和Mac(使用现代Linux内核)码头工人引擎

容器也可以部署在云使用亚马逊弹性容器服务谷歌Kubernetes引擎Microsoft Azure容器实例

快速启动

  1. 安装码头工人

  2. 使用Bioconductor和RStudio运行容器

    docker run \ -e PASSWORD=bioc \ -p 8787:8787 \ bioconductor/bioconductor_docker:devel

    这个命令将运行docker容器bioconductor / bioconductor_docker:猛击在本地机器上。

    RStudio可以在您的浏览器上使用http://localhost:8787.USER是固定存在的rstudio.上面命令中的密码为bioc但它可以设置为任何值。8787是docker容器和主机之间映射的端口。备注:密码不能为rstudio

    用户已登录rstudio默认用户。

为什么要使用容器

通过Bioconductor容器,我们希望增强

我们的目标是为Bioconductor的当前版本和开发版本以及一些旧版本提供最新的容器。Bioconductor的Docker图像存储在Docker Hub中;源代码都在Github上。

我们的发布图像和devel图像是基于摇臂项目-摇臂/ rstudio图像,并在生物导体发布时构建。

新容器体系结构的目标

迁移到一组新的Docker容器时,我们的几个关键目标是:

当前容器

对于每个支持版本的Bioconductor,我们提供

Bioconductor的Docker图像存储在码头工人中心;源Dockerfile在Github

使用的容器

可以找到组织良好的流行docker命令指南在这里.为了方便起见,下面是一些用于入门的命令。下面的示例使用bioconductor / bioconductor_docker:猛击的形象。

注意:你可能需要提前准备sudo对所有码头工人命令。但先不要吃。

先决条件:在Linux上,需要Docker安装Mac窗户您需要安装并运行Docker工具箱。

列出本地可用的docker机器
码头工人的图片
运行列表容器
码头工人ps
列出所有容器
码头工人ps -
恢复已停止的容器
docker start 
装入正在运行的容器中
docker exec -  /bin/bash
关闭集装箱
docker stop 
删除容器
docker rm 
删除图片
码头工人rmi bioconductor / bioconductor_docker:猛击

运行的容器

上面的命令可能很有帮助,但运行Bioconductor Docker的真正基础是提取公共映像并运行容器。

获取公共docker映像的副本
码头工人拉bioconductor / bioconductor_docker:猛击
运行RStudio服务器:
docker run -e PASSWORD=< PASSWORD > \ -p 8787:8787 \ bioconductor/bioconductor_docker:devel . txt

然后可以打开一个web浏览器,指向位于端口8787上的docker主机。如果您在Linux上并使用默认设置,则docker主机是127.0.0.1(或本地主机,所以RStudio的完整URL为http://localhost: 8787).如果你在Mac或Windows上运行码头工人工具箱,您可以使用docker-machine ip违约命令。

在上面的命令中,- e密码=正在设置RStudio密码,这是RStudio Docker映像所要求的。它可以是任何你喜欢的,但它不可能是rstudio.使用用户名登录RStudiorstudio以及指定的密码。

如果您想在您的主机上以用户的身份运行RStudio,以便读写主机目录中的文件,请执行以下操作读到这

注意:如果您忘记添加标签重击RELEASE_X_Y在使用bioconductor / bioconductor_docker图像,它将自动使用最新的标签,指向Bioconductor的最新发布版本。

从命令行运行R命令。
运行————user rstudio bioconductor/bioconductor_docker:devel R
打开容器上的Bash shell:
运行——user rstudio bioconductor/bioconductor_docker:devel bash

请注意:码头工人运行命令是非常强大和多才多艺的。要获得完整的文档,请键入码头工人运行——帮助或访问帮助页面

回到顶部

安装额外的体积

一个这样的选项码头工人运行- v将一个额外的卷挂载到docker映像。这可能对挂载本地R install目录以便在docker上使用很有用。应该映射到本地R库目录的docker映像上的路径为/usr/local/lib/R/host-site-library

下面的示例将把本地安装的包挂载到这个docker目录。然后,该路径会自动加载到R中.libPaths在docker映像上和所有我本地安装的包都可以使用。

使用docker-compose

运行docker-compose文件docker-compose.yaml从同一个目录,

docker-compose起来

使用docker-compose,用户只需一个命令就可以启动图像。RStudio映像在http://localhost:8787

docker-composer.yaml包括设置,使用户不必担心设置端口,密码(默认是bioc),或者用来保存库的卷。

库路径(其中安装了所有包)将自动配置为使用卷$ HOME / R / bioconductor_docker / < bioconductor_version >在Bioconductor 3.13版本的情况下,是这样的$ HOME / R / bioconductor_docker / 3.13.这个位置安装在路径上,/usr/local/lib/R/host-site-library,如果选中,则该值是包的搜索路径中的第一个值.libPaths ()

当用户使用启动docker映像时docker-compose,它将识别以前安装的带有适当生物导体版本的库,并节省用户重新安装以前安装的包的时间。

为数据添加另一个卷,可以修改docker-compose.yml为了包含另一个卷,所有数据也存储在相同的位置。

—${HOME}/R/bioconductor_docker/3.13:/usr/local/lib/R/host-site-library - ${HOME}/R/data:/ HOME /rstudio . volume

要在后台运行,请使用- d——分离国旗,

docker-compose了-

如果映像在分离状态下运行,则容器名称如果用户希望,可以用来执行到终端在终端中访问,不使用RStudio。

用户,可以安装附加的系统依赖项,以使映像符合用户的需要。

Docker exec - bio -3.13 bash

有关如何使用的更多信息docker-compose,可以使用官方docker-compose参考

回到顶部

修改容器

有两种方法可以修改这些图像:

  1. 在正在运行的容器中进行更改,然后使用码头工人承诺命令。

    docker提交 <新映像>的名称
  2. 使用Dockerfile声明要做的更改。

第二种方式是推荐的方式。方法都是记录在这里

示例1:

我的目标是添加一个python包“tensorflow”,并在基本docker映像(即Bioconductor / Bioconductor _docker:devel)上安装一个名为“scAlign”的Bioconductor包。

作为第一步,我的Dockerfile应该继承自bioconductor / bioconductor_docker:猛击形象,从那里开始构建。因为所有的docker映像都是Linux环境,而这个容器是专门的“Debian”,我需要一些关于如何在Linux机器上安装库的知识。

在你的新Dockerfile,您可以使用以下命令

#更新apt-get RUN apt-get Update \ ##安装python包tensorflow && pip Install tensorflow \ ##删除'/var/cache/'和'var/lib'中的包,以删除apt-get Update && apt-get clean \ && rm -rf /var/lib/apt/lists/* #安装所需的bioconductor包RUN R -e 'BiocManager:: Install ("scAlign")'

Dockerfile可以使用命令构建,(注意:您可以随意命名它)

Docker build -t bioconductor_docker_tensorflow:devel。

这将让你使用docker映像安装' tensorflow '和scAlign包中。

docker run -p 8787:8787 -e PASSWORD= bioconductor_docker_tensorflow:devel .输出说明

示例2:

我的目标是添加所有所需的基础设施,以便能够编译小片段和将文档编织成pdf文件。我的Dockerfile对于这个要求,看起来像下面这样,

#这码头工人图像乳胶建造的小插曲bioconductor / bioconductor_docker:猛击#更新apt-get运行apt-get更新\ & & apt-get安装- y - no-install-recommends apt-utils \ & & apt-get安装- y - no-install-recommends \ texlive \ texlive-latex-extra \ texlive-fonts-extra \ texlive-bibtex-extra \ texlive-science \ texi2html \ texinfo \ & & apt-get清洁\ & & rm射频/var/lib/apt/lists/* # #安装BiocStyle运行R - e“BiocManager:安装(“BiocStyle”)

Dockerfile可以通过命令构建,

Docker build -t bioconductor_docker_latex:devel。

这将允许您根据需要使用docker映像来为包构建和编译小片段。

docker run -p 8787:8787 -e PASSWORD= bioconductor_docker_latex:devel . txt

回到顶部

使用二进制包

二进制包现在可用于Bioconductor容器的图像标签> = RELEASE_3_14.这意味着对于所有的图像RELEASE_3_14Bioconductor软件包不需要编译,且软件包安装使用BiocManager:安装()

二进制包安装提供了7x-8x倍的速度,因为它消除了容器的编译负担。

例如:

##在容器上安装二进制包BiocManager:: Install (c('Rhtslib',' singlecel实验'))

请记住,容器需要是bioconductor / bioconductor_docker图像或派生的图像。要了解如何构建自己的派生图像,请参阅To一节修改Conatiners

回到顶部

奇点

最新的bioconductor / bioconductor_docker图片也可以在Singularity Hub上使用。奇点是一个容器运行时,就像Docker,奇点Hub是奇点容器的主机注册中心。

你可以在这个链接https://singularity-hub.org/collections/3955上找到Singularity容器集合。

这些映像在不需要管理访问权限的计算集群上特别有用。你需要这个模块奇点安装。参见https://singularity.lbl.gov/docs-installation(如有疑问,请联系您的IT部门)。

如果你在你的机器或集群上安装了Singularity:

检查可用的模块

模块可用

如果奇点可用,

模块加载奇点

请查看这个链接,了解有关Singularity容器及其用法的具体使用说明https://www.rocker-project.org/use/singularity/。

Microsoft Azure容器实例

如果您是Microsoft Azure用户,您可以选择使用托管的映像来运行容器微软容器注册表

Microsoft容器注册中心(MCR)是所有Microsoft已发布的docker映像的主要注册中心,它提供可靠和可信赖的容器映像交付,并提供联合目录

使用托管在Microsoft容器注册表上的容器

你可以了解更多关于bioconductor_docker托管在microsoft容器注册表中的映像在这里

bioconductor_dockerimage从Microsoft容器注册表,指定您的标签的选择。检查在这里浏览“完整标签列表”下的标签列表:

码头工人拉mcr.microsoft.com/bioconductor/bioconductor_docker: <标记>

提取最新图片:

码头工人拉mcr.microsoft.com/bioconductor/bioconductor_docker:最新

示例:从docker容器中交互式运行RStudio

要在web浏览器会话中运行RStudio,请运行以下程序并从127.0.0.1:8787.默认的用户名是“rstudio”,你可以指定你的密码如下所示(这里设置为“bioc”):

docker运行——name bioconductor_docker_rstudio \ -v ~/host-site-library:/usr/local/lib/R/host-site-library \ -e PASSWORD='bioc' \ -p 8787:8787 \ mcr.microsoft.com/bioconductor/bioconductor_docker:latest

在您的终端上运行RStudio:

docker运行——name bioconductor_docker_rstudio \ -it \ -v ~/host-site-library:/usr/local/lib/R/host-site-library \ -e PASSWORD='bioc' \ -p 8787:8787 \ mcr.microsoft.com/bioconductor/bioconductor_docker:latest R

回到顶部

使用Azure容器实例在Azure上按需运行生物导体映像

Azure容器实例或ACI提供了一种在托管的、无服务器的Azure环境中按需运行Docker容器的方法。要了解更多信息,请查看文档在这里

使用ACI运行生物导体图像

先决条件

  1. 一个Azure帐户和一个订阅创建资源

  2. Azure CLI

  3. 创建一个资源组在您的订阅

您可以运行Azure CLI或“az CLI”命令创建、停止、重新启动或删除运行任何生物导体映像的容器实例——生物导体的官方映像或生物导体上可用的映像微软容器注册表.要开始,请确保您有一个Azure帐户和订阅或创建一个免费帐户

遵循本教程熟悉Azure容器实例。

要运行托管在Microsoft容器注册表或MCR上的bioconductor映像,请在Azure订阅中创建一个新的资源组。然后在Azure CLI中执行以下命令。您可以自定义任何或所有输入。这个命令适用于在Ubuntu机器上运行:

az容器create \——resource-group resourceGroupName \——name mcr-bioconductor \——image mcr.microsoft.com/bioconductor/bioconductor_docker \——cpu 2 \——memory 4 \——dns-name-label mcr-bioconductor \——ports 8787 \——environment-variables 'PASSWORD'='bioc'

完成后,运行以下命令获取完全限定的域名(FQDN):

az容器show \——resource-group resourceGroupName \——name mcr-bioconductor \——query "{FQDN:ipAddress。fqdn,ProvisioningState: ProvisioningState}" \——out表

这里我们暴露端口8787在这个公开可访问的FQDN上您可能必须选择一个不同的“dns-name-label”以避免冲突。默认情况下,RStudio的用户名是“RStudio”(类似于官方的bioconductor docker映像)。在这里,我们在环境变量配置中将RStudio的密码设置为' bioc '。的——cpu而且——记忆(单位为GB)配置也可以根据您的需要进行定制。缺省情况下,ACI分配1个cpu核和1.5GB内存。

要了解在创建ACI时可以配置和自定义的更多内容,请运行:

Az容器创建——help

挂载Azure File Share以在会话之间持久保存分析数据

当使用Azure容器实例时,为了确保数据在不同的分析会话之间持久存在,您可以使用该特性来将Azure文件共享挂载到您的容器实例.在本例中,我们将创建一个ACI,它将rstudio中的“/home/rstudio”目录挂载到Azure文件共享

先决条件

  1. 一个Azure帐户和一个订阅创建资源

  2. Azure CLI

  3. 创建一个资源组在您的订阅

现在,运行以下Azure CLI命令:

  1. 创建一个Azure存储账户

  2. 创建一个Azure文件共享

  3. 得到了存储账户键

#根据需要修改这四个参数ace_pers_resource_group =resourceGroupName ac_pers_storage_account_name =storageAccountName ac_pers_location =eastus ac_pers_share_name =fileShareName #步骤1:使用参数az创建存储帐户Create \——resource-group $ ac_pers_resource_group \——name $ ac_pers_storage_account_name \——location $ ac_pers_location \——sku Standard_LRS #步骤2:创建文件共享az storage share Create \——name $ACI_PERS_SHARE_NAME \——account-name $ACI_PERS_STORAGE_ACCOUNT_NAME #步骤3:获取存储帐户密钥STORAGE_KEY=$(az存储帐户密钥list \——resource-group $ACI_PERS_RESOURCE_GROUP \——account-name $ACI_PERS_STORAGE_ACCOUNT_NAME \——query "[0]. txt”——tsv) echo $STORAGE_KEY

下面是一个示例命令,用于将Azure文件共享挂载到运行bioconductor的ACI上。这个命令适用于在Ubuntu机器上运行:

az容器create \——resource-group resourceGroupName \——name mcr-生物导-fs \——image mcr.microsoft.com/bioconductor/bioconductor_docker \——dns-name-label mcr-生物导-fs \——cpu 2 \——memory 4 \——ports 8787 \——environment-variables 'PASSWORD'='生物' \——azure-file-volume-account-name storageAccountName \——azure-file-volume-account-key $STORAGE_KEY \——azure-file-volume-share-name fileShareName \——azure-file-volume-mount-path /home/rstudio

完成后,运行此命令获取完全限定的域名或FQDN:

az容器show \——resource-group resourceGroupName \——name mcr-bioconductor-fs \——query "{FQDN:ipAddress。fqdn,ProvisioningState: ProvisioningState}" \——out表

在这里,我们在这个公开可访问的FQDN上公开端口8787。您可能必须选择一个不同的“dns-name-label”以避免冲突。默认情况下,RStudio的用户名是“RStudio”(类似于官方的bioconductor docker映像)。在这里,我们在环境变量配置中将RStudio的密码设置为' bioc '。“-cpu”和“-memory”(单位为GB)配置也可以根据您的需要进行定制。缺省情况下,ACI分配1个cpu核和1.5GB内存。在这里,我们还将RStudio“/home/ RStudio”目录挂载到指定的存储帐户中名为“fileShareName”的持久Azure文件共享。当您停止或重新启动ACI时,这些数据不会丢失。

停止、启动、重启或删除ACI上运行的容器

您可以运行Azure CLI命令停止、启动、重启删除Azure上的容器实例。您可以找到所有的命令和选项在这里

取代containerName而且resourceGroupName在以下CLI命令中。

停止容器实例
az容器停止-n containerName -g resourceGroupName
启动容器实例
-n containerName -g resourceGroupName . az container start
重新启动容器实例
az容器重启-n containerName -g resourceGroupName
删除容器实例
az container delete -n containerName -g resourceGroupName

删除ACI时不提示确认:

az container delete -n containerName -g resourceGroupName -y

要排除使用Azure容器实例时的任何问题,请尝试这些建议在这里.如需反馈或进一步问题,请通过电子邮件

回到顶部

如何做出贡献

这里有一个关于社区成员如何贡献图像的最佳实践和标准的全面列表在这里

链接:https://github.com/Bioconductor/bioconductor_docker/blob/master/best_practices.md

弃用的通知

对于Bioconductor的docker容器的以前用户,请注意,我们正在弃用以下图像。这些图像是由Bioconductor Core和社区维护的。

遗留的容器

这些图像不再被维护和更新。但是,如果用户选择,它们将可以使用。它们不再得到Bioconductor核心团队的支持。

Bioconductor核心团队:bioc-issue-bot@bioconductor.org

Steffen Neumann: sneumann@ipb-halle.de,作为“现象,由Horizon2020拨款654241资助”的一部分维护

Laurent与:lg390@cam.ac.uk

RGLab: wjiang2@fredhutch.org

第一次迭代容器

弃用的原因

新的Bioconductor Docker图像bioconductor / bioconductor_docker可以方便地安装用户选择的任何包,因为所有的系统依赖都内置到这个新映像中。前面的映像并没有将所有的系统依赖关系内置到映像中。新的安装包可以用,

BiocManager:安装(c(“package_name”、“package_name”))

弃用的其他原因:

报告问题

请报告新一组图像的问题GitHub的问题或者是Bioc-devel邮件列表。

这些问题可以是与该软件相关的任何问题,如使用、扩展Docker映像、增强和错误报告。

确认

多亏了摇滚歌手项目提供我们的R/RStudio服务器容器。