投稿者:大島

今回はデータサイエンティスト向け開発環境「Jupyter Notebook」を、Bluemix Container上で起動する方法をご紹介したいと思います。
Bluemixではコンテナーを利用することが出来ます。
例えばDocker等で作成したコンテナーイメージをBluemix上にアップロードして起動することが可能です。
今回は、Docker Hubからjupyter/datascience-notebookイメージをローカル環境にpullして、Bluemixにアップロード&起動する方法を簡単に纏めましたた。

注意事項

今回ご紹介する手順は「Windows64bit」環境または、「Mac」環境のみ対応しております。
(理由:Bluemixが提供しているツールが上記環境しか提供していないため)
下記で紹介する手順は「Mac」での方法となりますので、Windows64bit環境の方は読み替えて実施頂けたら幸いです。

準備(必要なコマンドやツールをインストール)

以下が今回必要なツール&コマンド類です。
今回の手順では以下のツールやコマンドの導入は省略させて頂きますので、ご了承ください。

Bluemixでjupyterを起動するまでの流れ

  1. docker hubからjupyter/datascience-notebookをローカル環境へダウンロード(pull)する
  2. ローカル環境でjupyterが起動する事を確認(kitematicを利用)
  3. Bluemixへコンテナーイメージをアップロード
  4. Bluemixのカタログからアップロードしたコンテナーイメージをオーダーし、起動する
  5. Bluemix上でjupyterにアクセスしてみる

docker hubからjupyter/datascience-notebookをローカル環境へダウンロード(pull)する

docker hubからコンテナーイメージのダウンロードは簡単です。以下のコマンドを実行してください。
(インターネット環境によりますが、1時間〜数時間程かかりますのでご注意ください)

docker pull jupyter/datascience-notebook

もしくは、「kitematic」を使ってイメージのダウンロードも可能です。
「kitematic」上で「+ NEW」ボタンをクリックすると、画面上にdockerイメージの一覧が表示されます。
検索窓に「jupyter datascience」と入力すると、jupyterのイメージが一覧で表示されますので、対象イメージのボックスに表示された「CREATE」ボタンをクリックしてください。

スクリーンショット 2017-05-18 11.14.43.png

ローカル環境でjupyterが起動する事を確認(kitematicを利用)

インストールが完了するとkitematic上のコンテナーリストに「jupyter/datascience-notebook」が表示されます。

スクリーンショット 2017-05-18 11.38.09.png

コンテナーリストに表示された「datascience-notebook」をクリックし、画面上に表示された「START」ボタンをクリックします。

スクリーンショット 2017-05-18 11.45.07.png

正常に起動すると、「CONTAINER LOGS」画面に以下のようなログが出力されます。

スクリーンショット 2017-05-18 11.56.50.png

実際のローカル環境で起動しているコンテナー上のjupyterにアクセスしてみたいと思います。
「WEB PREVIEW」下に表示されているボタン(アクセスボタン)をクリックします。

スクリーンショット 2017-05-18 11.58.01.png

自動的にコンテナー上のjupyterにアクセスが可能です。

スクリーンショット 2017-05-18 12.04.30.png

補足

ログインするために必要な「Password or token」ですが、初回時にはパスワードは設定されていないため「token」でのログインになります。
「token」は「CONTAINER LOGS」に表示された下記の部分で「token=218da43c2a41cf9b2343e109873eace6485578b144d9ad3d」の「218da43c2a41cf9b2343e109873eace6485578b144d9ad3d」がtokenになります。
このtokenを先程のログイン画面のテキストボックスに入力することでログインが可能です。
パスワードの設定手順については、後ほどご紹介致します。

[I 02:56:33.460 NotebookApp](B Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 02:56:33.462 NotebookApp] 
    
    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://localhost:8888/?token=218da43c2a41cf9b2343e109873eace6485578b144d9ad3d

Bluemixへコンテナーイメージをアップロード

前準備としてイメージを保存するレポジトリをBluemix上で作成します。
大島が利用している環境は既にリポジトリーが作成しているため、本ブログで詳細な手順をご紹介出来ませんが、Qiita等で手順が紹介されておりますので良ければ確認して見てください。

IBM Bluemix Container Serviceを少しだけ触ってみる(途中)

それでは、実際の手順をご紹介します。
以下がBluemix上で公開されている手順になります。

スクリーンショット 2017-05-18 13.49.33.png

この手順に沿って以下のコマンドを実行します。
(「IMAGE ID」は「docker image」コマンドから取得できます。下記の手順をご参考ください)

# bluemix login -a https://api.ng.bluemix.net -u <ログインID> -o <組織名> -s <スペース名>
# bluemix ic init
# docker images
REPOSITORY                                 TAG                    IMAGE ID            CREATED             SIZE
jupyter/datascience-notebook               latest                 8c5a40c1eb1b        2 weeks ago         6.84 GB

# docker tag 8c5a40c1eb1b registry.ng.bluemix.net/<レジストリ名>/jupyter:jupyter
# docker push registry.ng.bluemix.net/<レジストリ名>/jupyter:jupyter

「docker push 〜」コマンドの実行が完了したら、Bluemixへログインを行い「カタログ→コンテナー」とアクセスしてください。
カタログのメニューの中に「docker push」でアップロードしたイメージが表示されるようになります。

スクリーンショット 2017-05-18 14.30.04.png

カタログに表示されたjupyterをクリックして、オーダーが画面に移ります。
「コンテナー名」、「サイズ(コンテナー上で起動しているアプリ要件に従ってサイズを選択してください)」、「パブリックIPアドレス(「要求および〜」を選択してください)を設定したら、作成をクリックしてください

スクリーンショット 2017-05-18 14.52.44.png

正常にコンテナーのオーダーと起動が完了すると、コンテナー名横のステータスが「実行中」となります。

スクリーンショット 2017-05-18 14.59.23.png

コンテナー上のjupyterにアクセスするには「ポート」で表示されている「ポート番号(上記画像では「8888」)」をクリックすると、自動的にjupyterへリダイレクトされます。

スクリーンショット 2017-05-18 15.07.09.png

ログインに必要なtokenの確認方法ですが、コンテナーの管理コンソールから「モニタリングおよびログ」から確認することが出来ます。

スクリーンショット 2017-05-18 15.21.50.png

以上で、Bluemix Containerを使ってJupyter NotebookをBluemix上で起動してみる方法のご紹介は終了です。
皆様のご参考になれば幸いです

おまけ パスワードでjupyterにログインするための設定方法

パスワードを設定するためにはBluemix上のコンテナーにログインし、コマンドを使ってパスワードを設定します。
下記のコマンドをご参考ください。
(「bluemix ic exec -it <CONTAINER ID> /bin/bash」を使ってログインを行いますが、「<CONTAINER ID>」は「bluemix ic ps」コマンドで確認が出来ます)

# bluemix ic ps
CONTAINER ID        IMAGE                                                           COMMAND             CREATED             STATUS              PORTS                         NAMES
153a9b8f-fd6        registry.ng.bluemix.net/mfpfdemo/jupyter:datascience-notebook   ""                  51 minutes ago      Running             169.44.0.244:8888->8888/tcp   dmeo-jupyter01
# bluemix ic exec -it 153a9b8f-fd6 /bin/bash
jovyan@instance-01db09dc:~/work$ jupyter notebook password
Enter password:
Verify password:
[NotebookPasswordApp] Wrote hashed password to /home/jovyan/.jupyter/jupyter_notebook_config.json
jovyan@instance-01db09dc:~/work$ exit
exit