温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.文档编写目的
CDSW中提供的基础镜像中已有R的环境,但是在真实使用过程中往往需要安装更多R的包。我们在创建一个新的Project时如果使用CDSW基础镜像,每次都需要重新安装需要的依赖包,为了避免大家每次都需要重复安装R的包,这时就需要定制我们自己的Docker。这样在创建新的Project时,如果使用定制过的Docker镜像,就不需要再去安装额外的R依赖包。本文档主要讲述如何基于CDSW基础镜像定制我们自己的Docker镜像。
- 内容概述
1.安装前准备
2.查找CDSW基础镜像
3.定制Docker镜像
4.自定义镜像使用
- 测试环境
1.操作系统:RedHat7.2
2.采用sudo权限的ec2-user用户操作
3.CDSW版本1.1.1
2.查看CDSW基础镜像
登录CDSW平台查看使用的基础镜像名称
点击“Engines”
上图标注部分即为CDSW的基础镜像(docker.repository.cloudera/cdsw/engine:2)由Docker的Repository和Tag组成。
命令行查看CDSW基础镜像:
[ec2-user@ip-172-31-31-212 ~]$ sudo docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdocker.repository.cloudera.com/cdsw/engine 2 b94fc4cc9b8b 2 months ago 5.83 GB
3.定制Docker镜像
1.使用docker命令启动容器
[ec2-user@ip-172-31-31-212 ~]$ sudo docker run -it --network='host' docker.repository.cloudera.com/cdsw/engine:2 /bin/bashroot@ip-172-31-31-212:/home/cdsw#
如上图已成功启动docker.repository.cloudera.com/cdsw/engine:2并登录成功。
命令参数说明:docker run [OPTIONS]IMAGE [COMMAND] [ARG...]
-it : 进行交互式操作
--network : 设置docker容器的网络,这里设置network为host的与主机网络一致
到此完成容器的启动并登录,接下来我们就可以对容器R的环境进行修改配置
2.修改R的CRAN源指向私有源
在/usr/local/lib/R/etc目录下新增文件Rprofile.site,并添加如下内容
root@ip-172-31-31-212:/home/cdsw# cd /usr/local/lib/R/etc/root@ip-172-31-31-212:/home/cdsw# vim Rprofile.site# Site R configuration.local({
r <- getOption("repos")
#r["CRAN"] <- "https://cloud.r-project.org/"
r["CRAN"] <- "http://ip-172-31-22-86.ap-southeast-1.compute.internal/"
options(repos = r)
})
3.安装R的依赖包
进入R的控制台安装包,我们这里安装了sparklyr和h2o包,为了方便我这里就偷懒直接使用外网环境安装的包,具体R的私有源使用可参考如何在Redhat中安装R的包及搭建R的私有源。
root@ip-172-31-31-212:/usr/local/lib/R/etc# RR version 3.3.0 (2016-05-03) -- "Supposedly Educational"…
> install.packages("sparklyr")
> install.packages("h2o")
以上完成了R环境的定制,那么关键部分到了,如何保存定制的镜像。
4.保存Docker镜像
在未退出容器的情况下,在新的命令窗口创建执行如下命令保存一个新的Docker镜像。
首先找到我们登录的容器ID
[ec2-user@ip-172-31-31-212 ~]$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES69be88193fa7 docker.repository.cloudera.com/cdsw/engine:2 "/bin/bash" 57 minutes ago Up 57 minutes affectionate_saha
上图标注部分即为容器的ID和对应镜像的Repository:Tag,获取到容器的ID执行如下命令将该容器保存为新的镜像。
[ec2-user@ip-172-31-31-212 ~]$ sudo docker commit 69be88193fa7 docker.repository.cloudera.com/cdsw/myengine:2.0.0sha256:727128de8e3df7e4b74395b9b9c8a4f5df6bba8cc7e03baffaf98436c4ff72d5
[ec2-user@ip-172-31-31-212 ~]$
通过命令查看我们定制的Docker镜像
[ec2-user@ip-172-31-31-212 ~]$ sudo docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdocker.repository.cloudera.com/cdsw/myengine 2.0.0 727128de8e3d About a minute ago 6.01 GB
如上图标注则表示我们的自定义镜像保存成功,到此我们的自定义镜像就制作完成了,接下来就可以在CDSW中去使用。
4.自定义镜像使用
1.登录CDSW
2.添加自定义镜像
Description:镜像的描述
Repository:Tag:镜像的Repository和Tag组合
保存成功。
3.全局设置使用自定义镜像
此处可以将我们的自定义镜像设置为默认镜像,这样所有的docker启动时默认使用的时自定义镜像
4.Project设置自定义镜像
打开myfirstR工程
点击“Setting”
5.验证自定义镜像
1.进入myfirstR工程
删除myfirstR工程下R的依赖包
2.打开“Open Workbench”
3.启动会话“Launch Session”
启动成功并且使用的是我们自定义的镜像。
4.使用library加载sparklyr和h2o包
在没有安装sparklyr和h2o包的情况下,能够正常加载这两个包。
6.总结
本文讲述了如何根据CDSW的基础镜像定制我们自己所需的Docker。
- 首先通过Docker命令启动CDSW的基础镜像,我们会在这个基础镜像中做一些配置修改和R包的预安装,并最终另存为我们所需要的“定制化”Docker。
- 在这个需要定制化的镜像中,本文讲述了如何修改R的私有源地址,但为了方便依旧采用了公网预安装需要的sparklyr和h2o,具体如何制作R的私有源,请参考如何在Redhat中安装R的包及搭建R的私有源。
- 然后将该Docker另存为我们的定制化Docker镜像,并将该定制化Docker配置到CDSW。
- 最后我们在新建Project的时候就可以选择该定制化Docker,已经预安装好了一些R依赖包(sparklyr/h2o),在开发具体的算法工程时,就不用再去连接共有/私有源下载。当然因为配置好了R的私有源,万一有些包没有预安装,也可以临时安装。
醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花!
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。