使用Docker映像运行旧版本的R

时间:2020-04-19 14:45:00

标签: r docker

我想在我的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版本?

谢谢

1 个答案:

答案 0 :(得分:1)

问题是您没有告诉容器做任何事情。我可以像这样运行一个交互式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/