6
6

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.

Docker初心者がJupyter NotebookをDockerで動かしてh2oでサーブして「Docker最高!」を体感する

Last updated at Posted at 2018-07-14

お前 is 誰?

こんにちは、初めてのqiitaです。15年ぐらい「はてな」にいた底辺派遣ITの老人がqiitaに来ました。

どんな話?

ソフトウェアエンジニアが遊びで自宅サーバーにDokcerでJupyter Notebook環境を作る話。

環境

Ubuntu 18

なぜDocker?

  • 環境汚したくない
  • コマンド一発で楽

これに尽きます。理由はこれだけで十分です。

  • Dockerって別に難しくない

というのもわかりました。
Ubuntu12ぐらいからずっとアップデートし続けたサーバーが最近死んでUbuntu18で再構築したのですが、好き勝手やってたので本当に環境が汚れて意味がわからなくなっていました。Docker使えば環境が閉じれるので非常に気持ちよいです。

Docker導入

はい。下記の通り流すだけ
https://linuxconfig.org/how-to-install-docker-on-ubuntu-18-04-bionic-beaver

Jupyter NotebookをDockerで

ここに実はもうまとまっている
https://qiita.com/kshigeru/items/ea174d6bcacc474f2a51

方針

  • ホスト的にはポート18888でjupyter NotebookをLISTEN
  • tensorflow付きのものを入れることにしました
  • /var/www/python/jupyterにあるホストのディレクトリをdocker内部に繋げる

実際に流したコマンド

dockerで動かすまで

sudo su
docker pull jupyter/tensorflow-notebook  
docker run -d --name tfnb -p 18888:8888 -v /var/www/python/jupyter:/home/jovyan/work jupyter/tensorflow-notebook  

h2o経由でサーブする

h2oを設定する

私はhttps://jn.lovesaemi.daemon.asia/に繋げます。
websocket(WSS://)も使うのでproxy.websocket: ONが必要

  "jn.lovesaemi.daemon.asia:443":
    listen:
      port: 443
      ssl:
          certificate-file: /etc/letsencrypt/live/lovesaemi.daemon.asia-0001/fullchain.pem
          key-file: /etc/letsencrypt/live/lovesaemi.daemon.asia-0001/privkey.pem
    paths:
      "/":
        proxy.websocket: ON
        proxy.reverse.url: http://127.0.0.1:18888/
service storp h2o
service start h2o

「h2oはさいつよ」なのでみんなもっと使うとよい。
設定簡単だと思いませんか!?
しかもApacheよりNginxより高速なHTTP/2サーバーなんですよ!まじ最高。
https://h2o.examp1e.net/

tokenをメモする

# jupyterのlistを調べる
docker exec tfnb jupyter notebook list  
  Currently running servers:  
    http://localhost:8888/?token=トークン :: /home/jovyan   

トークンとかパスワードとか固定できるらしいのでやりたいならやれば良いと思います。

https://jn.lovesaemi.daemon.asia/?token=トークンでアクセス可能

proxy経由なのでallow_originを弄ってdocker stop / startする

proxy経由なのでjupyter notebookを設定する必要がある。
ここがちょっとめんどくさかった。。
https://github.com/jupyter/jupyter/issues/79
に従って作業する
viぐらいは入っていると思ったけどエディタがnanoしかなくて。

# 設定ファイルを作る
docker exec tfnb jupyter notebook --generate-config
# dockerに入る
docker exec -it tfnb bash  
# 設定ファイルを編集する(nano)
nano ./.jupyter/jupyter_notebook_config.py

nanoをよくわかってないのだけどctrl + wで検索らしい。
allow_originで検索

# c.NotebookApp.allow_origin = ''

となっているので

c.NotebookApp.allow_origin = '*'

とする。
ctrl + sで保存、ctrl + xでnano抜ける
exitでdockerの中から抜けて

docker stop tfnb
docker start tfnb

でdockerを再起動。トークンを再度確認しておけば良いですね。変わっているかも?

docker exec tfnb jupyter notebook list  

Dockerでなんか変だなーと思ったら

ログ見る

sudo su
docker logs -f  

評価

  • 基本的にコマンド一発で立ち上がるのが良い
  • 環境を汚さないのが良い
  • Docker Hubの仕組みがとても良い

Docker最高だ!

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?