首页 > 解决方案 > 使用 Docker 映像运行旧版本的 R

问题描述

我想为我的 R 工作使用旧 R 版本的 Docker 映像。所以我用 -

docker pull rocker/verse:3.3.2

现在我想将这个 docker 镜像运行为 -

docker run rocker/verse:3.3.2

这给出了以下响应-

[fix-attrs.d] applying owners & permissions fixes...
[fix-attrs.d] 00-runscripts: applying... 
[fix-attrs.d] 00-runscripts: exited 0.
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] add: executing... 
Nothing additional to add
[cont-init.d] add: exited 0.
[cont-init.d] userconf: executing... 


ERROR: You must set a unique PASSWORD (not 'rstudio') first! e.g. run with:
docker run -e PASSWORD=<YOUR_PASS> -p 8787:8787 rocker/rstudio


[cont-init.d] userconf: exited 1.
[cont-init.d] done.
[services.d] starting services
[services.d] done.

在此之后,它停止响应。

我也尝试使用如下密码 -

sudo docker run -e PASSWORD=abc$ -p 8787:8787 rocker/verse:3.3.2
[fix-attrs.d] applying owners & permissions fixes...
[fix-attrs.d] 00-runscripts: applying... 
[fix-attrs.d] 00-runscripts: exited 0.
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] add: executing... 
Nothing additional to add
[cont-init.d] add: exited 0.
[cont-init.d] userconf: executing... 
[cont-init.d] userconf: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.

但在那之后,即使 1 小时后我也看不到任何进展。

有没有办法通过 docker image 使用旧的 R 版本?

谢谢,

标签: rdocker

解决方案


问题是你没有告诉容器做任何事情。我可以像这样运行交互式 R 终端,所以它似乎可以正常工作:

$ docker run --rm -it rocker/verse:3.3.2 R

R version 3.3.2 (2016-10-31) -- "Sincere Pumpkin Patch"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> myString <- "Hello, World!"
> print (myString)
[1] "Hello, World!"

请注意,我在通话R结束时传递了命令。docker run结合标志,这将在容器内-it打开一个交互式终端。R如您所见,交互式R终端运行的是 3.3.2 版本。

无论如何,这个图像似乎工作得很好,你只需要决定你想用它做什么。

另一种选择是传递bash而不是R从那里运行命令。另一种选择是Dockerfile在项目内部创建一个使用此映像的项目,FROM并在构建时将脚本复制R到容器中。这里列出的选项太多了,但我想你明白了。

这里有一些很好的参考资料可以帮助您入门:

[1] https://docs.docker.com/engine/reference/commandline/run/。(查看-i-t选项)

[2] https://docs.docker.com/engine/reference/builder/


推荐阅读