はじめに
連休中にPythonやPythonライブラリを勉強したのですが、その時にサクッとDockerで勉強用の環境を構築できたので、その時のメモを共有します。
環境構築が苦手だったり、自分のPC内を汚したくない人にとって役立つ記事になればと思います。
忙しい人向けまとめ
前提として、自分のPCにDocker環境はあるものとしますが、任意のディレクトリ下で下記3つのことをすれば環境が作れます。
1. $ docker pull jupyter/scipy-notebook
2. $ docker run -v `pwd`:/home/jovyan/work -p 10000:8888 --name jupyter jupyter/scipy-notebook
3. localhost:10000にアクセス + トークン認証
Jupyter Notebookを使えるようにするまでの流れ
Jupyter Notebookのイメージを取得
今回は個人学習用程度のものを想定しているので、jupyter/scipy-notebookというイメージを使っていきます。
$ docker pull jupyter/scipy-notebook
$ docker images # イメージがあることを確認
コンテナの起動
jupyterというコンテナ名を付けて10000番ポートでコンテナを作成&起動します。
この時、コンテナの中にカレントディレクトリにあるファイルをマウントしておくと便利です。(とても地味ですがこの記事での一番のポイントです。)
$ cd <任意のディレクトリ>
$ docker run -v `pwd`:/home/jovyan/work -p 10000:8888 --name jupyter jupyter/scipy-notebook
起動時、コンソールの最後に以下のようなログが出てくるので、<トークン>の部分をコピーしておいてください。
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://7dae9a493ca7:8888/?token=<トークン>
また、コンテナの起動を確認しておきます。
以下のように、STATUS部分が「UP」になっていればOKです。(起動できてない場合は「Excited」となります)
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fe7724bbe7f4 jupyter/scipy-notebook "tini -g -- start-no…" About an hour ago Up About an hour 0.0.0.0:10000->8888/tcp jupyter
ブラウザでJupyter Notebookを開く
localhost:10000
にアクセスします。
ここで、ブラウザに現れるPassword
の部分に4.で取得したトークンを入れると下図のようにJupyter Notebookにアクセスできるようになります。
そしてちゃんと指定したパスにあったデータがマウントされてます!
ここには載せませんが、もちろん、新規ファイルを作成したり、ファイルを編集してもローカルのデータに反映されます。
2回目以降の起動方法について
docker start jupyter
でコンテナを起動し、上記と同様にブラウザでlocalhost:10000にアクセスします。
2回目以降はトークンを記憶してくれているため基本的にトークン不要ですが、要求された場合はコンテナに入ってログに出力すればOKです。
# コンテナ起動
$ docker start jupyter
jupyter
# 状態を確認、STATUS: UPなら起動成功
$ docker ps
# もしトークンを確認された場合はコンテナに入ってログを出力する
$ docker exec -it jupyter bash
$ jupyter notebook list
Currently running servers:
http://localhost:8888/?token=<トークン>
まとめ
以下の3ステップで簡単にJupyter Notebook環境を構築しました。
とても簡単なのでJupyterで勉強したい時は是非ご参考ください!
1. $ docker pull jupyter/scipy-notebook
2. $ docker run -v `pwd`:/home/jovyan/work -p 10000:8888 --name jupyter jupyter/scipy-notebook
3. localhost:10000にアクセス + トークン認証