首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何基于CDSW基础镜像定制Docker

如何基于CDSW基础镜像定制Docker

作者头像
Fayson
修改2018-04-01 19:19:04
1.6K0
修改2018-04-01 19:19:04
举报
文章被收录于专栏:Hadoop实操Hadoop实操

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

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 images
REPOSITORY                                    TAG                 IMAGE ID            CREATED             SIZE
docker.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/bash
root@ip-172-31-31-212:/home/cdsw# 

如上图已成功启动docker.repository.cloudera.com/cdsw/engine:2并登录成功。

命令参数说明:docker run OPTIONSIMAGE COMMAND

-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# R
R 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     NAMES
69be88193fa7    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.0
sha256:727128de8e3df7e4b74395b9b9c8a4f5df6bba8cc7e03baffaf98436c4ff72d5
[ec2-user@ip-172-31-31-212 ~]$ 

通过命令查看我们定制的Docker镜像

[ec2-user@ip-172-31-31-212 ~]$ sudo docker images
REPOSITORY                                      TAG     IMAGE ID        CREATED              SIZE
docker.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。

  1. 首先通过Docker命令启动CDSW的基础镜像,我们会在这个基础镜像中做一些配置修改和R包的预安装,并最终另存为我们所需要的“定制化”Docker。
  2. 在这个需要定制化的镜像中,本文讲述了如何修改R的私有源地址,但为了方便依旧采用了公网预安装需要的sparklyr和h2o,具体如何制作R的私有源,请参考如何在Redhat中安装R的包及搭建R的私有源
  3. 然后将该Docker另存为我们的定制化Docker镜像,并将该定制化Docker配置到CDSW。
  4. 最后我们在新建Project的时候就可以选择该定制化Docker,已经预安装好了一些R依赖包(sparklyr/h2o),在开发具体的算法工程时,就不用再去连接共有/私有源下载。当然因为配置好了R的私有源,万一有些包没有预安装,也可以临时安装。

醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花! 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看


推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档