今まで、データ分析にはデスクトップ版のRstudioを使っていたのですが、最近Docker環境下のRstudio Serverに移行しました。自宅と職場でMac、Windows両方のマシンを使っていたので、(特に文字エンコードなど)Docker上で同じ環境を構築して、データ分析ができるようになり、とても快適です。
Docker HubにはGISの分析も可能なRstudio Server環境として、rocker/geospatial((rocker/geospatial. Accessed February 21, 2021. https://hub.docker.com/r/rocker/geospatial)) があります。ただ、見よう真似で docker pull して、docker run rocker/geospatial を行っても、以下2点の問題がありました。
- ggplot2 などでplotした図が日本語に対応していない(文字化けしてしまう。)
- Host/Container間のファイルシステムを共有していないと、いつもデスクトップ版で使用していたファイルにアクセスできない。(Docker runの際に設定をしておかないと、立ち上げてから setwd しようとしてもできない。)
この2点に対処した内容を、覚書として残しておきます。なお、Dockerについては、米国データサイエンティストのかめれおんさんのDocker講座((米国AI開発者がゼロから教えるDocker講座. Udemy. Accessed February 21, 2021. https://www.udemy.com/course/aidocker/))で詳しく、わかりやすく理解することができました。無料のブログ記事((Docker超入門①〜Dockerってなに?〜【初心者向け】. Accessed February 21, 2021. https://datawokagaku.com/whatisdocker/))もあるので、参照をおすすめします。上記の講座の知識を前提条件に以下の内容を記載していきます。
Dockerfile の作成
まず、Host(コンピュータ)側の任意の場所に、Dockerfile((Docker超入門⑤〜Dockerfileを使う〜【初心者向け】. Accessed February 21, 2021. https://datawokagaku.com/howtousedockerfile/))を作成します。今回はDropbox上にdockerという名前のディレクトリを作成してDockerfileを作ります。(例:(Mac) C:\Users\user\Dropbox\docker 、(Windows)D:\Dropbox\R\docker)
メモ帳でもエディタでも良いので、Dockerfileという名前のファイルを作成し、docker のディレクトリ内に設置します。ディレクトリ内には Dockerfile以外のファイルは原則置かないようにしてください(Docker build の際に影響します。)
こちら((RStudio Serverのインストール. Accessed February 21, 2021. https://k-metrics.github.io/cabinet/env_install_svr.html))を参考にDockerfileを作成しました。RUNごとにimageが作成されてしまう((Docker超入門⑦〜よく使うDockerfileコマンド一覧〜【初心者向け】. Accessed February 21, 2021. https://datawokagaku.com/dockerfile_commands/))ので、なるべく RUN は バックスラッシュ \ で繋げて書くのが望ましいとされます。
# ベースとするイメージ(任意のrocker/*に変更可能)
FROM rocker/geospatial:latest
# OS環境(rockerはdebianベース)に日本語ロケールを追加し切り替え
ENV LANG ja_JP.UTF-8
ENV LC_ALL ja_JP.UTF-8
RUN sed -i '$d' /etc/locale.gen \
&& echo "ja_JP.UTF-8 UTF-8" >> /etc/locale.gen \
&& locale-gen ja_JP.UTF-8 \
&& /usr/sbin/update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
RUN /bin/bash -c "source /etc/default/locale"
RUN ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# 日本語フォントをインストール
RUN apt-get update && apt-get install -y \
fonts-ipaexfont \
fonts-noto-cjk
Code language: PHP (php)
Docker build
(Macなら)TerminalでSSH接続。Windowsであれば TeraTerm((株式会社インプレス. 窓の杜. 窓の杜. Accessed February 21, 2021. https://forest.watch.impress.co.jp/library/software/utf8teraterm/))やWindows Terminal((ついに完成「Windows Terminal」の機能と使い方まとめ. @IT. Accessed February 21, 2021. https://www.atmarkit.co.jp/ait/articles/2005/28/news018.html))を使用してください。Linuxの基礎コマンドは、こちら((dotinstall. 【旧版】UNIXコマンド入門 [一般ユーザー編] (全24回). ドットインストール. Accessed February 21, 2021. https://dotinstall.com/lessons/basic_unix_v2))が動画で解説してくれて丁寧です。かめれおんさんのDocker講座((米国AI開発者がゼロから教えるDocker講座. Udemy. Accessed February 21, 2021. https://www.udemy.com/course/aidocker/))の中でも基礎コマンドについて解説してくれています。
# 自分(Mac)の場合 /Users/user から /Users/user/Dropbox/docker へ移動
cd Dropbox
cd docker
Code language: PHP (php)
なるべく RUN は バックスラッシュ \ で繋げて書くのが望ましいとされます。
# /Users/user/Dropbox/docker
docker build -t geo:geospatial .
Code language: PHP (php)
build後、Docker runをしますが、 -v オプションでファイルシステムを共有し、-p オプションでHostとContainerのポートを繋げます。こちらの記事も参考にしました。
Macの場合
docker run -p 8787:8787 -v C:\Users\user\Dropbox\R\:/home/rstudio -d geo:geospatial
Code language: JavaScript (javascript)
C:\Users\user\Dropbox\R\ はそれぞれご自身が使用している任意のフォルダパスを入力してください。
WindowsでDドライブを使用している場合
docker run -p 8787:8787 -v D:\Dropbox\R:/home/rstudio -d geo:geospatial
Code language: JavaScript (javascript)
などとなると思いますが、Dドライブ上のディレクトリでうまくマウントできない場合は、ローカルセキュリティポリシーの設定を確認してください。
また、Windowsの場合は、Virtual Hard DiskをDドライブに設定しておいたほうが良さそうです((Wand_ta. Docker for Windowsを使っていてCドライブが枯渇したときの対処. 勉強日記. Published 1544067149. Accessed February 21, 2021. https://wand-ta.hatenablog.com/entry/2018/12/06/123229))。
ブラウザからRstudioへアクセス
上記のコマンドを入力して、エラーが出なければ、無事にRStudioが起動できています。http://localhost:8787 で確認してみてください。今回はパスワードを任意のものに設定しなかったため、C:\Users\user\Dropbox\R\ はそれぞれご自身が使用している任意のフォルダパスを入力してください。
追記:Docker-composeによる管理方法
Docker-composeを使ってRstudioを管理することもできます。上記記事のままでも問題ないのですが、Docker run する際に、毎回長いコードを書くのも、覚えるのも、大変です。また、将来的に RStudio Server 以外にも色々なコンテナを併用したい場合がでてくるかもしれません。そのようなときは Docker-compose が役に立ちます。下記の記事をご参考ください。
ピンバック: Rの冒頭に記載するコードについて - shoei05
ピンバック: RstudioをGitHubとプロジェクトテンプレートで管理する - shoei05
ピンバック: Docker-compose を使って Rstudio を管理する - shoei05
ピンバック: Zotero で citation keys を設定する ( zotero-better-bibtex ) - shoei05
ピンバック: Rstudio のプロジェクトフォルダにある .git と .Rproj.user を Dropbox 非同期に設定する - shoei05
ピンバック: Docker で Rstudio ver 1.4 をインストールする - shoei05