LoginSignup
42
49

More than 5 years have passed since last update.

JupyterHubをDockerで建ててみる

Posted at

まえおき

PyCon 2015で、いろんな人が、iPython(Jupyter) Notebookは欠かせない!って言うてたので、とりあえずインストールしてみようと思ったのですが、DockerでJupyter鯖たててみたっていう日本語情報がわりとすくなかったので、作業した記録を共有してみます。

dockerのインストール

Debian 8 (Jassie)が母艦なので、

$ sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
/etc/apt/sources.list.d/docker.list
# Debian Jessie
deb https://apt.dockerproject.org/repo debian-jessie main
$ sudo apt-get update
$ sudo apt-get install docker-engine
$ sudo usermod -a -G docker yi01

※ yi01 は私のユーザ名です。適宜よみかえてください。

JupyterHubのDockerイメージの作成

ここには若干罠があります。

まず、Docker Hubに上がっている

は、認証まわりの実装がなく、jupyterhub_config.pyを作って dockerの-vオプションなどをつかって認証方法などを定義する必要があります。

が、1からいろいろつくるのは面倒なので、jupyterが用意してくれてるGitHubのOAuthを使うexampleを使います。

$ git clone https://github.com/jupyter/oauthenticator.git
$ cd oauthenticator

で、READMEにしたがい、userlistを編集します。

GitHubのユーザ設定
diff --git a/example/addusers.sh b/example/addusers.sh
index eb2d86b..cedd272 100644
--- a/example/addusers.sh
+++ b/example/addusers.sh
@@ -7,6 +7,6 @@ for line in `cat userlist`; do
   user=`echo $line | cut -f 1 -d' '`
   echo "adding user $user"
   useradd -m -s /bin/bash $user
-  cp -r /srv/ipython/examples /home/$user/examples
-  chown -R $user /home/$user/examples
+#  cp -r /srv/ipython/examples /home/$user/examples
+#  chown -R $user /home/$user/examples
 done
diff --git a/example/userlist b/example/userlist
index e69de29..d8f3556 100644
--- a/example/userlist
+++ b/example/userlist
@@ -0,0 +1 @@
+YusukeIwaki admin

注意点としては、userlistを編集するだけだと、docker build

cp: cannot stat ‘/srv/ipython/examples’: No such file or directory
chown: cannot access ‘/home/YusukeIwaki/examples’: No such file or directory

こんな感じのエラーがでてコケちゃうので、シェルスクリプトもちょっとだけ編集します。
編集を終えたら、

$ cd example
$ docker build -t jupyter/oauthenticator .

で、Succeedっぽいログが出たら、

かくにん
$ docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
jupyter/oauthenticator   latest              209358b449b6        24 seconds ago      934.9 MB
jupyter/jupyterhub       latest              fd5445f17a96        5 days ago          934.8 MB

GitHubのOAuth設定

GitHubの設定画面
スクリーンショット 2015-10-12 1.14.29.png

こんな感じで設定します。
コールバックのホスト名やポート番号は、適宜よみかえてやってください。
GitHubサイト側でOAuthの認証情報の登録がおわったら、そこで得られたClientIDとシークレットを

ひみつ
diff --git a/example/env b/example/env
index 9f32b5c..7a921da 100644
--- a/example/env
+++ b/example/env
@@ -1,5 +1,5 @@
 # add your github oauth config to this file,
 # and run the container with `docker run -it -p 9000:8000 --env-file=env jupyter/oauthenticator`
-GITHUB_CLIENT_ID=
-GITHUB_CLIENT_SECRET=
-OAUTH_CALLBACK_URL=
+GITHUB_CLIENT_ID=21d***********e7a3
+GITHUB_CLIENT_SECRET=2ea1f***********************e9da7
+OAUTH_CALLBACK_URL=http://localhost:8001/hub/oauth_callback

こんなかんじで設定します。

起動

$ docker run -it -p 8001:8000 --env-file=env jupyter/oauthenticator

で、ブラウザからアクセスすると・・・

スクリーンショット 2015-10-12 0.13.20.png

キタ━━━━(゚∀゚)━━━━!! となります。

42
49
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
49