Python
docker
Jupyter
docker-for-windows

Docker for WindowsでJupyter(公式よりは軽く)

昨日はXした

  • コンソールさわるの飽きた
  • Windows側でコード書きたい
  • デーモンとして動いてて欲しい

それjupyterで

  • え、それWindowsとか関係な(ry
  • 昨日はPython公式が700MBでがっかりしたけど
  • 今日はJupyter公式が700MBで絶望した

できた

  • 注意:セキュリティ無視、ポート開放に気を付けてください
  • 前提の環境は昨日Xしたのと同じ
    • Docker for Windows のみ

コンセプト

  • Ubuntu(ベース80MBくらい?)
  • Python3(標準ではいってる)
  • Chainer v4.0.0(stableなやつ)
  • 340MBくらいになった
    • もっとまじめに小さくするならtiniとか入れるのかな
    • あとUbuntuでなくAlpineにするか

成果物

  • つぎの3ファイルを同じフォルダにおいてjupyter_up.batを叩く
docker-compose.yml
version: '3'
services:
  jupyter:
    build: .
    volumes:
      - C:\data:/data
    ports:
      - "8888:8888"
Dockerfile
FROM ubuntu

RUN apt-get update -y \
    && apt-get install -yq --no-install-recommends \
    python3-setuptools \
    python3-pip \
    && rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* \
    && python3 -m pip install --upgrade pip \
    && python3 -m pip install --no-cache-dir wheel jupyter matplotlib numpy==1.13 chainer==4.0.0

EXPOSE 8888

CMD ["jupyter", "notebook", "--allow-root", "--no-browser", "--NotebookApp.token=''", "--ip=0.0.0.0"]
jupyter_up.bat
pushd %~dp0
docker-compose up -d --build
popd
timeout 1
start http://localhost:8888/

お約束のMNIST

  • Windows側でC:/data以下にtrain_mnist.pyを取得しておく
  • ブラウザでdata以下のフォルダを辿りtrain_mnist.pyがあるフォルダに移動する
  • JupyterのメニューNew -> Python3でnotebookをつくる
notebook_Codeセル
%run -i train_mnist.py
notebook_Markdownセル_Code実行後に確認用
- accuracy
<img src="result/accuracy.png">
- loss
<img src="result/loss.png">
  • うえのをipynbに保存したらこう
train_mnist.ipynb
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "%run -i train_mnist.py"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- accuracy\n",
    "<img src=\"result/accuracy.png\">\n",
    "- loss\n",
    "<img src=\"result/loss.png\">"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}

おわり