如何使用正确的R和软件包版本构建Docker映像,然后使用它们打开Rstudio?

时间:2019-05-10 09:29:32

标签: r docker

我刚写完一本手稿,就可以在科学期刊上发表。我希望我的研究具有可重复性,因此,除了在Github上共享原始和已编译的R markdown笔记本外,我还希望将分析数据(包括数据,笔记本以及特定的R和软件包版本)的环境保存在Docker容器。此外,我希望任何尝试复制我的作品的人都能够在交互式Rstudio会话中执行此代码。

我能够在正确的环境下创建一个Dockerfile。这是一个玩具示例:

FROM rocker/r-ver:3.5.1

RUN mkdir /home/working_directory
RUN mkdir /home/working_directory/bin

RUN R -e 'options(repos = \
  list(CRAN = "http://mran.revolutionanalytics.com/snapshot/2019-01-01")); \
  install.packages("ggplot2")'

COPY current/0[1-8]-*.Rmd /home/working_directory/
COPY current/bin/utils.R /home/working_directory/bin/

RUN R

但是,这不允许用户阅读Rmd笔记本并逐行执行代码。一种解决方法是运行image rocker / rstudio,然后从那里安装软件包,但是我希望能够通过一个docker build调用来做到这一点。不幸的是,我无法做到这一点。

干杯!

1 个答案:

答案 0 :(得分:1)

Rocker RStudio映像应该具有您所需要的-RStudio位于R的顶部。如果您想要R 3.5.1,可以在这里找到源代码:

有关如何使用它的更多详细信息,请阅读https://hub.docker.com/r/rocker/rstudio

仅使用具有特定R版本的预制图像

# with R version 3.5.1:
sudo docker pull rocker/rstudio:3.5.1

以交互方式调查图像:

sudo docker run --rm -it rocker/rstudio:3.5.1 bash

现在我们可以运行例如:

# Check R version
Rscript -e "sessionInfo()[['R.version']][['version.string']]"
# [1] "R version 3.5.1 (2018-07-02)"

# Check RStudio Server version
rstudio-server version
# 1.1.463

# Exit when done
exit