Windows11のDockerHubより、JupyterLab環境を立ち上げ

2024年6月22日

備忘録投稿です。

もともとはMicrosoft StoreからPython環境をインストールして、個別に仮想環境を用意してからJupyter環境を作っていたのですが、複数プロジェクトがあると切り替えが面倒なのでDocker使って何とかならんかと始めたところ

イメージ探し

DockerHubで"jupyter"で検索するといろいろ出てくるわけですが、Webを見てみると"jupyter/datascience-notebook"を皆さん使っておられるようなので便乗

コンテナ作り

pull して Run すればとりあえずは起動します。一度作って分かったのですが、ノートをおいておく作業スペースは内部的には /home/jovyan になっていました。データファイルを置いたりノートの永続化のために、ボリュームをここにマウントしておきます。適当なディレクトリ(ここでは c:\jupyter_volume)を作ってマウントします。ポート番号は他とかぶらないように適当に指定。ここでは8000番。何番でも良いですが、ここは明示的に番号を記載した方がいいみたいです。(8888ポートでつなごうとするとエラーになりました。たぶん回避策はあると思うのですが深追いせず。)

環境変数に関しては、起動後に調べてみたら以下の通りでした。気になる方はLANGとかTZあたりは指定しても良いかもです。

起動~アクセス

初回起動の場合は、前項の流れで進みます。また初回は認証を迫られます。logs からtoken文字列をコピペして、パスワードを指定すればOK。
ただローカル環境で安全と割り切れるなら、認証をスキップしてもよろしいかと。ホームディレクトリの下の .jupyterディレクトリ内に jupyter_notebook_config.py というファイルを作成して、

c.NotebookApp.token = ''

を書いておけばOK。私の例の場合では c:\jupyter_volume\.jupyter の中にWindowsからメモ帳でもVScodeでも使って作成しても大丈夫。
2回目以降の起動では、コンテナ横の起動ボタン、コマンドラインからは docker run で動きます。
Windowsのディレクトリをマウントしない場合には、Docker Desktopの Containers>コンテナ名>Exec あたりから接続して、vi あたりで編集しておけばOK。


2回目以降の起動では、コンテナ横の起動ボタン、コマンドラインからは docker run で動きます。
コンテナの所にあるリンクを叩くか、ブラウザにURLを手打ちしてアクセス

適当にノートブックを作って実行。これがボリュームで指定したディレクトリにファイルが作成されていればOK

あとは必要な追加モジュールがあれば、ターミナルからpip install すればよろし。

プロジェクトごとに使い分けるとなれば、コンテナごとにマウントディレクトリを変えていけば大丈夫ですかねえ。ネイティブで仮想環境を作り分けていたよりも、さらに環境を汚さずにすみそうではあります。演算パフォーマンスは気になるところ。

あとコンテナ環境では"jovyan"アカウントでの作業となりsudoは出来ない模様。またパッケージは conda で管理しているようなので、起動後に

$ conda update --all

あたりで最新化しておくが吉。パッケージのリストは conda list で出てくるので必要なものは以下で追加

$ conda install パッケージ名

コンソールで管理者権限で入りたい場合、コマンドプロンプトあたりで次のdockerコマンドでいけます。

docker exec -it -u root <container_id> bash

例えば apt updateした場合は次のような感じです。

Microsoft Windows [Version 10.0.22631.3737]
(c) Microsoft Corporation. All rights reserved.

C:\Users\tomi>docker exec -it -u root 275c8cb0267c0815bd4000e42197ef189fe08884ddb4b89213caa571611a69dd bash
root@275c8cb0267c:~#
root@275c8cb0267c:~#
root@275c8cb0267c:~# pwd
/home/jovyan
root@275c8cb0267c:~# apt update
Get:1 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]