1: 2021-08-22 (日) 19:55:56 iseki |
現: 2021-09-06 (月) 23:53:19 iseki |
| ** Jupyter [#u471de3a] | | ** Jupyter [#u471de3a] |
| + | *** Key Word [#ccd05fd4] |
| + | - repo2docker |
| + | #br |
| + | |
| *** Docker Images [#uf21b4ef] | | *** Docker Images [#uf21b4ef] |
| **** jupyterhub/singleuser [#k5b135c9] | | **** jupyterhub/singleuser [#k5b135c9] |
| - C++, Java, Python, Tensorflow, Julia, SQL, NodeJS, Bash and more | | - C++, Java, Python, Tensorflow, Julia, SQL, NodeJS, Bash and more |
| - https://hub.docker.com/r/rattydave/jupyterhub | | - https://hub.docker.com/r/rattydave/jupyterhub |
- | - 重い(10G).非力マシンではタイムアウト(30s)する. | + | - %%重い(10G).非力マシンではタイムアウト(30s)する.%% |
| + | - これは notebook イメージじゃなくで,jupyterhub だった! |
| #br | | #br |
| | | |
- | **** joequant/bitstation:latest [#m40761fc] | + | **** jupyter/base-notebook [#x86ef2c7] |
- | - C++ | + | - 最も基本的な lab用コンテナ |
- | - https://hub.docker.com/r/joequant/bitstation/tags?page=1&ordering=last_updated | + | #br |
- | - これもタイムアウト | + | |
| + | *** イメージの作成 [#l9cd3ed4] |
| + | **** ベースになるイメージに以下の物が含まれていない可能性がある. [#ie177b49] |
| + | - start-notebook.sh |
| + | -- start.sh (言わずもがな) |
| + | - anaconda |
| + | -- conda |
| + | -- jupyterhub-singleuser |
| + | -- juoyterlab (言わずもがな2) |
| + | - sudo |
| + | #br |
| + | |
| + | **** lab へのアクセスで 404 Not Found になる.tree (notebook) へのアクセスは可 [#n327035d] |
| + | - vhtec |
| + | -- /opt/conda/etc/jupyter/jupyter_notebook_config.json をチェックする.(jupyterlab: false になっていたら true に変える) |
| + | --- jupyter serverextension enable --py jupyterlab --sys-prefix でもOK.上記ファイルは {} となる. |
| + | -- ファイルを削除(trachへリネーム)しようとすると,OSError: [Errno 18] Invalid cross-device link: のエラーが出る. |
| + | --- /opt/conda/lib/python3.6/site-packages/send2trash/plat_other.py", line 117 で %%os.remove()%% する. |
| + | --- shutil.move(src, op.join(filespath, destname)) の方が自然.要 import shutil |
| + | #br |
| + | |
| + | **** nbgrader [#oeec6bfb] |
| + | - https://github.com/LibreTexts/nbgrader-to-jupyterlab/tree/lab-common |
| + | - lab ではまだ動かん (2021 8/23) |
| + | #br |
| + | |
| + | *** コンテナ起動 [#be7c3c23] |
| + | **** 手動起動 [#j528f52c] |
| + | - docker run -dit --init --name コンテナ名 イメージ名 |
| + | |
| + | #br |
| + | **** コンテナにログイン [#t3c3e8c5] |
| + | - docker exec -it コンテナ名 /bin/bash |
| + | #br |
| + | |
| + | **** プロセスの起動順 [#z1fe719e] |
| + | + /opt/conda/bin/tini |
| + | + /usr/local/bin/start-notebook.sh |
| + | ++ /usr/local/bin/start-singleuser.sh |
| + | + /usr/local/bin/start.sh |
| + | |
| + | #br |
| + | |
| + | *** kernel [#d0a9adb5] |
| + | - Example |
| + | -- install_c_kernel |
| + | -- jupyter kernelspec list |
| + | -- jupyter kernelspec uninstall cling-cpp17 |
| + | #br |
| + | |
| + | *** docker commit すると,起動時のオプション(arguments)まで保存する. [#v7d65576] |
| + | **** 何故かイメージを変更して commit すると引数が2重になる? (''非常に重要な問題'')[#xeab91b6] |
| + | - docker logs のでエラーメッセージ |
| + | -- [C 2021-07-11 13:52:21.786 SingleUserNotebookApp application:89] Bad config encountered during initialization: Error loading argument SingleUserNotebookApp.ip=['0.0.0.0', '0.0.0.0'], ip only accepts one value, got 2: ['0.0.0.0', '0.0.0.0'] |
| + | - /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-packages/dockerspawner/dockerspawner.py L804 |
| + | -- get_command() の cmd + self.get_args() で cmd に既に引数が入っている? |
| + | - 最新版 (Project用) [[jupyterhub_config.py>../SystemUserSpawner/jupyterhub_config.py]] 内で対症療法中 |
| + | |
| + | - ''上記の Dockerfile を使って作成すれば問題無し'' |
| + | #br |
| + | **** 解決編 [#d748f997] |
| + | - 次回起動すると,オプションが 2重になる.なんてこったい! docker build では大丈夫(そもそも起動していない) |
| + | - 起動時のオプションは,イメージ(/var/lib/docker/image/overlay2/imagedb/....)に Cmd[ ] に値として保存されている. |
| + | - イメージファイルはテキスト(!?)なので,Cmd[ ] に何が書いてあるかわかる. |
| + | -- "Cmd":["start-notebook.sh","--ip=0.0.0.0","--port=8888","--notebook-dir=/home/teacher/iseki/jupyter","--SingleUserNotebookApp.default_url=/lab"] |
| + | --- しっかりコマンドが入っている. |
| + | -- 流石に直接編集するのは躊躇われる.(一回やってみる?) |
| + | --- エディタで直接編集したら,Docker から見えなくなった.まあ予想通り. |
| + | |
| + | - ちゃんと動くやつの Cmd[ ] を確認して,docker commit 起動時に -C オプションで変更可! |
| + | -- jupyter の場合:'' docker commit -c 'CMD ["start-notebook.sh"]' jupyter_old jupyter_new'' |
| + | --- /etc/passwd と /etc/group も元に戻しておく |
| #br | | #br |