はじめに
はじめて記事を書くので見にくくても許してくださいまし...
dockerとjupyterlabとpython
最近docker勉強し始めて,docker上でjupyterlab走らせるありがたみを感じていた.
だが問題発生.
俺が大好きなtensorflow 1.12がインストールできねぇ.
原因は,最新のjupyterが配布しているdockerイメージでのpython3のバージョンが3.7だから.
(tensorflow1.13使えばいいじゃんっていうツッコミは受け付けない.だって,研究室のGPUサーバーまだアプデしてないんだもん.環境揃えたいじゃん)
そこで,python3.6.8をインストールしたいんだけどいろいろハマったのでメモっとく.
anacondaを利用する
当たり前だけどjupyter使ってるから当然イメージの中に最初からanacondaが入っている.
そこでDockerfile上でanacondaのpython3.6.8の環境を作ってあげて,こいつをjupyterのカーネルに追加する.
文章で書くのめんどくさくなったのでDockerfile晒す.(最初からそうしろ)
Dockerfileはこんな感じ
# jupyterのイメージ
FROM jupyter/base-notebook
LABEL Obaka Engineer
#bashを使う(なくてもよかったかも)
SHELL ["/bin/bash", "-c"]
# python3.6.8のインストール(-nのところは名前なのでpy368とかでもいい)
# python=のところでバージョンを指定してあげる
RUN conda create -n python3.6.8 python=3.6.8 anaconda
# このあとpipとかipythonとか使うんだけど,そのままだとデフォの環境パス使われるので注意
ENV pip /opt/conda/envs/python3.6.8/bin/pip
ENV ipython /opt/conda/envs/python3.6.8/bin/ipython
ENV jupyter /opt/conda/envs/python3.6.8/bin/jupyter
# name, display-nameはconda createで作成したときの名前(今回はpython3.6.8っていう名前)
RUN $ipython kernel install --user --name=python3.6.8 --display-name=python3.6.8
RUN $pip install environment_kernels
# この環境でのjupyter設定ファイルの作成(途中でなんか聞かれるのクリアするために,Yを渡しておく)
RUN echo "y" | $jupyter notebook --generate-config
# jupyterのデフォルトカーネルに作ったイメージを入れる
RUN echo "c.MultiKernelManager.default_kernel_name = python3.6.8" > ~/.jupyter/jupyter_notebook_config.py
これをbuildしてブラウザからjupyterを立ち上げる.
dockerでのポートの設定とかは他の人の記事を参考にしてくださいまし.
ちなみに僕はdocker-composeでやってます.
気が向いたら,docker-composeを使ったjupyterで一回設定したテーマを再ビルドしても初期化されないように維持するための方法を書きたいと思います.