docker-composeで動かしたBatfishをJupyter Notebookから使う

スポンサーリンク

はじめに

前回の続きです。

今回はBatfishをJupyter Notebookで動かしてみます。

参考サイト

batfishに詳しい日本語のサイト。こちらのサイト様が無かったら動かせたかどうか・・・

quesions一覧。ここを見て色々作っていく感じ。

quesions一覧日本語版

使ったconfig

構成図はこんな感じ。

configは前回と同じなので省略。

Batfishを動かすための構成

AWSのEC2でubuntu18.04を使いました。

構成

Jupyter Notebookを保存しておきたかったのでtest.ipynbファイルを作成しました。
中身は空にしておきJupyter NotebookのGUIから保存してしまおうという魂胆です。

docker-compose.yaml

前回と変わらないです。test.ipynbはmynetディレクトリ配下にあるので。

test.ipynb

Jupyter Notebookで作ったやつです。

※ブラウザからJupyter Notebook上で作ったやつを後でcatを使って見ただけです。これを0から書いたわけではないです。

内容は前回のpybatfish触った時と同じような内容です。

コンテナ起動&pybatfishの実行

コンテナ起動

各ファイル、ディレクトリを用意したら以下コマンドでdockerを起動します。

docker-compose up -d

※停止はdocker-compose down

※前回から引き続きでやっている場合はmynet配下にipynbディレクトリを作成してtest.ipynbを新たに置いたのでdockerコンテナの再起動が必要です。

docker-compose down → docker-compose up -d

Jupyter Notebookにloginするときにtokenを求められるので

docker-compose logs

と入力してtokenを確認しておきます。

このときは5ac6ef07476d2b2731499225610483933b45408f72a6d816。起動するたびにtoken変わるので注意。

Jupyter Notebookへアクセス

私の場合EC2で動かしているのでhttp://publicip:8888に適当なブラウザでアクセスします。ここではFireFoxを使っています。

tokenを求められるので先ほどのtokenを「Password or token:」のところにコピペしてLog inを押します。

無事ログインできるとこんな画面になるはずなのでmynetworks→ipynb→test.ipynbをクリックします。

※私の環境では開いたページでkernel not connectとか言われて軽くハマってました(二日間くらいorz)ブラウザをFirefoxにしてプロキシ切ったら起きなくなった。よかった。。

動かすには上のタブからCell→Run Allをクリックします。

In [*]となり計算が始まる様子。少し待っているとIn [1]、In [2]と進んで行き、Out [2]なども表示されるはずです。このOutに表示される結果は前回pybatfishをCUIで打ち込んだものと同じです。Jupyter Notebookでpython3使ってpybatfishをimportして使ってるんだから当然ですね。

ちなみにIn [7]とIn [8]で追加してあるbfq.edgesはこちら参照。隣接関係見るものです。

Jupyter Notebookの保存方法

はじめからout []ありで保存したいならRun AllしたあとにFile→Save as...でOK。
Out []消したいならCell→All Output→ClearしてからFile→Save as...を実行します。

test.ipynbの確認方法

dockerコンテナ内に入らなくてもホスト側からcat test.ipynbで確認するだけでOKです。

おまけ

batfish/allinoneのJupyter Notebookに用意されている各notebookって初めからOut []が出力されたものが保存されているんですね。はじめて動かしたときこの点に混乱してました。何で動かしてないのにOut []が出てるんだろう?とw

上のタブからCell→All Output→Clearをクリック。するとOutが全部消えます。すっきりします。その後にCell→Run Allを選択すると計算結果が出るので爽快です。(わたしだけ?w)

最後に

batfish、ネットワークエンジニア時代に知っていれば色々便利だったろうに・・・
とはいえ現職でも使える場面はあると思うので使っていきたい。

関連コンテンツ



シェアする

  • このエントリーをはてなブックマークに追加

フォローする