Linux中國

為什麼要在 Docker 中使用 R? 一位 DevOps 的看法

R 語言,一種自由軟體編程語言與操作環境,主要用於統計分析、繪圖、數據挖掘。R 內置多種統計學及數字分析功能。R 的另一強項是繪圖功能,製圖具有印刷的素質,也可加入數學符號。——引自維基百科。

已經有幾篇關於為什麼要在 Docker 中使用 R 的文章。在這篇文章中,我將嘗試加入一個 DevOps 的觀點,並解釋在 OpenCPU 系統的環境中如何使用容器化 R 來構建和部署 R 伺服器。

有在 #rstats 世界的人真正地寫過為什麼他們使用 Docker,而不是如何么?

— Jenny Bryan (@JennyBryan) September 29, 2017

1:輕鬆開發

OpenCPU 系統的旗艦是 OpenCPU 伺服器:它是一個成熟且強大的 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)登錄來構建或安裝應用程序。有關詳細信息,請參閱自述文件

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 鏡像並添加你的程序。

出於本文的目的,我通過在每個倉庫中添加一個非常簡單的 「Dockerfile」,將一些示常式序打包為 docker 容器。例如:nabelDockerfile 包含以下內容:

FROM opencpu/base

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

它採用標準的 opencpu/base 鏡像,並從 Github 倉庫安裝 nabel。最終得到一個完全隔離、獨立的程序。任何人可以使用下面這樣的命令啟動程序:

docker run -d 8004:8004 rwebapps/nabel

-d 代表守護進程監聽 8004 埠。很顯然,你可以調整 Dockerfile 來安裝任何其它的軟體或設置你需要的程序。

容器化部署展示了 Docker 的真正能力:它可以發布可以開箱即用的獨立軟體,而無需安裝任何軟體或依賴付費託管的服務。如果你更喜歡專業的託管,那會有許多公司樂意在可擴展的基礎設施上為你託管 docker 程序。

3: 跨平台構建

還有 Docker 用於 OpenCPU 的第三種方式。每次發布,我們都構建 6 個操作系統的 opencpu-server 安裝包,它們在 https://archive.opencpu.org 上公布。這個過程已經使用 DockerHub 完全自動化了。以下鏡像從源代碼自動構建所有棧:

當 GitHub 上發布新版本時,DockerHub 會自動重建此鏡像。要做的就是運行一個腳本,它會取回鏡像並將 opencpu-server 二進位複製到歸檔伺服器上

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

作者:Jeroen Ooms 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國