在Docker镜像中安装R

5

我该如何在我的docker镜像中安装R版本3.4.0。我已经安装了Python:

RUN yum -y install https://centos6.iuscommunity.org/ius-release.rpm \
  && yum -y install python36u \
  && yum -y install python36u-devel \
  && yum -y install python36u-pip \
  && yum -y install python36u-tkinter.x86_64

同样地,我需要安装R:
到目前为止,我已经在文件中指定了以下关于R的内容:
ENV R_BASE_VERSION 3.4.0
RUN Rscript -e 'install.packages("devtools",dependencies=TRUE)' \
    &&Rscript -e 'install.packages("methods",dependencies=TRUE)' \
    &&Rscript -e 'install.packages("jsonlite",dependencies=TRUE)' \

请建议,我是docker的新手。
我认为我需要像下面这样做:
ENV R_BASE_VERSION 3.4.1

## Now install R and littler, and create a link for littler in /usr/local/bin
## Also set a default CRAN repo, and make sure littler knows about it too
RUN apt-get update \
    && apt-get install -t unstable -y --no-install-recommends \
        littler \
                r-cran-littler \
        r-base=${R_BASE_VERSION}* \
        r-base-dev=${R_BASE_VERSION}* \
        r-recommended=${R_BASE_VERSION}* \
        && echo 'options(repos = c(CRAN = "https://cran.rstudio.com/"), download.file.method = "libcurl")' >> /etc/R/Rprofile.site \
        && echo 'source("/etc/R/Rprofile.site")' >> /etc/littler.r \
    && ln -s /usr/share/doc/littler/examples/install.r /usr/local/bin/install.r \
    && ln -s /usr/share/doc/littler/examples/install2.r /usr/local/bin/install2.r \
    && ln -s /usr/share/doc/littler/examples/installGithub.r /usr/local/bin/installGithub.r \
    && ln -s /usr/share/doc/littler/examples/testInstalled.r /usr/local/bin/testInstalled.r \
    && install.r docopt \
    && rm -rf /tmp/downloaded_packages/ /tmp/*.rds \
    && rm -rf /var/lib/apt/lists/*

但是我不知道这个“litter”是什么意思。我只需要安装R,然后按照我上面指定的方法安装所需的包。

编辑:我的Docker文件中第一行安装了node4。


你能指定你使用的基础镜像吗? - dsax7
这是我的自有存储库(基础镜像安装了Node.js)。如果您能告诉我如何安装R,那就太好了。 - Ashag
3个回答

4

这里有两个DockerFile,用于安装Python、R和NodeJS。

第一个DockerFile用于安装Python 3.4.2、R 3.1.1和NodeJS 4.8.4:

From node:4
RUN apt-get update && apt-get remove -y python && apt-get install -y python3 r-base
RUN cp /usr/bin/python3 /usr/bin/python

这个命令安装了Python 3.5.3, R 3.4.1和Node.js 4.8.4:

From r-base:3.4.1
RUN apt-get update && apt-get install -y python3 nodejs
RUN cp /usr/bin/python3 /usr/bin/python

选择最适合您需求的选项。

1
好的,那么完成后我需要放置安装包,对吧?不需要指定R版本之类的吗? - Ashag
@Alexander Fenyo 好的,这里有一个变化,我需要安装Python 3.6.1,我已经完成了。它运行良好。唯一的问题是我需要安装R。 - Ashag
请指导。从节点:4开始执行 apt-get update && apt-get install -y r-base 命令。[只执行这个命令也可以吗?] - Ashag
我已经指定安装了Python 3.6.1;第一行是From node:4;我只需要R。RUN apt-get update && apt-get install -y r-base。[仅执行这个可以吗?] - Ashag
@Alexander Fenyo,谢谢! - Ashag
显示剩余6条评论

2

如果你的公共基础镜像(自己镜像的基础镜像)确实是node:4,那么它不是基于yum而是基于apt-get来管理软件包。

因此,你应该按照以下方式安装R:

RUN apt-get update && apt-get install -y r-base

好的,那么 Docker 文件会是什么样子:FROM nodejs(第一行); RUN apt-get update && apt-get install -y r-base(第二行); ENV R_BASE_VERSION 3.4.0 RUN Rscript -e 'install.packages("devtools",dependencies=TRUE)'
&&Rscript -e 'install.packages("methods",dependencies=TRUE)'
&&Rscript -e 'install.packages("jsonlite",dependencies=TRUE)' \。请检查。
- Ashag
它会看起来像上面那样吗?环境变量的东西会出现吗? - Ashag
1
正是我所需要的。 我的基础镜像是Python3.6,需要安装r2py所需的r-base - azhar22k

0

由于某些原因,我需要安装。你能指导我如何安装吗?因为我已经使用了FROM node进行节点安装,而且我认为在dockerfile中不能使用多个from,所以请告诉我如何像安装python一样安装R。 - Ashag
你的基础镜像是什么(DockerFile 的第一行)?因为安装 R 取决于基础镜像。如果不知道你的基础镜像,没有人能给你答案。 - Alexandre Fenyo
@AlexandreFenyo。 这是我的自有存储库(基础镜像安装了Node.js)。如果您能告诉我如何安装R,那就太好了。 - Ashag
@AlexandreFenyo;第一行安装了node4:latest。 - Ashag
非常感谢您提供这个无用的答案。我正在构建一个已经有 from other:image 的镜像,我需要在其中添加 R。 - Ufos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接