在CentOS上运行含R脚本的Docker容器报错的解决方法咨询
解决CentOS下运行R Docker容器的错误问题
问题根源
你的Dockerfile仅在镜像构建阶段用RUN执行了脚本,但容器启动时默认会运行rocker/r-base镜像自带的R交互命令。在CentOS的非交互式终端环境中,R交互模式要求必须指定--save/--no-save/--vanilla参数,这是第一个错误的原因。而你后续添加的--no-save被当成了容器要执行的独立命令,系统找不到该可执行文件,因此出现第二个错误。
两种解决方案
方案1:修改Dockerfile(推荐)
在Dockerfile末尾添加CMD指令,让容器启动时自动执行R脚本,无需进入交互模式:
FROM rocker/r-base:latest COPY /myScript.R /myScript.R # 构建阶段执行脚本(若仅需启动时执行可移除) RUN Rscript /myScript.R # 指定容器启动时的默认命令 CMD ["Rscript", "/myScript.R"]
重新构建镜像后,直接执行docker run myName/17_08即可正常运行脚本。
方案2:不修改Dockerfile,运行时指定完整命令
若不想重新构建镜像,可在docker run时明确指定执行命令:
- 直接运行脚本:
docker run myName/17_08 Rscript /myScript.R
- 给R交互模式传递参数(如需进入交互环境):
docker run myName/17_08 R --no-save
内容的提问来源于stack exchange,提问作者Jan Jankowski Janek
相关产品推荐
相关产品推荐

