Deep Karmaning

技術系の話から日常のことまで色々と書きます

DockerでCentOS6にRとRStudio Serverが入ったDockerfileを作ってみる

概要

普段iMacで分析をやることもあれば、ラップトップのMac Book Airで分析をやったりすることもあり、 お互いの環境が一致せずに気持ち悪さを感じる事があるのもあり、ついにDockerに手を出してみました。

今回はDockerでCentOS6にRとRStudio Serverが入ったimageを作るDockerfileを作るということをやってみたいと思います。

ちなみに以下のような、

github.com

rockerというR周りの環境が用意されたimageがすでにあるようですが、あえて素のCentOSにRsutio Serverを入れるまでの処理をすることで、Dockerへの理解を深めていきたいと思います。

実装

それでは実装です。まずはベースとなるCentOS6を指定します。

FROM centos:6

そしてコマンドが標準出力されるようにセット。なくても大丈夫です。

#print doing command
RUN set -x

諸々のインストールに必要なコマンド類を入れて、

#install utility command
RUN yum -y install epel-release && \
    yum install -y wget && \
    yum install -y sudo

RとRstudio Serverを入れ、

#install r and rstudio server
RUN sudo yum -y install R && \
    mkdir downloads && \
    cd downloads && \
    wget -q https://download2.rstudio.org/rstudio-server-rhel-1.1.463-x86_64.rpm && \
    sudo yum -y install rstudio-server-rhel-1.1.463-x86_64.rpm

ログイン用のユーザーを作成します。

#user setting
RUN adduser rstudio && \
    echo "rstudio:rstudio" | chpasswd

ここで、echo "rstudio:rstudio"のコロンのあとでパスワードを設定しています。 つまりユーザー名:rstudio、パスワード:rstudioのユーザーを作っていることになります。

最後にポートの開放設定です。

EXPOSE 8787

これらをまとめてDockerfileという名前で保存します。それでDockerfileの準備は完了です。

次にターミナルでDockerfileのあるフォルダまで移動して、

docker build -t rstudio-server .

というコマンドを打ち込みrstudio-serverというimageを作ります。そして、

docker run -it --name rstudio-server -p 8787:8787 rstudio-server /bin/bash

と実行しコンテナの作成・ログインします。

コンテナの中で、

sudo rstudio-server verify-installation

とすることでRstudio Serverが起動します。

そしてブラウザからhttp://localhost:8787にアクセスすると以下のような画面が出るので、

f:id:rf00:20181231195925p:plain

作成したユーザー名とパスワードを入力すればログイン可能で、 Rstudioが使用可能です。

全体のコードをまとめたのは以下になります。

gist:f56478dee631c371c5377128c3953334 · GitHub

まとめ

今回はあえて素のCentOSにRstudio Serverを入れるDockerfileを作ってみました。

今後はJupyter等を入れるDockerfileも作成し、再利用可能で変更しやすい分析環境の構築をできるようになっていきたいなと思います。

それでは間違い等ありましたら、ご指摘お願いいたします。