码头工人将软件打包到自包含的环境中,称为容器,其中包含运行所需的依赖项。容器可以运行在任何操作系统上,包括Windows和Mac(使用现代Linux内核)码头工人引擎.
容器也可以部署在云使用亚马逊弹性容器服务,谷歌Kubernetes引擎或Microsoft Azure容器实例
安装码头工人
使用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。不需要担心是否安装了包和系统依赖项。
方便:轻松启动一个新的R会话,没有安装用于测试的包。快速运行与您的工作流程不典型的包依赖关系的分析。容器使这变得很容易。
包安装: Bioconductor的二进制包在主容器时可用bioconductor_docker
使用(图像标签> = RELEASE_3_14
).这些二进制包不需要比常规包安装快7 -8倍的编译和安装速度。
我们的目标是为Bioconductor的当前版本和开发版本以及一些旧版本提供最新的容器。Bioconductor的Docker图像存储在Docker Hub中;源代码都在Github上。
我们的发布图像和devel图像是基于摇臂项目-摇臂/ rstudio图像,并在生物导体发布时构建。
迁移到一组新的Docker容器时,我们的几个关键目标是:
以保持Bioconductor团队发送的图像大小在可管理的范围内。
易于扩展,因此开发人员只需使用单个映像2021欧洲杯体育投注开户来继承和构建他们的docker映像。
通过简化docker继承链,易于维护。
采用“最佳实践”大纲,这样新的社区贡献的docker映像就会得到评审并遵循标准。
对类似于Bioconductor包的映像采用弃用策略和生命周期。
复制Linux构建机器(马尔白克)bioconductor / bioconductor_docker:猛击
尽可能接近图像。虽然这还不是完全可能的,但是希望重现在Bioconductor Linux构建机器上看到的错误的维护人员可以使用该映像,并将其作为一个有用的调试工具。
对于每个支持版本的Bioconductor,我们提供
bioconductor / bioconductor_docker: RELEASE_X_Y
bioconductor / bioconductor_docker:猛击
Bioconductor的Docker图像存储在码头工人中心;源Dockerfile在Github.
可以找到组织良好的流行docker命令指南在这里.为了方便起见,下面是一些用于入门的命令。下面的示例使用bioconductor / bioconductor_docker:猛击
的形象。
注意:你可能需要提前准备sudo
对所有码头工人
命令。但先不要吃。
先决条件:在Linux上,需要Docker安装和Mac或窗户您需要安装并运行Docker工具箱。
码头工人的图片
码头工人ps
码头工人ps -
docker start
docker exec - /bin/bash
docker stop
docker rm
码头工人rmi bioconductor / bioconductor_docker:猛击
上面的命令可能很有帮助,但运行Bioconductor Docker的真正基础是提取公共映像并运行容器。
码头工人拉bioconductor / bioconductor_docker:猛击
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的最新发布版本。
运行————user rstudio bioconductor/bioconductor_docker:devel R
运行——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 run \ -v /home/my- developer -library:/usr/local/lib/R/host-site-library \ -it \——user rstudio \ bioconductor/bioconductor - docker:devel . txt
没有——用户rstudio
选项,容器将启动并作为根
用户。
的-
Flag为docker容器提供一个交互式tty (shell/终端)。
使用RStudio接口运行它
docker run \ -v /home/my- developer -library:/usr/local/lib/R/host-site-library \ -e PASSWORD= PASSWORD \ -p 8787:8787 \ bioconductor/bioconductor - docker:devel . txt
运行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参考.
[回到顶部]
有两种方法可以修改这些图像:
在正在运行的容器中进行更改,然后使用码头工人承诺
命令。
docker提交 <新映像>的名称
使用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_14
Bioconductor软件包不需要编译,且软件包安装使用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容器注册中心(MCR)是所有Microsoft已发布的docker映像的主要注册中心,它提供可靠和可信赖的容器映像交付,并提供联合目录
你可以了解更多关于bioconductor_docker
托管在microsoft容器注册表中的映像在这里.
把bioconductor_docker
image从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容器实例或ACI提供了一种在托管的、无服务器的Azure环境中按需运行Docker容器的方法。要了解更多信息,请查看文档在这里.
先决条件:
一个Azure帐户和一个订阅创建资源
创建一个资源组在您的订阅
您可以运行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容器实例时,为了确保数据在不同的分析会话之间持久存在,您可以使用该特性来将Azure文件共享挂载到您的容器实例.在本例中,我们将创建一个ACI,它将rstudio中的“/home/rstudio”目录挂载到Azure文件共享.
先决条件:
一个Azure帐户和一个订阅创建资源
创建一个资源组在您的订阅
现在,运行以下Azure CLI命令:
#根据需要修改这四个参数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时,这些数据不会丢失。
您可以运行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”))
弃用的其他原因:
Docker映像的继承链过于复杂,难以维护。
很难扩展,因为图像有多种风格。
命名惯例使得使用起来更加困难。
未维护的映像不会被弃用。
请报告新一组图像的问题GitHub的问题或者是Bioc-devel邮件列表。
这些问题可以是与该软件相关的任何问题,如使用、扩展Docker映像、增强和错误报告。
多亏了摇滚歌手项目提供我们的R/RStudio服务器容器。