#author("2023-08-29T02:55:18+00:00","default:iseki","iseki")
** Jupyter [#u471de3a]
*** Key Word [#ccd05fd4]
-  repo2docker


*** Docker Images [#uf21b4ef]
**** jupyterhub/singleuser [#k5b135c9]
- https://hub.docker.com/r/jupyterhub/singleuser/


**** jupyter/datascience-notebook [#rabcf16e]
- https://hub.docker.com/r/jupyter/datascience-notebook/


**** jupyter/tensorflow-notebook [#h63a2e3c]
- https://hub.docker.com/r/jupyter/tensorflow-notebook/


**** rattydave/jupyterhub [#p536b876]
- C++, Java, Python, Tensorflow, Julia, SQL, NodeJS, Bash and more
- https://hub.docker.com/r/rattydave/jupyterhub
- %%重い(10G).非力マシンではタイムアウト(30s)する.%%
- これは notebook イメージじゃなくで,jupyterhub だった!


**** jupyter/base-notebook [#x86ef2c7]
- 最も基本的な lab用コンテナ


*** イメージの作成 [#l9cd3ed4]
**** ベースになるイメージに以下の物が含まれていない可能性がある. [#ie177b49]
- start-notebook.sh
-- start.sh (言わずもがな)
- anaconda
-- conda
-- jupyterhub-singleuser
-- juoyterlab (言わずもがな2)
- sudo


**** 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


**** nbgrader [#oeec6bfb]
- https://github.com/LibreTexts/nbgrader-to-jupyterlab/tree/lab-common
- lab ではまだ動かん (2021 8/23)


*** コンテナ起動 [#be7c3c23]
**** 手動起動 [#j528f52c]
- docker run -dit --init --name コンテナ名 イメージ名


**** コンテナにログイン [#t3c3e8c5]
- docker exec -it コンテナ名 /bin/bash


**** プロセスの起動順 [#z1fe719e]
+ /opt/conda/bin/tini
+ /usr/local/bin/start-notebook.sh
++ /usr/local/bin/start-singleuser.sh
+ /usr/local/bin/start.sh



*** kernel [#d0a9adb5]
- Example
-- install_c_kernel 
-- jupyter kernelspec list
-- jupyter kernelspec uninstall cling-cpp17


*** 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 を使って作成すれば問題無し''

**** 解決編 [#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 も元に戻しておく

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 ページ一覧 検索 最終更新   ヘルプ   最終更新のRSS