为什么要在 Docker 中使用 R? 一位 DevOps 的看法

为什么要在 Docker 中使用 R? 一位 DevOps 的看法
已经有几篇关于为什么要在 Docker 中使用 R 的文章。在这篇文章中,我将尝试加入一个 DevOps 的观点,并解释在 OpenCPU 系统的环境中如何使用容器化 R 来构建和部署 R 服务器。-- Jeroen Ooms

本文导航? 1:轻松开发18%? 2: 通过 DockerHub 发布和部署43%? 3: 跨平台构建70%编译自 | http://www.r-bloggers.com/why-use-docker-with-r-a-devops-perspective/ 

 作者 | Jeroen Ooms

 译者 | geekpi

为什么要在 Docker 中使用 R? 一位 DevOps 的看法

opencpu logo

R 语言,一种自由软件编程语言与操作环境,主要用于统计分析、绘图、数据挖掘。R 内置多种统计学及数字分析功能。R 的另一强项是绘图功能,制图具有印刷的素质,也可加入数学符号。——引自维基百科。

已经有几篇关于为什么要在 Docker 中使用 R 的文章。在这篇文章中,我将尝试加入一个 DevOps 的观点,并解释在 OpenCPU 系统的环境中如何使用容器化 R 来构建和部署 R 服务器。

有在 #rstats[1] 世界的人真正地写过为什么他们使用 Docker,而不是如何么?

— Jenny Bryan (@JennyBryan) September 29, 2017[2]

1:轻松开发

OpenCPU 系统的旗舰是 OpenCPU 服务器[3]:它是一个成熟且强大的 Linux 栈,用于在系统和应用程序中嵌入 R。因为 OpenCPU 是完全开源的,我们可以在 DockerHub 上构建和发布。可以使用以下命令启动一个可以立即使用的 OpenCPU 和 RStudio 的 Linux 服务器(使用端口 8004 或 80):

  • docker run -t -p 8004:8004 opencpu/rstudio

  • 现在只需在你的浏览器打开 http://localhost:8004/ocpu/ 和 http://localhost:8004/rstudio/ 即可!在 rstudio 中用用户 opencpu(密码:opencpu)登录来构建或安装应用程序。有关详细信息,请参阅自述文件[4]。

    Docker 让开始使用 OpenCPU 变得简单。容器给你一个充分灵活的 Linux 机器,而无需在系统上安装任何东西。你可以通过 rstudio 服务器安装软件包或应用程序,也可以使用 docker exec 进入到正在运行的服务器的 root shell 中:

  • # Lookup the container ID

  • docker ps

  • # Drop a shell

  • docker exec -i -t eec1cdae3228 /bin/bash

  • 你可以在服务器的 shell 中安装其他软件,自定义 apache2 的 httpd 配置(auth,代理等),调整 R 选项,通过预加载数据或包等来优化性能。

    2: 通过 DockerHub 发布和部署

    最强大的是,Docker 可以通过 DockerHub 发布和部署。要创建一个完全独立的应用程序容器,只需使用标准的 opencpu 镜像[5]并添加你的程序。

    出于本文的目的,我通过在每个仓库中添加一个非常简单的 “Dockerfile”,将一些示例程序[6]打包为 docker 容器。例如:nabel[7] 的 Dockerfile[8] 包含以下内容:

  • FROM opencpu/base

  • RUN R -e "devtools::install_github("rwebapps/nabel")"

  • 它采用标准的 opencpu/base[9] 镜像,并从 Github 仓库安装 nabel。最终得到一个完全隔离、独立的程序。任何人可以使用下面这样的命令启动程序:

  • docker run -d 8004:8004 rwebapps/nabel

  • -d 代表守护进程监听 8004 端口。很显然,你可以调整 Dockerfile 来安装任何其它的软件或设置你需要的程序。

    容器化部署展示了 Docker 的真正能力:它可以发布可以开箱即用的独立软件,而无需安装任何软件或依赖付费托管的服务。如果你更喜欢专业的托管,那会有许多公司乐意在可扩展的基础设施上为你托管 docker 程序。

    3: 跨平台构建

    还有 Docker 用于 OpenCPU 的第三种方式。每次发布,我们都构建 6 个操作系统的 opencpu-server 安装包,它们在 http://archive.opencpu.org 上公布。这个过程已经使用 DockerHub 完全自动化了。以下镜像从源代码自动构建所有栈:

    ? opencpu/ubuntu-16.04[12]? opencpu/debian-9[13]? opencpu/fedora-25[14]? opencpu/fedora-26[15]? opencpu/centos-6[16]? opencpu/centos-7[17]

    当 GitHub 上发布新版本时,DockerHub 会自动重建此镜像。要做的就是运行一个脚本[18],它会取回镜像并将 opencpu-server 二进制复制到归档服务器上[11]。

    via: http://www.r-bloggers.com/why-use-docker-with-r-a-devops-perspective/

    作者:Jeroen Ooms[20] 译者:geekpi 校对:wxy

    本文由 LCTT 原创编译,Linux中国 荣誉推出

    LCTT 译者为什么要在 Docker 中使用 R? 一位 DevOps 的看法
    geekpi ??共计翻译:575 篇贡献时间:1262 天

    推荐文章

    < 左右滑动查看相关文章 >

    为什么要在 Docker 中使用 R? 一位 DevOps 的看法
    为什么要在 Docker 中使用 R? 一位 DevOps 的看法
    为什么要在 Docker 中使用 R? 一位 DevOps 的看法
    为什么要在 Docker 中使用 R? 一位 DevOps 的看法
    为什么要在 Docker 中使用 R? 一位 DevOps 的看法
    为什么要在 Docker 中使用 R? 一位 DevOps 的看法
    为什么要在 Docker 中使用 R? 一位 DevOps 的看法

    点击图片、输入文章 ID 或识别二维码直达

    原文链接请访问“原文链接”获得可点击的文内链接、全尺寸原图和相关文章。