概要
-
ローカル環境をよごさずに、python コードが動かせる状態 をつくります
-
所要時間 5分 くらい
-
記事では macbook 上での構築を想定していますが、サーバで起動させブラウザアクセスする場合は
localhost
を任意のサーバに読み替えて実行してください(かつブラウザアクセス可能なポートを設定します)
Docker のインストール
-
Get Docker for mac
をクリックしてDocker.dmg
を取得します -
Docker.dmg
を起動してmac上にインストールします
Anaconda の docker image でコンテナ起動
Terminal を起動
必要なdocker image をダウンロード
お好みの docker image を取得します、ここでは anaconda3 が入るイメージを使います
https://hub.docker.com/r/continuumio/anaconda3/~/dockerfile/
$ docker pull continuumio/anaconda3
Using default tag: latest
latest: Pulling from continuumio/anaconda3
8ad8b3f87b37: Pull complete
e8b8d30f7444: Pull complete
...
Status: Downloaded newer image for continuumio/anaconda3:latest
jupyter notebook が参照する作業ディレクトリを作成
$ mkdir -p $HOME/jupyter-notebook/notebooks
Docker コンテナ起動
$ docker run \
-d -i -t \
-p 8888:8888 \
--name jupyter-notebook \
-v $HOME/jupyter-notebook/notebooks:/opt/notebooks \
continuumio/anaconda3 \
/bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --no-browser --allow-root"
-p 8888:xxxx
JupyterNotebookのデフォルト 8888 で都合の悪い場合は、別のポート xxxx
に置き換えてください
コンテナの状態確認
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
96f9690341ae continuumio/anaconda3 "/usr/bin/tini -- ..." 6 seconds ago Up 5 seconds 0.0.0.0:8888->8888/tcp jupyter-notebook
JupyterNotebook をブラウザから開く
コンテナ上で起動している JupyterNotebook のURLを取得
docker logs
コマンドで取得したログに、JupyterNotebook にアクセスするためのトークンつきURLが記録されているので、それを取得します
$ docker logs jupyter-notebook
Fetching package metadata .........
Solving package specifications: .
...
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://localhost:8888/?token=a5b5211197b4d9b2f8f93ee73c085786039486369c5bcbec <<<<---- here
アクセスURLをブラウザで開く
取得したURLをブラウザで開きます(ポート変更してる場合は指定の port に読み替えます)
http://localhost:8888/?token=a5b5211197b4d9b2f8f93ee73c085786039486369c5bcbec
ひらきました
まだ何もコードはありません
コード実行
お好みのコードを作業ディレクトリに配置します
例として ゼロから作る Deep Learning のリポジトリ を git clone
してきます
$ cd $HOME/jupyter-notebook/notebooks
$ git clone https://github.com/oreilly-japan/deep-learning-from-scratch.git
Cloning into 'deep-learning-from-scratch'...
remote: Counting objects: 322, done.
remote: Total 322 (delta 0), reused 0 (delta 0), pack-reused 322
Receiving objects: 100% (322/322), 4.87 MiB | 944.00 KiB/s, done.
Resolving deltas: 100% (160/160), done.
Checking connectivity... done.
JupyterNotebook 上にすぐ反映されます
(取得してきたファイルはテキストファイルなのでそのまま実行はできません)
Jupyter 画面上の New
プルダウンから Python3
などの実行ファイルを作成して、実行したいコードを切り貼りするなどして自由にコードを動かしてください
以上です! :D
Docker コンテナがいらなくなったら
docker stop
, docker rm
してコンテナを破棄しましょう :)
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
96f9690341ae continuumio/anaconda3 "/usr/bin/tini -- ..." 6 seconds ago Up 5 seconds 0.0.0.0:8888->8888/tcp jupyter-notebook
$ docker stop 96f9690341ae
$ docker rm 96f9690341ae