Study‎ > ‎ML with Python‎ > ‎ImPACT-SS2017‎ > ‎

開発環境の準備 - Dockerでの開発環境構築


Docker とは

はじめに,Pythonの開発環境を整えるため,Docker をインストールします.


Docker は,仮想環境を動かすためのアプリケーションです.
Docker を使うと,異なる環境・OS上でも同じ開発環境を用意することができます.
「コンテナ型」と呼ばれる仮想化環境を用いており,VMwareなどの従来型の
仮想環境よりも独立・軽量に動作する仮想環境...らしいです.
(後に説明する Docker Toolbox では結局,従来型の
   仮想環境 VirtualBox の上にコンテナが走ります。。)
単純に言うと,ただのプロセスのように,仮想環境を走らせることができます.
詳しいことは,以下のページなどを参照してください.


また,必要なライブラリを既にインストールしたイメージを使えば,
自分でライブラリをインストールする必要はありません.
公式に配布されているイメージで,例えば
    ・Caffe
    ・Tensorflow
    ・AWS (EC2)
    ・Anaconda/Miniconda
などが利用可能です.
自分で作成したイメージを Docker Hub で共有することもできます.


このチュートリアルで Docker を使う目的は,みなさんに
    ・お手軽で
    ・使いやすく
    ・統一された
Pythonの開発環境を提供することにあります.


Docker をインストール

Docker をインストールします.
以下,Windows, Mac, Linux (Ubuntu) の場合について説明します.

Windows の場合

Windows の場合には,以下の2つの選択肢があります.
 
   ・Docker for Windows (Windows 10 Pro/Enterprise)
      Hyper-V の有効化が必要だが,ものすごく面倒くさい.

   ・Docker Toolbox for Windows (Windows 7 以上?のどれでも)  ← オススメ!

ここでは,どの Windows のバージョンでも後者の
Docker Toolbox をインストールするものとして進めます.


Docker Toolbox for Windows を以下からダウンロードして,
実行してください.
途中で,以下のような画面が出てきますが,
「Install VirtualBox with NDIS5 driver[default NDIS6]」に
チェックを入れるのを忘れないでください.


インストールが完了すると,デスクトップに
2つのショートカットが置かれます.
この「Docker Quickstart Terminal」を起動して,
クジラさんが出てきたらOKです.

このターミナル上で,
$       docker info        
を打ち込んで実行し,情報が表示されればOKです.


※ エラーが出た場合
色々な原因があるようです.
    ・「Install VirtualBox with NDIS5 driver[default NDIS6]」のチェック忘れ
    ・VirtualBox の問題

Mac の場合

Mac OS X の場合には,Yosemite 以上は
 
    ・Docker Community Edition for Mac

それ以前のバージョンは,
    ・Docker Toolbox

を利用してください.
以下,前者の Docker for Mac について説明します.


Docker for Mac は,普通のアプリケーションと同じようにインストールできます.
ダウンロードして,画面上の指示にしたがってインストールしてください.


インストールしたら,Docker をアプリケーション一覧から起動してください.


起動が成功すると,メニューバーにクジラさんのアイコンが表示されます.


ターミナルを起動して,
$       docker info        
を打ち込んで実行し,情報が表示されればOKです.


※ 参考
   ・Install Docker for Mac
   ・Docker for Macをインストールしてみた

Linux (Ubuntu) の場合

Linux の場合は,ディストリビューションごとにインストラクションが用意されています.
Windows や Mac のようにインストーラは用意されていないので,
apt-get などで手動でインストールする必要があります.


Ubuntu のインストラクションは以下です.
日本語では例えば,以下のページなどを参考にしてください.


ユーザーを docker グループに追加することで,docker コマンドに
sudo を付ける必要が無くなります.


ターミナルで
$       docker info        
を打ち込んで実行し,情報が表示されればOKです.


チュートリアル用イメージを pull して起動

Docker をインストールできたら,チュートリアルで使用する
Docker イメージを pull します.
ターミナルで
$       docker pull ryuhmd/mininpb        
を打ち込んで実行すると,ダウンロードが始まります.
1GB程度あるため,ダウンロードに少し時間がかかります.
一度ダウンロードしたイメージは,ローカルに保存されているので,
次回 Docker を起動したときに再びダウンロードする必要はありません.


ダウンロードが終わったら,イメージを起動します.
ターミナルで
$       docker run -it -p 8888:8888 ryuhmd/mininpb        
を打ち込んで実行してください.
これで,イメージのコンテナが起動します.


Jupyter notebook を起動

チュートリアルでは,Jupyter notebook を使います.
Jupyter notebook は,Webブラウザ上でノートブックというページに
Python のスクリプトを記述し,実行し,結果を表示させることのできる
アプリケーションです.
さきほどイメージを起動させたとき,Jupyter notebook が
自動的に起動するように設定されています.


ChromeなどのWebブラウザで,Jupyter notebook を
表示させてみましょう.(Chrome推奨です.)
WebブラウザのURLに,

      (Mac/Linuxの場合)

または,

    ・(例) http://192.168.99.100:8888/
      (Windows で Docker Toolbox 使用の場合のデフォルト)

と入力し,移動してください.
※ 後者のアドレスの「192.168.99.100」は,
   Docker Machine のIPアドレスです.
   デフォルトでは「192.168.99.100」です.
   確認するには,Docker Terminal 上で
   $       docker-machine ip        
   と入力して実行すると,表示されます.
   Docker Toolbox を起動したときのクジラさんの
   近くにも表示されます.



以下のような画面が表示されればOKです.




Jupyter notebook を使ってみる

Jupyter notebook はWebブラウザ上で動作する Python の
統合開発環境(IDE)のようなアプリケーションです.
プログラムの記述・実行・結果の表示を,ノートブックという
形式のファイルで行います.


動作確認がてら,簡単なプログラムを書いてみましょう.
Jupyter notebook のホーム画面で,「New」タブをクリックし,
次に「Python 2」をクリックします.

以下のような画面が表示されます.


「In [ ]: 」と表示されている欄に,プログラムを打ち込みます.(「""」の中は何でも大丈夫です.)
In [ ]:       print "Hello NPB."        

打ち込んだら,「Shift + Enter」を打ちます.


すると,実行した結果が表示されます.


(補足) 作業内容の保存について

さきほど Docker のイメージを起動したとき,
「コンテナ」というものが作成されています.
ターミナルで
$       docker ps        
を打ち込んで実行してみてください.
このコマンドで,起動中のコンテナ一覧が表示されます.
起動していないコンテナも全て表示するには,
$       docker ps -a        
と -a オプションを付けます.


起動したコンテナには,自動的にランダムで名前が割り振られます.
例) condescending_noether, musing_rosalind, jolly_mahavira, ...
コンテナで作業した内容は保存されています.


例えばPCを再起動したときなど,Docker machine が終了したとき,
コンテナは停止されます.
停止したコンテナをもう一度起動するには,ターミナルで
$       docker start [コンテナの名前]       
と打ち込んで実行してください.
書いたスクリプトなどが保存されているはずです.


コンテナを削除するには,まずターミナルで
$       docker stop [コンテナの名前]       
としてコンテナを停止させます.
次に,
$       docker rm [コンテナの名前]       
で削除できます.
コンテナを一括で全削除するには,
$       docker rm $(docker ps -aq)       
で削除できます.


Jupyter でプログラミングしたノートブックを,
ローカルに保存することもできます.
ノートブックの画面で,「File -> Download as」で
保存できます.
コンテナを削除すると作業内容は全て消えてしまうため,
大事なノートブックなどはローカルに保存することを推奨します.


(参考)
    ・Dockerコンテナの作成、起動〜停止まで
    ・[docker] コンテナを一括削除


Comments