R语言Linux环境基于docker安装(在线、离线两种方式)
R语言相比较其他主流语言来说,确实资料相对较少,自己实践起来需要稍微多花一些功夫,这里记录一下R语言再linux环境(centos7)下基于docker的安装方式,个人不建议直接使用R的tar.gz包这种直接安装方式,这种方式需要依赖很多其他基础环境的支持,安装特别费劲,好了,废话不多说,直接开干。开干之前首先需要自行准备一下Linux以及Docker环境。一、在线方式安装:R语言的docker安
R语言相比较其他主流语言来说,确实资料相对较少,自己实践起来需要稍微多花一些功夫,这里记录一下R语言再linux环境(centos7)下基于docker的安装方式,个人不建议直接使用R的tar.gz包这种直接安装方式,这种方式需要依赖很多其他基础环境的支持,安装特别费劲,好了,废话不多说,直接开干。开干之前首先需要自行准备一下Linux以及Docker环境。
一、在线方式安装:
R语言的docker安装是基于r-base镜像进行,首先你可以直接docker pull r-base进行最新版本镜像拉取,但是个人习惯先去https://hub.docker.com/ 上面看看前两个更稳定的版本,
1.1、首先进入首页搜索r-base:
然后进入r-base,选择Tags:
我这里拉取的是4.0.2版本,在linux输入命令:
docker pull r-base:4.0.2
拉取成功后查看镜像 docker images 如下图所示:
1.2、启动容器:
首先你可以直接 docker run -ti --rm r-base 交互式运行一个R语言的容器,但是,基于后续使用时,R环境拉取依赖包很费时间,很多时候你可能会从以前的环境中直接拷贝library依赖包到现有环境中,所有,建议将物理目录与容易依赖包目录进行挂载互通,以方便直接使用现成的依赖包,所以建议使用以下命令进行启动容器:
docker run -it --name R402 -v /usr/local/lib/R/site-library:/usr/local/lib/R/site-library r-base:4.0.2
解释:
a、--name R402 是个容器命名为R402方便使用容器。
b、 /usr/local/lib/R/site-library:/usr/local/lib/R/site-library 将物理目录:/usr/local/lib/R/site-library 与容器目录:/usr/local/lib/R/site-library进行挂载互通,其中冒号(:)前面的是物理目录,后面的是容器目录,当然你也可以挂载任意一个物理目录作为依赖包的存放目录。这里挂载的目的是为了很多依赖包下载不下来,通过其他方式拿到依赖包时,可以直接copy到挂的的目录,以达到使用依赖包的目的。
c、r-base:4.0.2是我们要依赖的镜像以及它的版本
运行上面命令之后会直接进入R语言的命令界面:
补充:这里补充一些关于R的一些可能会用到的命令:
.libPaths():查看包的安装目录
installed.packages():查看已安装包信息
install.packages("Rserve"):下载Rserve依赖包
library():查看已经安装的包目录
library(Rserve):载入Rserve依赖包
q():退出R
1.3、注意,挂载物理目录与容器目录后,如果你从其他环境复制了依赖包到当前机器的依赖包中,需要重启容器才能生效使用:
停止容器:docker stop R402
启动容器:docker start R402
交互式进入容器:docker exec -it R402 bash
进入R命令界面:R
如下图所示:
至此,在线安装完成。
二、离线安装
如果你当前的机器没有网络,或者不能连接外网,此时,需要离线安装R环境时,利用已有的R语言的Docker环境进行本地镜像的制作:(这里可以基于上面的第一步进行本地镜像的制作),核心就是利用一台可以网的机器将R语言的docker镜像、容器创建完成,并且将所需要的依赖包也下载好备用,然后制作本地镜像放到离线环境中去。
2.1、利用已有的r-base镜像制作本地镜像,先通过r-base镜像生成R400容器,再利用R400容器生成r-4.0.0本地镜像:
格式:docker commit -m '镜像描述' -a '制作者' 容器名 镜像名
docker commit -m 'r-4.0.2' -a 'yjhkdm' R402 r-4.0.2
注意:镜像描述、镜像名称据需要小写
完成之后查看镜像如下图所示:
2.2、打成img:
格式:docker save -o img包存放路径及名字 基于的镜像名
docker save -o /home/r-4.0.2.img r-4.0.2
2.3、将r-4.0.0.img 文件复制到离线环境中,然后docker 加载 img
格式:docker load < img 文件所在路径及文件名
docker load < /home/r-4.0.2.img
至此,离线环境镜像制作完成,剩余就是使用镜像生成容器,步骤与上面在线安装后续创建容器,使用R的步骤也是一摸一样。
三、在使用Rserve时可能遇到Permission denied(权限不够):
解决方法:执行了以下语句,需要重启R容器生效;
chmod -R 777 /usr/local/lib/R/site-library
四、特别注意:使用Rserve进行与java交互时,要注意:
1、Rserve版本,一定要大于等于1.8.x否则报错
1.1、进入R命令界面,查看Rserve版本(packageVersion("Rserve"))
1.2、如果版本低,则执行:install.packages("Rserve", "Rserve_1.8-6.tgz", "http://www.rforge.net/")
2、一定要开启远程访问模式,否则java无法连接Rserve:
2.1、先docker stop R402,再次docker start R400启动
2.2、进入容器docker exec -it R400 bash
2.3、使用命令:R CMD Rserve --RS-enable-remote 开启远程访问
然后即可使用。
更多推荐
所有评论(0)