🐡

Docker上でJupyter Notebookとgraph-toolの環境構築をする

2023/05/10に公開

開発環境

OS: ubuntu 20.24

graph-toolを導入するために

①Dockerをインストールする

正確には、Docker Engineをインストールする。そのためにまずは、Docker Repositoryをインストールする必要がある。
その後、Repositoryからdockerをインストールすることができる。

Step1. パッケージリストを更新
$ sudo apt update
Step2. パッケージリストをインストールする

HTTPSを通して、Repositoryを使用するためのパッケージリストをインストールする

$ sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
Step3. Dockerリポジトリを設定する

Dockerリポジトリを追加するため、Dockerの公式いくのGPGキーを追加し、Dockerリポジトリを設定する。

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg

これは、DockerのGPGキーをダウンロードし、バイナリ形式に変換して、Ubuntuシステムの/usr/~~/docker-archive-keyring.pngに保存している。
これによって、Dockerパッケージが信頼できるかどうかを検証できるようになる。

Step4. APTリポジトリをUbuntuシステムに追加

DockerのAPTリポジトリをUbuntuシステムに追加する。

$ echo "deb[arch=$(dpkg --print-architecture) signed-by = /usr/share/keyrings/docker-archive-keyring.gpg] https = //download.docker.com/linux/ubuntu $(lsb-release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Step5. Docker CEのインストール
$ sudo apt-get update
$ sudo apt-get install-y docker-ce-cli containerd.io
Step6. Dockerの起動と有効化
$ sudo systemctl enable docker
$ sudo systemctl start docker
Step7. Dockerの起動を確認

以下のコマンドを実行することで、Dockerの起動を確認することができる。
activeと表示されていたら、無事Dockerは起動されている。

$ sudo systemctl status docker

②Jupyter Notebookとgraph-toolをインストール

Step.1 Dockerfileの作成

まず、お好みの場所にディレクトリを作成し、その中にDockerfileを作成する。
今回は、docker-graph-toolというディレクトリにDockerfileを作成した。
Dockerfileの中身は以下。

FROM continuumio/miniconda3

RUN conda install -c conda-forge graph-tool jupyter -y

EXPOSE 8888
Step.2 Dockerイメージのビルド

次に、同じディレクトリにある Dockerfile を使用して、Dockerイメージのビルドを行う。

docker build -t my-graph-tool-notebook .
Step.3 Jupyter Notebookの実行

イメージがビルドされたら、以下のコマンドを使って Jupyter Notebook を実行できる。

docker run -it --rm -p 8888:8888 -v "$(pwd):/data" my-graph-tool-notebook jupyter notebook --ip=0.0.0.0 --no-browser --allow-root --notebook-dir=/data

これで、Dockerコンテナ内で Jupyter Notebook が実行され、ポート 8888 でアクセスできる。表示されるトークンを使って、ブラウザから http://localhost:8888 にアクセスしてください。

Discussion