Docker で JupyterLab または Jupyter Notebook 使う

Dockerイメージが continuumio/anaconda3 で公開されているので利用はとても簡単です。

JupyterLab(Jupyer Notebook の後継)を使いたいなら

docker run -it -p 8888:8888 continuumio/anaconda3 /bin/bash -c "\
    conda install jupyter -y --quiet && \
    mkdir -p /opt/notebooks && \
    jupyter lab \
    --notebook-dir=/opt/notebooks --ip='*' --port=8888 \
    --no-browser --allow-root \
    --NotebookApp.token=''"

Jupyter Notebook の方なら

docker run -it -p 8888:8888 continuumio/anaconda3 /bin/bash -c "\
    conda install jupyter -y --quiet && \
    mkdir -p /opt/notebooks && \
    jupyter notebook \
    --notebook-dir=/opt/notebooks --ip='*' --port=8888 \
    --no-browser --allow-root \
    --NotebookApp.token=''"

で実行後、ブラウザから http://localhost:8888/ にアクセスすれば OK です。
root ユーザーの許可、トークン無しのログインを許すオプションを付けているので、閉じた環境のみで使うなどの注意はしてください。

必要なパッケージを毎回追加するのは面倒
→ Dockerイメージをカスタマイズ

前回の様な事をする場合、毎回パッケージをインストールするのは面倒なので、追加済みの Docker イメージを作っておくと便利です。

ということで以下のような Dockerfile を作成して、パッケージを追加済みのイメージを作りました。今回追加したパッケージは、

  • sqlite3
  • scikit-learn
  • mplfinance
  • yahooquery

です。

FROM continuumio/anaconda3

RUN apt-get update \
    && apt-get install --no-install-recommends -y \
    sqlite3 \
    && apt-get clean \
    && rm -r /var/lib/apt/lists/* \
    && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

RUN pip install --upgrade pip && \
    pip install scikit-learn && \
    pip install mplfinance && \
    pip install yahooquery

RUN conda install jupyter -y --quiet && \
    mkdir -p /opt/notebooks

WORKDIR /opt/notebooks
EXPOSE 8888
ENTRYPOINT ["jupyter", "lab", "--ip='*'", "--port=8888", "--no-browser", "--allow-root", "--NotebookApp.token=''", "--notebook-dir=/opt/notebooks"]

で、この Dockerfile のあるディレクトリで

docker image build -t myjn -f Dockerfile .

とすれば、イメージが作成できます。イメージの名前は myjn にしてみました。
実行する場合は、

docker run -it \
  -p 8888:8888 \
  -v $PWD/notebooks:/opt/notebooks  \
  --rm \
  myjn

で OK です。Docker 停止後も JupterLab で作成したファイルが残るように、ホストPC の ./notebooks ディレクトリを使うようにしています。

今週、ちょっと株価戻ったんですね。

2023/12/08 追記
起動時の “Would you like to receive official Jupyter news?” という通知を止めるには、次のコマンドを先に実行しておきます。

jupyter labextension disable "@jupyterlab/apputils-extension:announcements"

例えば以下の様になります。

docker run -it -p 8888:8888 continuumio/anaconda3 /bin/bash -c "\
    conda install jupyter -y --quiet && \
    mkdir -p /opt/notebooks && \
    jupyter labextension disable "@jupyterlab/apputils-extension:announcements" && \
    jupyter lab \
    --notebook-dir=/opt/notebooks --ip='*' --port=8888 \
    --no-browser --allow-root \
    --NotebookApp.token=''"
Docker Desktop for Windows/Macでつくるクリーンな開発環境構築入門(Python版) (Amazon)

コメント