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

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

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实操

原文发布于微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文发表时间:2017-10-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏搜云库

Ubuntu 17.04 x64 安装 Docker CE 初窥 Dockerfile 部署 Nginx

Docker 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的运行效率,降低了云计算资源供应的成本!使用 Docker,可以让应用的部署、测...

2396
来自专栏散尽浮华

Docker容器学习梳理--基础知识(1)

Docker是PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0...

28010
来自专栏友弟技术工作室

使用 Dockerfile 定制镜像

最近公司项目上线原因,一直加班。没有时间更新文章。隔壁部门需要我提供sdk的打包的支持,所以一直在学习docker。原文 ? 从刚才的 docker commi...

4217
来自专栏Java 源码分析

Docker 入门

2446
来自专栏北京马哥教育

Docker Swarm学习笔记(一)

Docker Swarm概述 Docker Swarm是Docker官方提供的集群工具。它可以将一些关联的Docker主机转变成一个虚拟Docker主机。因为D...

3185
来自专栏大魏分享(微信公众号:david-share)

如何有效地对Docker的镜像进行管理?

容器的存储空间如何提供? 前段时间,笔者看到一篇文章,题目是“容器就是Linux”,写的不错。容器说简单点就是容器级别的虚拟化,在一个Kernel Space...

4526
来自专栏宝哥的专栏

Docker系列学习文章 - 专业化定制镜像dockerfile(六)

| 导语上一篇我们跟大家讲了docker镜像,关于镜像的特点和作用我想大家都明白了。那么如何比较专业的去定制我们需要的镜像呢?用commit?不对,我们说过这个...

1.4K26
来自专栏Brian

Docker 学习系列二之基本管理

---- 概述 之前对docker的基本的工作原理进行了简单的介绍和学习Docker工作原理 今天开始不断的学习Docker的容器、镜像和仓库管理。 Docke...

3554
来自专栏惨绿少年

Docker 容器入门

1.1 容器简介 1.1.1 什么是 Linux 容器 Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件...

5039
来自专栏圣杰的专栏

Hello Docker

Docker: Build, Ship, and Run Any App, Anywhere 在任何地方构建、交付和运行任何应用 1. 引言 最近简单的学...

2369

扫码关注云+社区