0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

「Jupyter Notebookを用いた文芸的インフラ運用のススメ」を docker-compose で試す

Last updated at Posted at 2018-02-15

目的

国立情報学研究所(NII)の Jupyter Notebookを用いた文芸的インフラ運用のススメを試してみるために、NII の公開している Docker コンテナをお手軽に起動する。
また、個人的にちょっと使いにくく感じている部分を修正する。

参考: Jupyter notebook を用いた文芸的インフラ運用のススメ

作業端末

ここからの作業は、以下の環境を想定する。
作業端末では以下のツールが動作する。

  • docker サーバー
  • docker-compose
  • jupyter notebook 接続用のWeb ブラウザー
  • openssl

必要なファイルの作成

参参考: jupyter-for-infrastructure

この作業は作業端末のdockerユーザーで行う。

作業ディレクトリの作成

LC_DIR=/opt/docker/jupyter-LC
sudo mkdir -p ${LC_DIR}/{conf,notebooks,notebooks/.ansible}
cd ${LC_DIR}

Ansible の設定

Ansible の設定ファイルを作成する。
ここでは最低限の設定を行っているので ここを参考に
必要に応じて変更する。

cat <<EOF |sudo tee ${LC_DIR}/conf/ansible.cfg
[defaults]
forks = 3
remote_user = ansible
private_key_file = /notebooks/.ansible/ansible_id_ed25519
ansible_ssh_user = ansible
inventory = /notebooks/.ansible/inventory
EOF

Inventory ファイルの作成

Ansible の対象サーバーを指定する inventory ファイルの雛形を作成しておく。

echo "[TARGETS]" | sudo tee ${LC_DIR}/notebooks/.ansible/inventory

公開鍵の生成

Ansible の ssh 接続で利用する公開鍵を作成する。

sudo ssh-keygen -f ${LC_DIR}/notebooks/.ansible/ansible_id_ed25519 -t ed25519 -N ""

Jupyter Notebook の設定

Jupyter-LC の設定のままではパスワードを平文で記述する必要があるため、パスワードをハッシュで渡せるように変更する。

cat <<EOF |sudo tee ${LC_DIR}/conf/jupyter_notebook_config.py
import os
c.NotebookApp.ip = '*'
c.MultiKernelManager.kernel_manager_class = 'lc_wrapper.LCWrapperKernelManager'
c.KernelManager.shutdown_wait_time = 10.0

if 'PASSWORD' in os.environ:
    c.NotebookApp.password = os.environ['PASSWORD']
EOF

docker-composeの設定

Jupyter-LC 用の docker-compose.yml を作成する。

cat <<EOF |sudo tee ${LC_DIR}/docker-compose.yml
version: '2'
services:
  notebook:
    image: niicloudoperation/notebook
    environment:
      TZ: Asia/Tokyo
    ports:
      - 127.0.0.1:8888:8888
    volumes:
      - ./notebooks:/notebooks
      - ./conf/jupyter_notebook_config.py:/home/bit_kun/.jupyter/jupyter_notebook_config.py
      - ./conf/ansible.cfg:/etc/ansible/ansible.cfg
    environment:
      - PASSWORD=sha1:3703d242f3a6:04ef6e0984039af6fc1d9ec054e583898cedd500
    restart: always
EOF

権限の設定

Jupyter-LC_dockerのDockerfileでは
uid=1000 gid=100 となっているので、ディレクトリの所有者とグループを設定する。

sudo chown 1000:100 -R $LC_DIR

Jupyter Notebook コンテナの起動

ここまでの作業でコンテナを起動する準備が整ったので、docker-compose で起動する。

cd $LC_DIR
docker-compose up -d

jupyter notebook コンテナの起動後は、Webブラウザでhttp://localhost:8888/ を開く。
上記の設定例ではパスワードを聞かれたら「PASSWORD」と入力する。

おまけ

パスワードのハッシュ値は Jupyter Notebook のセルに次のように記述して実行すれば得られる。
この値を docker-compose ファイルの PASSWORD に設定して、コンテナを再起動する。

from notebook.auth import passwd
print(passwd())
0
3
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
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?