Docker、はじめてみました (Part 1)の続編です。
※ 本記事ではWindows WSL2上の説明をしていますが、基本的にMacでも使えます
本記事で目指すところ
実際にdockerfileを作成し、イメージ作成とコンテナ作成を行います。
今回はR Serverを立ち上げることを目指します。
dockerfileの作成
R-v4.4.2
# ベースイメージとしてRとRStudioを提供するrocker/rstudioを使用
FROM rocker/rstudio:4.4.2
# 必須システムライブラリをインストール
RUN apt-get update && apt-get install -y \
libglpk40 \
libglpk-dev \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
Dockerイメージの作成
作成したDockerfileがあるディレクトリに移動しておく
docker build \
> -f <Dockerfile名> \
> -t <Dockerイメージ名>:<Tag名> \
> .
※Dockerイメージ名とTag名は管理しやすいようにしておきましょう!
Dockerコンテナ作成
この部分が今回の肝です
docker run \
> --name <Dockerコンテナ名> \
> -p 8787:8787 \ # この部分でポートを割り当てている
> -e PASSWORD=<パスワード> \ # R Serverログイン用
> -v /home/<ユーザー名>/<マウントしたいディレクトリ>:/home/rstudio/<マウントしたいディレクトリ> \
> -d <Dockerイメージ名> \
> /init
ポイント
-v引数:Dockerコンテナ内の/home/rstudioがR Serverのデフォルトワーキングディレクトリ
-d引数:-tや-itだとローカルのターミナルが使えないのでバックエンドでコンテナ作成
Dockerコンテナ起動
docker start <コンテナ名>
http://localhost:8787/ にアクセスするとR Serverが立ち上がっている
→ filesにマウントしたローカルフォルダが出てきます!
余談-1
R Serverは1時間放置すると勝手にサインアウトします
1時間以上かかる処理なんてざらにあるのでこれは由々しき事態です
というわけで同じく困っていて方がいたので以下URLに回答がありました
https://forum.posit.co/t/signed-out-due-to-inactivity-r-studio-server-open-source-version/91105
ローカルの /etc/rstudio/rserver.conf に下記を記載しましょう!
# Inactivity Timeout
auth-timeout-minutes to 0
これで安心して放置できますね~
余談-2
せっかくなので、GitHubレポジトリにDockerfileをpushしておく
※Dockerイメージの配布も良いですが、私が良く使う環境はサイズが大きいのでDockerfileの共有としています
余談-3
# Dockerイメージの扱い
docker image # 一覧表示
docker rmi <イメージ名> # 削除
# Dockerコンテナの扱い
docker start <コンテナ名> # 起動
docker stop <コンテナ名> # 終了
docker ps # 一覧表示
docker rm <コンテナ名> # 削除
※docker rmiは紐づいているコンテナを削除しないと使えない T_T
最後に
-v, -d引数あたりが難関だったなあ~
Part 3ではPython環境整えてみます
この時点で知っておくべきTipsや基本的内容があればぜひコメントください!