【问题标题】:Docker in R and/or Packrat for Reproducible Science用于可重复科学的 R 和/或 Packrat 中的 Docker
【发布时间】:2018-06-21 10:09:03
【问题描述】:

我不完全确定 Docker 是否足以用于 R 开发,或者我应该与 Packrat 一起使用。我读过几篇文章说 docker 就足够了。唯一支持这种说法的地方是post。但是,由于 git2r 安装错误,我无法构建该示例。

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

【问题讨论】:

    标签: r docker reproducible-research packrat


    【解决方案1】:

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

    您应该固定 docker(避免使用 FROM blah:latest)基础映像,以确保底层库和工具始终相同。不要使用在每次运行 apt-get install 时可能会发生变化的基础镜像,例如 debian/testing。

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

    当然还有版本你自己的代码,至少标记它以便能够轻松地回到过去并再次开始新的构建。

    这是您可以做的最低限度,因为像损坏的 Dockerhub 或 CRAN 存储库这样的事情仍然可能发生。在私有 docker 注册表中保存版本化的 docker 镜像只是最后一步。

    【讨论】:

    • 以下是一个很好的管道: 1. 从 dockerfile 中的 FROM rocker/rstudio 开始构建并运行 docker 2. 使用 packrat 初始化项目并开始添加库 3. 对其余部分进行编码,或者在 dockerfile 中进行所有安装?
    • 我不是在谈论在 docker 容器中进行开发。如果您打算交付最终的 docker 镜像,您应该在构建镜像时完成所有必需的安装,我假设这是您的最后一步,使用 packrat 这应该成为packrat::restore()
    • 所以你像往常一样添加packrat并安装所有其他库,像往常一样在本地正确地代码,然后创建图像,对吧?
    【解决方案2】:

    假设您现在使用某个 docker 映像进行分析。如果您稍后启动 相同 docker 映像,即不仅具有相同的名称(例如 rocker/rstudio)或相同的版本(例如 rocker/rstudio:3.5.0)而且具有相同的映像 id,那么您一定会获得完全相同版本的 R、R 包和系统库。这比 packrat 提供的更多(相同的 R 包版本),但需要您保存 docker 映像。

    【讨论】:

      猜你喜欢
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多