どうも、最近涼しくなってきたんでキャンプツーリング計画中のネトヲです。
今回はDocker上にマルチユーザー対応のJupyterHubを構築したので、その手順を備忘録がてらブログネタにします。
環境
- Red Hat Enterprise Linux release 8.6 (Ootpa)
- podman version 4.0.2
どうやらRHELやRocky Linuxの8.xより、Docker(podman)Docker の利用は非推奨となり、代わりに Podman を利用することが推奨されているようです。
ただ面倒くさがりの私はdockerコマンドを使いたいので、podman-dockerパッケージを入れました。
インスコ手順
公式ドキュメントや下記の記事通り進めればインストールできる、と思いきや、今日現在(2022/09/11)パッケージ名が変わっていたり、必要なパッケージが公式のDockerイメージに存在しないため、JupyterHubの起動には成功するもののログイン後エラーが発生することを確認しています。
なのでその辺りは注意が必要です。それ以外はQita準拠です。いわゆるパクリ
Dockerイメージ取得&起動
以下のコマンドでイメージ取得~起動~接続。
名前やポートはよしなに変更してください。
docker run -it -p 8000:8000 --name jupyterhub jupyterhub/jupyterhub bash
その後は脳死でアップデート等々。このDockerイメージはviパッケージが存在しないのでproxy下の環境だと苦労する。(経験談)
あと検索履歴が消えたのでリンク張れなくてスミマセンが、jupyterlabパッケージをpip installしないと、上手く起動しないとGitにあったのでインストールしてください。
apt update
apt upgrade
apt install python3 python3-pip npm nodejs vim git
#libnode64は以下でインスコ
apt install vim-gtk
#jupyterlabが必要、コレがないと「start myserver」を押してもエラーになる
pip install jupyterlab
npm install -g configurable-http-proxy
で、Jupyter起動時に指定する設定ファイルを設置する場所を作っておきます。
もちろん必須ではないので、作らず/homeでもいいしそこはご自由にどうぞ。
mkdir /etc/jupyter
そしたら設定ファイルのテンプレート生成。
jupyterhub --generate-config
Qitaに則ってファイルに追記
#https://qiita.com/dyamaguc/items/db1da3084e36029f20ccから引用
# ログイン後に http://...:8000/user/<username>/lab? へ遷移する設定(Jupyterlabが起動)
c.Spawner.default_url = '/lab'
# Jupyterlabで作成されたノートブックファイルなどが格納されるディレクトリ
c.Spawner.notebook_dir = '~/notebook'
# adminユーザのユーザ名
c.Authenticator.admin_users = {'testadmin'}
# ログインが許可されているユーザ名
c.Authenticator.allowed_users = {'testuser01'}
上記設定例だと、/home/{user}/notebookというディレクトリがcurrentになるっぽいですが、もちろんそんなディレクトリ存在しないので作成します。
#https://qiita.com/dyamaguc/items/db1da3084e36029f20ccから引用
adduser testuser01
#770でよくねとは思う
mkdir -p -m 777 /home/testuser01/notebook
chown testuser01: /home/testuser01/notebook
adduser testadmin
mkdir -p -m 777 /home/testadmin/notebook
chown testadmin: /home/testadmin/notebook
あとは設定ファイルを指定して起動するだけ
jupyterhub /etc/jupyter/jupyterhub_config.py
補足
- 上記コマンドでjupyterHubを起動されると、terminalが占有されるので、常に起動させる場合とかはscreenコマンドと組み合わせるといいかも
- ホストでufw(というかiptables)でfwを設定していると、JupyterHubで使用するポート/プロトコルを許可してもなぜか通信ができない、私の勉強不足ですので原因などご存じでしたら教えてください
- 実は今回、ラスパイ(Raspberry Pi OS)でJupyterHubを動かそうと思って、とりあえずx64のCPUで作成したDockerコンテナをexport & importしたんですが、x64→Armのようにアーキテクチャが異なるとイメージのimportはできてもそこからstartできないようです。ただオプションをつければイケるっぽい
- 実はJupyterHunインストールし動作確認後、jupyterhub_config.pyを編集したら「404 not found」と出ました、だたなんか知らんけどpip install jupyterlabをもう一回叩いたら治ったのでまあいいいや
最後に
この記事書いている途中に気づいたものの言い出せずにいましたが、
私の記事よりこっち見てください。