Home
News
Forum
Wiki
Blog
Contents
Gallery
Movies
Downloads
About NSL
If you want to see English page, please click "English" Button at Left.
[
タイトル一覧
|
ページ一覧
|
新規
|
単語検索
|
最終更新
|
ヘルプ
]
JupyterHub/DockerSpawner
をテンプレートにして作成
[
トップ
]
[ ]
開始行:
** DockerSpawner
- https://github.com/jupyterhub/dockerspawner.git
- サーバでユーザ毎に ''[[Docker]]'' でNoteBook コンテナを...
- 作業ホームは /home/jovjan/work 固定(多分 Docker Image...
- see also [[SystemUserSpawner>../SystemUserSpawner]]
#br
*** Install
(jupyterhub) # pip --no-cache-dir install git+https://gi...
or
(jupyterhub) # pip install dockerspawner
- pip --no-cache-dir install git+https://github.com/jupyt...
#br
*** 設定
#br
**** 設定ファイル(サンプル)
- [[jupyterhub_config_sample.py>./jupyterhub_config.py]]
#br
*** Docker Images
**** [[jupyterhub-sigleuser>./jupyterhub-sigleuser]]
- docker pull jupyterhub/singleuser
#br
**** datascience-notebook
- docker pull jupyter/datascience-notebook
#br
*** 新しい起動用 Docker イメージの作り方
**** Dockerfile を使う方法
# vi Dockerfile
# cp (何処か)/start.sh .
# docker build -t jupyter_single-test .
# docker images
- Dockerfile
FROM jupyterhub/singleuser
USER root
COPY start.sh /usr/local/bin
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
vim \
&& apt-get -y clean \
&& rm -rf /var/lib/apt/lists/*
**** Docker commit でイメージを作ると,二重引数の問題が発...
- iseki でログイン時
# docker exec -it jupyter-iseki /bin/bash
cd /home/
mv iseki jovyan
mkdir student
cd teacher/iseki
cp ./back_orign
cp start.sh /usr/local/bin
exit
# docker commit jupyter-iseki new-image
- back_orign
1 #!/bin/bash
2 cp group /etc/group
3 cp group /etc/group-
4 cp passwd /etc/passwd
5 cp passwd /etc/passwd-
6 cp /etc/gshadow- /etc/gshadow
7 cp /etc/shadow- /etc/shadow
8 cp /etc/subgid- /etc/subgid
9 cp /etc/subuid- /etc/subuid
- [[解決>#xeab91b6]]
#br
**** [[start.sh(改)>./start.sh-kai]], [[start.sh(オリ...
- コンテナ内の /usr/local/bin/start.sh
-- コンテナ内の環境設定スクリプト
- 利用できる環境変数
SHELL=/bin/bash
USER_ID=10015
MINIFORGE_VERSION=4.9.2-0
HOSTNAME=58f17edda0c7
LANGUAGE=en_US.UTF-8
JUPYTERHUB_API_TOKEN=d8137932ac144ebaa70bb04ba359fbac
JUPYTERHUB_BASE_URL=/
NB_UID=10015
PWD=/home/teacher/iseki
NB_NOTEDIRX=/home/{groupname}/{username}/work
GRANT_SUDO=yes
JUPYTERHUB_SERVER_NAME=
HOME=/home/teacher/iseki
LANG=en_US.UTF-8
JPY_API_TOKEN=d8137932ac144ebaa70bb04ba359fbac
NB_GID=10001
CHOWN_HOME=yes
JUPYTERHUB_SERVICE_PREFIX=/user/iseki/
JUPYTERHUB_OAUTH_CALLBACK_URL=/user/iseki/oauth_callback
NB_GROUP=teacher
USER=iseki
SHLVL=1
CONDA_DIR=/opt/conda
JUPYTERHUB_API_URL=http://172.22.1.75:8081/hub/api
JUPYTERHUB_CLIENT_ID=jupyterhub-user-iseki
JUPYTERHUB_HOST=
CONDA_VERSION=4.9.2
NB_USER=iseki
LC_ALL=en_US.UTF-8
PATH=/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/...
JUPYTERHUB_USER=iseki
JUPYTERHUB_ACTIVITY_URL=http://172.22.1.75:8081/hub/api/...
DEBIAN_FRONTEND=noninteractive
_=/usr/bin/env
#br
*** 新しいクラスを作成する
- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-...
-- edit __init__.py
-- ex.) nsldockerspawner.py
......
from dockerspawner import DockerSpawner
class NSLDockerSpawner(DockerSpawner):
......
def some_func(self):
ret = super(NSLDockerSpawner, self).some_func()
.....
return ret
......
def start(self, *, image=None, extra_create_kwargs=None,...
.......
return super(NSLDockerSpawner, self).start()
#br
**** MDLDockerSpawner
- 参考: https://gist.github.com/marufeuille/596cf6f9e26...
476 # refer: https://gist.github.com/marufeuille/596c...
477 from dockerspawner import SystemUserSpawner
478 from traitlets import Unicode
479 import pwd, os, grp
480
481 class ProjectDockerSpawner(SystemUserSpawner):
482
483 dobleArguments = False
484 #dobleArguments = True
485
486
487 host_homedir_format_string = Unicode(
488 "/home/{groupname}/{username}",
489 config = True,
490 )
491
492 image_homedir_format_string = Unicode(
493 "/home/{groupname}/{username}",
494 config = True,
495 )
496
497
498 @property
499 def host_homedir(self):
500 if (
501 self.host_homedir_format_string is no...
502 and self.host_homedir_format_string !...
503 ):
504 homedir = self.host_homedir_format_st...
505 else:
506 import pwd
507
508 homedir = pwd.getpwnam(self.user.name...
509 return homedir
510
511
512 @property
513 def homedir(self):
514 return self.image_homedir_format_string.f...
515
516
517 def get_args(self):
518 args = super(ProjectDockerSpawner, self)....
519 if (not self._user_set_cmd) and self.dobl...
520 args = []
521 return args
522
523
524 #def get_command(self):
525 # cmd = super(ProjectDockerSpawner, self)....
526 # return cmd
527 #
528 # '''
529 # if self._user_set_cmd:
530 # cmd = self.cmd
531 # else:
532 # image_info = yield self.docker("insp...
533 # cmd = image_info["Config"]["Cmd"]
534 # return cmd + self.get_args()
535 # '''
536
537
538 def template_namespace(self):
539 d = super(ProjectDockerSpawner, self).tem...
540 if self.group_id >= 0:
541 d['groupname'] = self.get_groupname()
542 return d
543
544
545 def get_groupname(self):
546 gname = ''
547 if self.group_id >= 0:
548 gname = grp.getgrgid(self.group_id).g...
549 return gname
550
551
552 def get_env(self):
553 env = super(ProjectDockerSpawner, self).g...
554 if self.group_id >= 0:
555 #env.update(NB_GID=self.group_id)
556 import grp
557 gname = self.get_groupname()
558 env.update(NB_GROUP=gname)
559 return env
560
561
562 def start(self):
563 name = self.user.name
564 user_data = pwd.getpwnam(name)
565 user_gid = user_data.pw_gid
566 gid_list = os.getgrouplist(name, user_gid)
567
568 work_dir = self.notebook_dir
569 self.volumes['jupyterhub-user-{username}'...
570
571 for gid in gid_list:
572 gname = grp.getgrgid(gid).gr_name
573 if gname.startswith("project-"):
574 dirname = gname.replace("project-...
575 self.volumes[gname] = work_dir + ...
576
577 return super(ProjectDockerSpawner, self)....
#br
#br
*** Tools
**** アイドルしている Docker コンポーネントを殺す!
***** %%jupyterhub-idle-culler%%
- jupyterhub_idle_culler
- https://github.com/jupyterhub/jupyterhub-idle-culler
- pip で入れると No module named が出て,動かない模様
-- No module named jupyterhub_idle_culler
- GitHub から直接入れる.
-- git clone https://github.com/jupyterhub/jupyterhub-idl...
-- cd jupyterhub-idle-culler
-- python setup.py build
-- python setup.py build
- ''期待通りに動かん!''
- jupyterhub_config.py
lmport sys
c.JupyterHub.services = [
{
'name': 'idle-culler',
'admin': True,
'command': [
sys.executable,
'-m', 'jupyterhub_idle_culler',
'--timeout=3600'
],
}
]
***** cull_idle_servers.py
- jupyterhub-idle-culler は期待通りに動かない.cull_idle...
- https://github.com/jupyterhub/jupyterhub/tree/a6b7e303d...
- 実行状態(run)も確実に殺してくれる(stop でなくて, rm).
- Webで開いたままだとダメ
- jupyterhub_config.py
import sys
c.JupyterHub.services = [
{
'name': 'idle-culler',
'admin': True,
'command': [
sys.executable,
'/usr/local/bin/cull_idle_servers.py',
'--timeout=3600'
],
}
]
#br
** Trouble Shooting
**** 新しいファイルがパーミッションが無いとして,作成でき...
- %%SystemUserSpawnar の場合は,まず現実のファイルのパー...
- コンテナ内 に入って,ファイルのパーミッションをチェック...
- start.sh の設定がダメダメだった.
-- start.sh 内でパーミッションを設定すれば OK
#br
* Hack
*** カスタマイズ
- https://jupyterhub.readthedocs.io/en/stable/reference/s...
#br
*** DockerSpawner が self.get_env() で取れる情報
{
'JUPYTERHUB_API_TOKEN': 'cfd4fbcd6ea6491492016765dbb...
'JPY_API_TOKEN': 'cfd4fbcd6ea6491492016765dbbf4805',
'JUPYTERHUB_CLIENT_ID': 'jupyterhub-user-bob',
'JUPYTERHUB_HOST': '',
'JUPYTERHUB_OAUTH_CALLBACK_URL': '/user/bob/oauth_ca...
'JUPYTERHUB_USER': 'bob',
'JUPYTERHUB_SERVER_NAME': '',
'JUPYTERHUB_API_URL': 'http://172.22.1.75:8081/hub/a...
'JUPYTERHUB_ACTIVITY_URL': 'http://172.22.1.75:8081/...
'JUPYTERHUB_BASE_URL': '/',
'JUPYTERHUB_SERVICE_PREFIX': '/user/bob/',
'GRANT_SUDO': 'yes',
'USER': 'bob',
'NB_USER': 'bob',
'USER_ID': 1001,
'NB_UID': 1001,
'HOME': '/home/users/bob',
'NB_GID': 100
}
*** 認証モジュール
- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-...
- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-...
- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-...
#br
*** Groups毎にマウントするボリュームを変える
- https://qiita.com/marufeuille/items/62e3a842f7a039c35aac
#br
** Users
- 以下でやろうとしたこと(ユーザを jovyan以外する)は [['...
#br
*** singleuser (コンテナ内)
**** プロセスの起動順
+ /opt/conda/bin/tini
+ /usr/local/bin/start-notebook.sh
+ /usr/local/bin/start-singleuser.sh
+ /usr/local/bin/start.sh
**** 最終的に起動されるプロセス
- /usr/local/bin/start.sh jupyterhub-singleuser "$@"
-/usr/local/bin/start.sh jupyter lab "$@"
- /usr/local/bin/start.sh jupyter notebook "$@"
**** デフォルトの引数例 $@
- --ip=0.0.0.0 --port=8888 --notebook-dir=/home/iseki/wor...
#br
**** start.sh
- [[start.sh(改)>./start.sh-kai]]
#br
**** 起動コマンド
tini -g -- \
start-notebook.sh --ip=0.0.0.0 --port=8888 --notebook-di...
sudo -E -H -u iseki PATH=/opt/conda/bin:/usr/local/sbin:...
jupyterhub-singleuser --ip=0.0.0.0 --port=8888 --noteboo...
*** Docker の起動
- Docker の起動コマンド
-- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site...
-- L804 の get_command()
#br
*** 設定ファイルから,パラメータ(引数)を渡す
**** 下記機能の実現は環境変数によっても可能
- file
/usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-p...
- Docker に渡す引数の制御
-- 任意のパラメータ(引数)に ''{username}'' 等を使用可能...
c.DockerSpawner.args = ['--username={username}']
-- ''self.format_string''() を通すと {...} を処理してくれ...
- ''注:''[[SystemUserSpawner>../SystemUserSpawner]] が正...
-- さらに jupyterhub_config.py 内などで新しい Class を定...
#br
***** code
- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-...
- 継承を使う方がスマート
- 1.0.0
936 if self.debug:
937 args.append('--debug')
938
939 if self.disable_user_config:
940 args.append('--disable-user-config')
941 # Fumi
942 #args.extend(self.args)
943 for arg in self.args:
944 args.append(self.format_string(arg))
945 return args
- 1.4.1
--- envs/jupyterhub/lib/python3.8/site-packages/jupyterh...
+++ envs/jupyterhub/lib/python3.8/site-packages/jupyterh...
@@ -1024,7 +1024,10 @@
args.append('--debug')
if self.disable_user_config:
args.append('--disable-user-config')
- args.extend(self.args)
+ ## Fumi Hax
+ #args.extend(self.args)
+ for arg in self.args:
+ args.append(self.format_string(arg))
return args
def run_pre_spawn_hook(self):
終了行:
** DockerSpawner
- https://github.com/jupyterhub/dockerspawner.git
- サーバでユーザ毎に ''[[Docker]]'' でNoteBook コンテナを...
- 作業ホームは /home/jovjan/work 固定(多分 Docker Image...
- see also [[SystemUserSpawner>../SystemUserSpawner]]
#br
*** Install
(jupyterhub) # pip --no-cache-dir install git+https://gi...
or
(jupyterhub) # pip install dockerspawner
- pip --no-cache-dir install git+https://github.com/jupyt...
#br
*** 設定
#br
**** 設定ファイル(サンプル)
- [[jupyterhub_config_sample.py>./jupyterhub_config.py]]
#br
*** Docker Images
**** [[jupyterhub-sigleuser>./jupyterhub-sigleuser]]
- docker pull jupyterhub/singleuser
#br
**** datascience-notebook
- docker pull jupyter/datascience-notebook
#br
*** 新しい起動用 Docker イメージの作り方
**** Dockerfile を使う方法
# vi Dockerfile
# cp (何処か)/start.sh .
# docker build -t jupyter_single-test .
# docker images
- Dockerfile
FROM jupyterhub/singleuser
USER root
COPY start.sh /usr/local/bin
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
vim \
&& apt-get -y clean \
&& rm -rf /var/lib/apt/lists/*
**** Docker commit でイメージを作ると,二重引数の問題が発...
- iseki でログイン時
# docker exec -it jupyter-iseki /bin/bash
cd /home/
mv iseki jovyan
mkdir student
cd teacher/iseki
cp ./back_orign
cp start.sh /usr/local/bin
exit
# docker commit jupyter-iseki new-image
- back_orign
1 #!/bin/bash
2 cp group /etc/group
3 cp group /etc/group-
4 cp passwd /etc/passwd
5 cp passwd /etc/passwd-
6 cp /etc/gshadow- /etc/gshadow
7 cp /etc/shadow- /etc/shadow
8 cp /etc/subgid- /etc/subgid
9 cp /etc/subuid- /etc/subuid
- [[解決>#xeab91b6]]
#br
**** [[start.sh(改)>./start.sh-kai]], [[start.sh(オリ...
- コンテナ内の /usr/local/bin/start.sh
-- コンテナ内の環境設定スクリプト
- 利用できる環境変数
SHELL=/bin/bash
USER_ID=10015
MINIFORGE_VERSION=4.9.2-0
HOSTNAME=58f17edda0c7
LANGUAGE=en_US.UTF-8
JUPYTERHUB_API_TOKEN=d8137932ac144ebaa70bb04ba359fbac
JUPYTERHUB_BASE_URL=/
NB_UID=10015
PWD=/home/teacher/iseki
NB_NOTEDIRX=/home/{groupname}/{username}/work
GRANT_SUDO=yes
JUPYTERHUB_SERVER_NAME=
HOME=/home/teacher/iseki
LANG=en_US.UTF-8
JPY_API_TOKEN=d8137932ac144ebaa70bb04ba359fbac
NB_GID=10001
CHOWN_HOME=yes
JUPYTERHUB_SERVICE_PREFIX=/user/iseki/
JUPYTERHUB_OAUTH_CALLBACK_URL=/user/iseki/oauth_callback
NB_GROUP=teacher
USER=iseki
SHLVL=1
CONDA_DIR=/opt/conda
JUPYTERHUB_API_URL=http://172.22.1.75:8081/hub/api
JUPYTERHUB_CLIENT_ID=jupyterhub-user-iseki
JUPYTERHUB_HOST=
CONDA_VERSION=4.9.2
NB_USER=iseki
LC_ALL=en_US.UTF-8
PATH=/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/...
JUPYTERHUB_USER=iseki
JUPYTERHUB_ACTIVITY_URL=http://172.22.1.75:8081/hub/api/...
DEBIAN_FRONTEND=noninteractive
_=/usr/bin/env
#br
*** 新しいクラスを作成する
- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-...
-- edit __init__.py
-- ex.) nsldockerspawner.py
......
from dockerspawner import DockerSpawner
class NSLDockerSpawner(DockerSpawner):
......
def some_func(self):
ret = super(NSLDockerSpawner, self).some_func()
.....
return ret
......
def start(self, *, image=None, extra_create_kwargs=None,...
.......
return super(NSLDockerSpawner, self).start()
#br
**** MDLDockerSpawner
- 参考: https://gist.github.com/marufeuille/596cf6f9e26...
476 # refer: https://gist.github.com/marufeuille/596c...
477 from dockerspawner import SystemUserSpawner
478 from traitlets import Unicode
479 import pwd, os, grp
480
481 class ProjectDockerSpawner(SystemUserSpawner):
482
483 dobleArguments = False
484 #dobleArguments = True
485
486
487 host_homedir_format_string = Unicode(
488 "/home/{groupname}/{username}",
489 config = True,
490 )
491
492 image_homedir_format_string = Unicode(
493 "/home/{groupname}/{username}",
494 config = True,
495 )
496
497
498 @property
499 def host_homedir(self):
500 if (
501 self.host_homedir_format_string is no...
502 and self.host_homedir_format_string !...
503 ):
504 homedir = self.host_homedir_format_st...
505 else:
506 import pwd
507
508 homedir = pwd.getpwnam(self.user.name...
509 return homedir
510
511
512 @property
513 def homedir(self):
514 return self.image_homedir_format_string.f...
515
516
517 def get_args(self):
518 args = super(ProjectDockerSpawner, self)....
519 if (not self._user_set_cmd) and self.dobl...
520 args = []
521 return args
522
523
524 #def get_command(self):
525 # cmd = super(ProjectDockerSpawner, self)....
526 # return cmd
527 #
528 # '''
529 # if self._user_set_cmd:
530 # cmd = self.cmd
531 # else:
532 # image_info = yield self.docker("insp...
533 # cmd = image_info["Config"]["Cmd"]
534 # return cmd + self.get_args()
535 # '''
536
537
538 def template_namespace(self):
539 d = super(ProjectDockerSpawner, self).tem...
540 if self.group_id >= 0:
541 d['groupname'] = self.get_groupname()
542 return d
543
544
545 def get_groupname(self):
546 gname = ''
547 if self.group_id >= 0:
548 gname = grp.getgrgid(self.group_id).g...
549 return gname
550
551
552 def get_env(self):
553 env = super(ProjectDockerSpawner, self).g...
554 if self.group_id >= 0:
555 #env.update(NB_GID=self.group_id)
556 import grp
557 gname = self.get_groupname()
558 env.update(NB_GROUP=gname)
559 return env
560
561
562 def start(self):
563 name = self.user.name
564 user_data = pwd.getpwnam(name)
565 user_gid = user_data.pw_gid
566 gid_list = os.getgrouplist(name, user_gid)
567
568 work_dir = self.notebook_dir
569 self.volumes['jupyterhub-user-{username}'...
570
571 for gid in gid_list:
572 gname = grp.getgrgid(gid).gr_name
573 if gname.startswith("project-"):
574 dirname = gname.replace("project-...
575 self.volumes[gname] = work_dir + ...
576
577 return super(ProjectDockerSpawner, self)....
#br
#br
*** Tools
**** アイドルしている Docker コンポーネントを殺す!
***** %%jupyterhub-idle-culler%%
- jupyterhub_idle_culler
- https://github.com/jupyterhub/jupyterhub-idle-culler
- pip で入れると No module named が出て,動かない模様
-- No module named jupyterhub_idle_culler
- GitHub から直接入れる.
-- git clone https://github.com/jupyterhub/jupyterhub-idl...
-- cd jupyterhub-idle-culler
-- python setup.py build
-- python setup.py build
- ''期待通りに動かん!''
- jupyterhub_config.py
lmport sys
c.JupyterHub.services = [
{
'name': 'idle-culler',
'admin': True,
'command': [
sys.executable,
'-m', 'jupyterhub_idle_culler',
'--timeout=3600'
],
}
]
***** cull_idle_servers.py
- jupyterhub-idle-culler は期待通りに動かない.cull_idle...
- https://github.com/jupyterhub/jupyterhub/tree/a6b7e303d...
- 実行状態(run)も確実に殺してくれる(stop でなくて, rm).
- Webで開いたままだとダメ
- jupyterhub_config.py
import sys
c.JupyterHub.services = [
{
'name': 'idle-culler',
'admin': True,
'command': [
sys.executable,
'/usr/local/bin/cull_idle_servers.py',
'--timeout=3600'
],
}
]
#br
** Trouble Shooting
**** 新しいファイルがパーミッションが無いとして,作成でき...
- %%SystemUserSpawnar の場合は,まず現実のファイルのパー...
- コンテナ内 に入って,ファイルのパーミッションをチェック...
- start.sh の設定がダメダメだった.
-- start.sh 内でパーミッションを設定すれば OK
#br
* Hack
*** カスタマイズ
- https://jupyterhub.readthedocs.io/en/stable/reference/s...
#br
*** DockerSpawner が self.get_env() で取れる情報
{
'JUPYTERHUB_API_TOKEN': 'cfd4fbcd6ea6491492016765dbb...
'JPY_API_TOKEN': 'cfd4fbcd6ea6491492016765dbbf4805',
'JUPYTERHUB_CLIENT_ID': 'jupyterhub-user-bob',
'JUPYTERHUB_HOST': '',
'JUPYTERHUB_OAUTH_CALLBACK_URL': '/user/bob/oauth_ca...
'JUPYTERHUB_USER': 'bob',
'JUPYTERHUB_SERVER_NAME': '',
'JUPYTERHUB_API_URL': 'http://172.22.1.75:8081/hub/a...
'JUPYTERHUB_ACTIVITY_URL': 'http://172.22.1.75:8081/...
'JUPYTERHUB_BASE_URL': '/',
'JUPYTERHUB_SERVICE_PREFIX': '/user/bob/',
'GRANT_SUDO': 'yes',
'USER': 'bob',
'NB_USER': 'bob',
'USER_ID': 1001,
'NB_UID': 1001,
'HOME': '/home/users/bob',
'NB_GID': 100
}
*** 認証モジュール
- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-...
- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-...
- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-...
#br
*** Groups毎にマウントするボリュームを変える
- https://qiita.com/marufeuille/items/62e3a842f7a039c35aac
#br
** Users
- 以下でやろうとしたこと(ユーザを jovyan以外する)は [['...
#br
*** singleuser (コンテナ内)
**** プロセスの起動順
+ /opt/conda/bin/tini
+ /usr/local/bin/start-notebook.sh
+ /usr/local/bin/start-singleuser.sh
+ /usr/local/bin/start.sh
**** 最終的に起動されるプロセス
- /usr/local/bin/start.sh jupyterhub-singleuser "$@"
-/usr/local/bin/start.sh jupyter lab "$@"
- /usr/local/bin/start.sh jupyter notebook "$@"
**** デフォルトの引数例 $@
- --ip=0.0.0.0 --port=8888 --notebook-dir=/home/iseki/wor...
#br
**** start.sh
- [[start.sh(改)>./start.sh-kai]]
#br
**** 起動コマンド
tini -g -- \
start-notebook.sh --ip=0.0.0.0 --port=8888 --notebook-di...
sudo -E -H -u iseki PATH=/opt/conda/bin:/usr/local/sbin:...
jupyterhub-singleuser --ip=0.0.0.0 --port=8888 --noteboo...
*** Docker の起動
- Docker の起動コマンド
-- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site...
-- L804 の get_command()
#br
*** 設定ファイルから,パラメータ(引数)を渡す
**** 下記機能の実現は環境変数によっても可能
- file
/usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-p...
- Docker に渡す引数の制御
-- 任意のパラメータ(引数)に ''{username}'' 等を使用可能...
c.DockerSpawner.args = ['--username={username}']
-- ''self.format_string''() を通すと {...} を処理してくれ...
- ''注:''[[SystemUserSpawner>../SystemUserSpawner]] が正...
-- さらに jupyterhub_config.py 内などで新しい Class を定...
#br
***** code
- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-...
- 継承を使う方がスマート
- 1.0.0
936 if self.debug:
937 args.append('--debug')
938
939 if self.disable_user_config:
940 args.append('--disable-user-config')
941 # Fumi
942 #args.extend(self.args)
943 for arg in self.args:
944 args.append(self.format_string(arg))
945 return args
- 1.4.1
--- envs/jupyterhub/lib/python3.8/site-packages/jupyterh...
+++ envs/jupyterhub/lib/python3.8/site-packages/jupyterh...
@@ -1024,7 +1024,10 @@
args.append('--debug')
if self.disable_user_config:
args.append('--disable-user-config')
- args.extend(self.args)
+ ## Fumi Hax
+ #args.extend(self.args)
+ for arg in self.args:
+ args.append(self.format_string(arg))
return args
def run_pre_spawn_hook(self):
ページ名:
サイト内 検索
高度な検索
ログイン
ユーザー名:
パスワード:
パスワード紛失
新規登録
サブ メニュー
新着情報
Books
リンク
サイトマップ
e-Learning
TUIS 認証局証明書
ミニカレンダー
2025年 5月
日
月
火
水
木
金
土
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<今日>
オンライン状況
67 人のユーザが現在オンラインです。 (8 人のユーザが xpwiki を参照しています。)
登録ユーザ: 0
ゲスト: 67
もっと...
アクセスカウンタ
今日 :
昨日 :
総計 :
Powered by XOOPS Cube 2.1© 2001-2006
XOOPS Cube Project
Design by
XoopsDesign.com