こちらの記事の続きです。
Jupyter notebookは良いけど、Maximaを使えるようにする仕組みをWindowsで動かすのは大変そう、とか、将来はこんな環境がコンテナ化されて使えるようになる、という話を書きました。
実は今、Microsoftがとても頑張っているおかげで、Windowsの世界で大きな変化が起きています。先月末くらいに公式リリースされたWindows 10 version 2004というやつです。このバージョンからWindows 10 homeでもWSL2という機能が標準搭載されました。Windows 10の中で仮想機能を使ってLinuxカーネルが動く、という仕組みです。
早速Docker Desktopがこれに対応したバージョンを配布しており、DockerコンテナがWindows10 homeでも動かせる!!ということなのです。
で、やってみました。実はこの話を知った先月頃から次のものを全て含むDockerコンテナを作って手元で試し始めていました。
- sbcl 2.0.5
- maxima 5.43.2
- gnuplot 5.2 patchlevel 8
- quicklisp
- maxima-asdf
- python 3.8
- jupyter lab, jupyter notebook (含むMathJax)
- maxima-jupyter
実は、最近ブログ記事を書くためのmaxima環境はまさに上記の通り(+ gitくらい)です。
一昨日くらいから新しく初めた作業は以下の通り:
- 上記のDockerfileから作成したDocker imageをDockerhubに登録
- 家の古いWindows 10 home PCをversion 2004に更新
- 手順に従ってWSL2を有効化
- 手順に従ってDocker Desktop for Windowsをインストール
- Powershellの中でDockerhubに登録したイメージを指定して実行
うまく動きました!!
Windows 10 home上でコンテナが起動してその中でjupyter notebookの起動、Windows上のEdgeブラウザでjupyter notebookをアクセスし、ノートを開きmaximaセッションを実行することが出来ました。もちろん公開済みのMaximaパッケージ(GaloisGroupSolver, qepmax, euler-maclaurin-sum)をGithubから直接インストールして実行することもできました。同じことは既にMac OS Xでも可能ですし、クラウドでもこのコンテナは動作すると思います。つまりDockerコンテナがとても汎用的なアプリ実行環境になるのです。
実はこの環境が出来たことでもう一つ長年の夢が叶いました。それはqepcad Bを呼び出すqepmaxの実行がWindows PC単体で実現できたことです。
このストーリーの残念な点は、上記手順のうち「WSL2を有効化」とか「Powershellの中でDockerhubに登録したイメージを指定して実行」のハードルが高く、やはりエンジニアの方にしかお勧めできないことです。
マクロソフトがWSL2をデフォルトで有効にし、Docker Desktop for Windowsがもう少しだけ使いやすくなれば、この環境を誰にでもお勧めできるようになると思います。
追記:既にDocker desktop (win/mac/linux)を導入済みの場合、上記のDockerコンテナを使ってみたい方は、
% docker run -it --rm --name maxima-jupyter-asdf-sbcl -p 8888:8888 yasuakihonda/maxima-jupyter-asdf-sbcl jupyter notebook --ip 0.0.0.0 --allow-root
でコンテナを起動してください。jupyterの起動メッセージに表示されるURL(トークン付きです)を同じマシン上のブラウザのアドレスバーにコピペすればアクセスできるはずです。初期画面の右上のnewを押して、ドロップメニューからmaximaを選択してください。新しいMaximaセッションが始まります。