これは Batfish Advent Calendar 2018 の8日目の記事です。
■ はじめに
ネットワークコンフィグ分析ツール Batfish には公式 Docker イメージが2つあります。
- イメージ1: batfish/batfish
- batfish 本体の イメージ
- イメージ2: batfish/allinone
- batfish 本体と Python ライブラリ、かんたんにお試しできる Jupyter Notebook やサンプルコンフィグ入りイメージ
オールインワンな batfish/allinone
は便利ですが、公式のコンテナ起動手順例ではデフォルトではあらかじめ用意されたサンプルコンフィグしか利用できません。もちろん Jupyter Notebook 経由でアップロードや、新規作成もできますが、少々手間に感じます。
そこで、本記事では batfish/allinone
の環境の Jupyter Notebook から自前のコンフィグディレクトリを利用可能にする方法を説明します。
■ 公式のコンテナ起動手順例では、用意されたコンフィグのみ利用可能
公式のコンテナ起動手順例は以下のとおりです。
docker run -p 8888:8888 batfish/allinone
この手順で起動した Notebook では、以下のようなディレクトリ構造が見えます。
notebooks
ディレクトリあらかじめ用意されたサンプルコンフィグファイルが格納されたディレクトリです。
■ /notebooks ディレクトリ配下にマウントすると、自前コンフィグ利用可能になる
Notebook に表示されるディレクトリは、コンテナ側の /notebooks
です。
そのため、Notebook 上で、自前コンフィグがある別のディレクトリをマウントするには、/notebooks
ディレクトリ配下にマウントすれば良いことになります。
例えば、自前コンフィグがあるディレクトリが mynetworks
であれば、以下のコマンドでコンテナを起動します。
docker run -p 8888:8888 -v $(pwd)/mynetworks:/notebooks/mynetworks batfish/allinone
この手順で起動した Notebook では、以下のようなディレクトリ構造が見えます。
mynetworks
ディレクトリが自前コンフィグのディレクトリです。
もし、batfish/allinone
イメージにもともとある、.ipynb
ファイルや networks
ディレクトリなどさえも不要の場合は、以下のようにします。
docker run -p 8888:8888 -v $(pwd)/mynetworks:/notebooks batfish/allinone
■ まとめ
batfish/allinone
イメージの Jupyter Notebook は、コンテナ側の/notebooks
ディレクトリを表示する-v $(pwd)/mynetworks:/notebooks/mynetworks
のようにマウントすると自前コンフィグも Notebook から利用できるようになる