R和/或Packrat中用于可再生科学的Docker

时间:2018-06-21 10:09:03

标签: r docker reproducible-research packrat

我不确定Docker是否足以进行R开发,还是应该与Packrat结合使用。我读过几篇文章,指出docker就足够了。支持此声明的唯一地方是此post。但是由于git2r安装中的错误,我无法构建该示例。

我的总体目标是完全控制我使用的软件包版本,因此即使以后升级软件包,我的分析仍然可以进行。

2 个答案:

答案 0 :(得分:2)

两者都需要。认为Docker映像只是源代码的最终产品,包括 Dockerfile 和用于构建最终映像的每条数据。

您应固定docker(避免使用FROM blah:latest)基础映像,以确保基础库和工具始终相同。请勿使用诸如{debian / testing}之类的基础映像,这些映像可能会在每次apt-get install运行时发生变化。

如果在需要重建映像时不使用 packrat ,则可能会从某个不再起作用的库中获得一段新代码,例如,考虑一下已弃用的函数可能已经用过。

当然还有您自己的代码版本,至少要对其进行标记,以便能够轻松地使时光倒流并再次开始新的构建。

这是您可以执行的最少操作,因为损坏的Dockerhub或CRAN存储库之类的事情仍然可能发生。将版本化的Docker映像保存在私有Docker注册表中只是最后一步。

答案 1 :(得分:1)

假设您现在使用某个docker映像进行分析。如果您以后启动相同 Docker映像,即不仅具有相同的名称(例如var docPath="\\\\Server\\Users\\Files\\Order\\file1.pdf" )或相同的版本(例如rocker/rstudio),而且具有相同的映像ID,那么您就是保证获得与R,R软件包和系统库完全相同的版本。这远远超过rocker/rstudio:3.5.0提供的功能(相同的R软件包版本),但是需要您保存docker映像。