【令和最新版】REHL8.6のPodman(Docker)上でJupyterHubを動かしたお話

どうも、最近涼しくなってきたんでキャンプツーリング計画中のネトヲです。

今回はDocker上にマルチユーザー対応のJupyterHubを構築したので、その手順を備忘録がてらブログネタにします。

環境

  • Red Hat Enterprise Linux release 8.6 (Ootpa)
  • podman version 4.0.2

どうやらRHELやRocky Linuxの8.xより、Docker(podman)Docker の利用は非推奨となり、代わりに Podman を利用することが推奨されているようです。

Podman – とほほのWWW入門

トップ >Docker > Podman目次 Podmanとは Red Hat社が開発したコンテナ管理ツールです。 Red Hat Enterprise Linux 8、CentOS 8 (あるいはその後継である Rocky Linux 8 や AlmaLinux 8) では Docker の利用は非推奨となり、代わりに Podman を利用することが推奨されています。 コマンド引数は docker コマンドとほぼ互換です。 root権限が無くても一般ユーザでも利用可能です。 dockerデーモンに該当するデーモンプロセスがありません。デーモンがダウンして全コンテナに影響するということがありません。 インストール dnf または yum コマンドでインストールします。 # dnf -y install podman Dockerコマンド podman-docker パッケージをインストールすれば podman コマンドの代わりに docker コマンドも利用できるようになります。 # dnf -y install podman-docker 本家の docker コマンドではないことを示す警告がでますが、/etc/containers/nodocker ファイルを作成すると抑制されます。 # docker ps Emulate Docker CLI using podman.

ただ面倒くさがりの私はdockerコマンドを使いたいので、podman-dockerパッケージを入れました。

インスコ手順

公式ドキュメントや下記の記事通り進めればインストールできる、と思いきや、今日現在(2022/09/11)パッケージ名が変わっていたり、必要なパッケージが公式のDockerイメージに存在しないため、JupyterHubの起動には成功するもののログイン後エラーが発生することを確認しています。

DockerでJupyterhubを試してみた – Qiita

はじめにマルチユーザプラットフォームを作れるJupyterhubを試してみたときの自分用メモ。やることJupyterhub起動jupyterhub_config.pyの設定NativeAu…

なのでその辺りは注意が必要です。それ以外は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をもう一回叩いたら治ったのでまあいいいや

最後に

この記事書いている途中に気づいたものの言い出せずにいましたが、

Docker

No Description

私の記事よりこっち見てください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です