r - 如何在 docker 中加速 R 包的安装

标签 r docker dockerfile

假设您有以下要为 docker 镜像安装的软件包列表

("jsonlite","dplyr","stringr","tidyr","lubridate",
"knitr","purrr","tm","cba","caret",
"plumber","httr")

安装这些实际上需要大约 1 小时!

关于如何加快这种事情的任何建议? (或者如何防止在每个新镜像构建时重新安装?)

旁注

我不会像这样从 dockerfile 安装这些包:
RUN Rscript -e "install.packages('stringr')
...

相反,我创建了一个 R 脚本 Requirements.R安装这些软件包并简单地执行以下操作:
RUN Rscript Requirements.R

这些是不是比直接从 Dockerfile 安装包更不理想?

最佳答案

尽可能使用二进制包,就像我们在 Rocker Project 中经常做的那样为 R 提供多个 Docker 文件,包括官方的 r-base 文件。
如果你从 Ubuntu 开始,你会得到 Michael's PPAs拥有超过 3000 多个包裹;如果你从 Debian 开始,你从发行版中得到的更少,但仍然有很多必不可少的。 (有一些努力为 Debian 带来更多二进制包,但目前还没有任何进展。)
最后,Dockerfile 创建当然也是编译时间。您花一次时间(每个容器创建)并在之后多次重复使用。此外,通过使用 Docker Hub,您可以避免消耗本地 CPU 周期。
2020 年 9 月编辑:(updated) Ubuntu PPA现在有超过 4600 个包用于三个最新的 LTS 版本。还是很不错的,强烈推荐。

关于r - 如何在 docker 中加速 R 包的安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51500385/

相关文章:

r - 使用 knitr 在 rmarkdown 中并排显示两个图像?

r - 在 ggplot2 中创建散点图矩阵(pairs() 等效项)

docker - docker 说 "Memory limited without swap"是什么意思

docker - 如何忽略 dockerfile 非零返回码?

tomcat - docker tomcat通过dockerfile编辑配置文件

r - iGraph图形中的顶点名称在哪里

r - 使用 Rmarkdown (pagedown) 和更改目录

docker - 如何调试在Docker容器中运行的多个进程?

python - 如何在 Windows 上重新训练图像

linux - 以退出代码2退出的Docker容器 “sh can' t open 'start_script.sh':没有这样的文件或目录”