我正在尝试构建一个小的R容器,该容器为要在Google Compute Engine的Docker容器中运行的代码安装一些软件包。

我需要安装(例如)jsonlite在我的dockerfile中是执行此操作的一行:

RUN Rscript -e 'install.packages("jsonlite", repo="http://cran.ma.imperial.ac.uk/")'

但是,当我尝试在计算引擎上构建包含此行的dockerfile时,它没有安装。源tarball已下载到/ tmp / Rsomething,但实际上并未安装该软件包。我必须在tarball上手动运行R CMD INSTALL,安装成功。

当我在本地相同的dockerfile上运行docker build .时,一切正常,并且软件包已正确安装。

AFAIK,这不是2-3个月前发生的-不久前,我已经成功完成了缓存构建。

这里有什么问题? R是docker还是计算引擎,还是这三者的混合体?

我当前的解决方法是添加
RUN find /tmp/ -name '*.tar.gz' -exec R CMD INSTALL '{}' \;

到docker文件的末尾,但如果未按正确的顺序找到tarball,则似乎已在它们的依赖项之前安装了某些东西(有时),这将不起作用。

最佳答案

问题是docker实例本身陷入了某种不良状态。看到一些意外的错误消息(有关http:///var/run/...的信息)后,我重新启动了主机,然后一切按预期进行。

08-16 12:27