【问题标题】:How to run an Rscript with entrypoint when using docker?使用docker时如何运行带有入口点的Rscript?
【发布时间】:2022-01-24 02:33:24
【问题描述】:

我正在尝试通过入口点运行 Rscript,但由于某种原因,当我这样做时,它无法识别该文件。这是一个例子。

docker run -it --rm  -v /N/Rfinal/:/tmp --entrypoint "Rscript /tmp/test.R" rocker/rstudio:latest
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: 
starting container process caused "exec: \"Rscript /tmp/test.R\": 
stat Rscript /tmp/test.R: no such file or directory": unknown.

我可以获得 bash 命令的方式是通过这个特定 docker 的入口点。有什么我可以做的吗?谢谢。

【问题讨论】:

  • 将入口点设为“Rscript”,然后将文件名放在 docker 镜像名称之后。入口点是可执行文件,而不是完整的命令
  • docker run --entrypoint 有点不方便,而且大多数图像实际上并不需要它。你能docker run ... rocker/rstudio Rscript /tmp/test.R 提供一个命令覆盖(不带引号)而不是尝试覆盖入口点吗?
  • @jakub 谢谢,既然你这么说,这很有意义。

标签: r docker


【解决方案1】:

--entrypoint 参数采用可执行文件的名称,例如 bashRscriptpython 等。该可执行文件的参数将位于 docker 映像名称之后。

docker run -it --rm  -v /N/Rfinal/:/tmp --entrypoint Rscript rocker/rstudio:latest /tmp/test.R

您将使用该表单来覆盖 docker 映像的默认入口点。但是rocker docker镜像没有设置入口点,所以入口点是/bin/sh(追踪基础镜像到ubuntu:focal后发现)。因为入口点是/bin/sh,所以你可以在docker镜像之后简单地使用Rscript /tmp/test.R

docker run -it --rm  -v /N/Rfinal/:/tmp rocker/rstudio:latest Rscript /tmp/test.R

【讨论】:

    猜你喜欢
    • 2018-03-15
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 2017-07-13
    相关资源
    最近更新 更多