假设您有以下要为 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/