【发布时间】:2018-06-21 10:09:03
【问题描述】:
我不完全确定 Docker 是否足以用于 R 开发,或者我应该与 Packrat 一起使用。我读过几篇文章说 docker 就足够了。唯一支持这种说法的地方是post。但是,由于 git2r 安装错误,我无法构建该示例。
我的总体目标是完全控制我使用的包版本,因此即使以后升级包,我的分析仍然有效。
【问题讨论】:
标签: r docker reproducible-research packrat
我不完全确定 Docker 是否足以用于 R 开发,或者我应该与 Packrat 一起使用。我读过几篇文章说 docker 就足够了。唯一支持这种说法的地方是post。但是,由于 git2r 安装错误,我无法构建该示例。
我的总体目标是完全控制我使用的包版本,因此即使以后升级包,我的分析仍然有效。
【问题讨论】:
标签: r docker reproducible-research packrat
两者都需要。认为 docker 镜像只是你的源代码的最终产品,包括 Dockerfile 和用于构建最终镜像的每一条数据。
您应该固定 docker(避免使用 FROM blah:latest)基础映像,以确保底层库和工具始终相同。不要使用在每次运行 apt-get install 时可能会发生变化的基础镜像,例如 debian/testing。
如果您在需要重建图像时不使用 packrat,您可能会从某个不再工作的库中获得一段新代码,例如,考虑一个您已弃用的函数可能用过。
当然还有版本你自己的代码,至少标记它以便能够轻松地回到过去并再次开始新的构建。
这是您可以做的最低限度,因为像损坏的 Dockerhub 或 CRAN 存储库这样的事情仍然可能发生。在私有 docker 注册表中保存版本化的 docker 镜像只是最后一步。
【讨论】:
packrat::restore()。
假设您现在使用某个 docker 映像进行分析。如果您稍后启动 相同 docker 映像,即不仅具有相同的名称(例如 rocker/rstudio)或相同的版本(例如 rocker/rstudio:3.5.0)而且具有相同的映像 id,那么您一定会获得完全相同版本的 R、R 包和系统库。这比 packrat 提供的更多(相同的 R 包版本),但需要您保存 docker 映像。
【讨论】: