LoginSignup
1
3

More than 5 years have passed since last update.

dockerfileでjupyterのpythonバージョンを指定する

Posted at

はじめに

はじめて記事を書くので見にくくても許してくださいまし...

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でやってます.

コンソールを開くと,デフォルトのpython3の他に,先程設定した名前のpython3.6.8が入っている(はずです.)
Screenshot from 2019-05-11 03-37-33.png

気が向いたら,docker-composeを使ったjupyterで一回設定したテーマを再ビルドしても初期化されないように維持するための方法を書きたいと思います.

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3