Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

  • ローカル環境をよごさずに、python コードが動かせる状態 をつくります
  • 所要時間 5分 くらい

  • 記事では macbook 上での構築を想定していますが、サーバで起動させブラウザアクセスする場合は localhost を任意のサーバに読み替えて実行してください(かつブラウザアクセス可能なポートを設定します)

Docker のインストール

https://docs.docker.com/docker-for-mac/install/#download-docker-for-mac

  • 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
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away