rocker/binderに日本語設定を追加してApple Silicon (arm64) 向けにビルドしました
タイトルの通りなのですが。今さらですが、Dockerを初めて使ってみました。
- GitHub: tetlabo/jp_binder_arm64: rocker/binder に日本語設定を追加しました
- Docker Hub: manabi/jp_binder_arm64
Dockerの (大まかな) 仕組みや、現在主流であることはもちろん10年近く前から知ってはいましたが、「作り込んだ環境が保持されない」「ストレージを多く消費する」「仮想化のオーバーヘッドがある」といった印象 (思い込み?) から、使っていませんでした。今回も、自分で使う意図はあまりない1のですが、大学の講義 (標準PCがMac) や研修で、トラブルのないデータサイエンス (RStudio, Jupyter) 環境を配布したい、ということでイメージを作成しました。全部Google Colabでやればいいのですが、他の講義にRStudioを前提としているものもあり、この講義ではRStudio、この講義ではGoogle Colabとバラバラなのもなぁ、ということで「学部の標準データサイエンス環境」を意図しています。2
ベースとして、rockerプロジェクトでテンプレートとして配布されているbinderを使おうと思ったのですが、Dockerfile内ではgeospatialイメージを使用していて、このイメージがamd64 (x64) 用しかありませんでした。もちろん、Apple SiliconのMacでも --platform linux/amd64
オプションを指定すれば動きますが、せっかくなら仮想化にエミュレーションを重ねるよりは、arm64でビルドしたいと考えました。そこで、rockerプロジェクトのGitHubリポジトリをコピーして、改変することにしました。
…そこからが大変で、rockerプロジェクトで公開されているDockerfileをコピペで組み合わせれば動くだろう、と思ったらまぁうまくいかず、結局まる3日くらい試行錯誤してしまいました。作成した環境には、jupyter-rsession-proxyが導入されているので、RStudio ServerはJupyter Labのメニューから起動することになります。

Docker Hubに登録しているので、以下のコマンドでダウンロードし、実行できます。
|
|
なお、イメージは上記の通りarm64向けにビルドしているので、Apple Silicon搭載のMacでしか (最近のCopilot+PCも対応?) 使えません。また、Rの環境には、筆者が研修や講義でよく紹介するので、radiantパッケージをインストールしています。radiantは多くのパッケージに依存するShinyアプリであるため、Dockerfileから手元でビルドしようとすると、やたらと時間がかかります。
…いろいろ苦労して思ったのですが、やっぱりDockerはいらなくて、(大学教育に関しては) 1年次にHomebrewをベースとした「間違えのない」環境構築をさせて、それ以降は講義ごとに {renv} パッケージやuvコマンドで仮想環境を作るように指導した方が楽そうですね🤪