84
109

More than 5 years have passed since last update.

ローカル環境をよごさずに Jupyter で python コードが動く環境を手軽につくる方法

Last updated at Posted at 2017-06-07

概要

  • ローカル環境をよごさずに、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

notebook

ひらきました
まだ何もコードはありません

コード実行

お好みのコードを作業ディレクトリに配置します
例として ゼロから作る 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 上にすぐ反映されます

JupyterNote からみえます

(取得してきたファイルはテキストファイルなのでそのまま実行はできません)
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
84
109
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
84
109