Dockerで開発環境を構築する。(Pythonによるスクレイピング&機械学習テクニック)
今回は、 Pythonによるスクレイピング&機械学習開発テクニック増補改訂 Scrapy、BeautifulSoup、scik [ クジラ飛行机 ]のAppendixを参考にさせていただきながら、Dockerで機械学習の開発環境を作成してみました。
順を追って振り返ってみたいと思います。
Dockerで開発環境を構築する。
1.Dockerとは何か
Dockerは、開発環境のような、仮想環境を作成、配布、実行するためのプラットフォームです。VirturalBoxやVMwareのようにゲストOSを構築し、その上でミドルウェアなどを動かす仮想マシンとは異なり、DockerはホストOSを利用しつつ、プロセスやユーザを別にする事であたかも別のマシンが動いているように動作します。このため、軽量で高速に起動停止ができます。(下図参照)
Dockerを使うと何が嬉しいかと言うと、誰かが作った環境環境や、自分が過去に作った開発環境を、OSやアプリケーションの構築を実施する事なく、簡単に構築できる事です。
2.Docker Desktopをインストールする。(Mac版)
まずは、Mac版でDocker Desktopをインストールする場合の手順です。
Windows10 homeなど、Docker Desktopが対応していないOSの場合は、「3.Docker Toolboxをインストールする。(Windows10 home版)」にお進みください。
まず、以下のURLのWebサイトで「Get Started」をクリックします。
(ちょくちょくサイトのデザインが変わるので、表示位置が違う場合もありますが、ご容赦のほど。)
次のページで、自身の物理マシンのOSを選択してインストーラをダウンロードします。
ダウンロードが完了したら、インストールを実行します。
ダウンロードしたDocker.dmgをダブルクリックします。
インストール画面が表示されるので、「Docker.app」のアイコンを「Applications」のアイコンにドラッグ&ドロップします。
プログレスバーに進捗が表示されるので、しばらく待ちます。
インストールが完了したら、「Applications」フォルダ内の「Docker.app」を実行します。
4. Docker Toolboxをインストールする。(Windows版)
まず、以下のURLのWebサイトでDocker Toolboxの最新版を確認します。
少し下にスクロールして、自身の物理マシンのOSを選択してインストーラをダウンロードします。(Windowsの場合は、~.exe)
ダウンロードが完了したらインストーラをダブルクリックします。
インストール画面が表示され、DockerToolboxの改善にデータを提供するかどうかのチェックを確認して、「Next >」をクリックします。
インストール先確認画面が表示されるので、インストールするフォルダを指定して「Next >」をクリックします。変更する必要がなければ、そのまま「Next >」をクリックします。
必要に応じ、一緒にインストールするコンポーネントを選択して「Next >」をクリックします。
インストール後にデスクトップにショートカットを作ったり、Pathに追加したり、追加で実施するタスクを選択し、「Next >」をクリックします。
最後に、これまで選択してきた内容を確認し、問題なければ「Install」をクリックします。
プログレスバーが表示されるので、インストール完了を待ちます。
インストールが完了したら、「Finish」をクリックしてインストール完了です。
インストールされたら、「Docker Quickstart Terminal」を実行します。
Boot2Dockerを導入した場合は、最新化の処理が走る場合があります。
しばらく待つと、Docker Toolboxが立ち上がります。(クジラのアスキーアートがいい味をだしています。)
5. Dockerの検証
Docker DesktopまたはDocker Toolboxが起動したら以下のコマンドを実行します。
docker run hello-world
正しく実行できると「Hello from Docker!」と表示されます。
これで、検証が完了です。
(以降は、Docker Toolbox(Windows版)での例になります。)
6.Python + Anaconda のイメージをダウンロード
今後、機械学習やスクレイピングにつかうためにPythonとAnacondaを導入した開発環境を構築します。
まずは、以下のコマンドを実行して、Anacondaを最小限の構成としたminicondaを導入します。
docker pull continuumio/miniconda3
しばらく、待つとダウンロードが完了します。
ダウンロードが完了したら、以下のコマンドを実行してminicondaが導入されたDockerコンテナを立ち上げて、コンテナ上でbashを起動します。
docker run -i -t continuumio/miniconda3 /bin/bash
bashを起動させたら、あとは、コマンドラインでPythonが実行できるようになります。
試しに以下のコマンドを実行してみます。
Python3 -c "print(3+4)"
Dockerを終了させるには、[exit]で終了できます。
Dockerを使ってみる。
1.コンテナの状態を保存する。
先ほどのコンテナを起動して、状態を更新したら、そのコンテナに名前を付けて保存することができます。
コンテナを終了させた後に、以下のコマンドを実行すると、そのコンテナの情報が表示されます。
docker ps -a
ここに表示される「CONTAINER ID」が、コンテナの状態を保存するときに必要になります。コンテナを保存するコマンドは以下の通りです。
docker commit コンテナID リポジトリ名:タグ名
上記の「61d70537386b」のコンテナを、レポジトリ名を「machinelearn」、タグ名を「init」で保存する場合、以下のコマンドとなります。
docker commit 61d70537386b machinelearn:init
2.保存したコンテナを確認する。
保存したコンテナは以下のコマンドで確認できます。
docker images
保存されているすべてのコンテナを確認できるので、検証時にダウンロードした[hellow-world]や、導入した[continuumio/miniconda3]も表示されます。
3.保存したコンテナを起動する。
保存したコンテナを起動する時は、以下のコマンドで起動できます。
docker run -i -t リポジトリ名:タグ名 実行するコマンド
例えば、以下の通りで先ほど保存したコンテナでbashが使えます。
docker run -i -t machinelearn:init /bin/bash
4.コンテナから一時的に抜ける。
実行中のコンテナを終了させずに一時的に抜けたり、再開したりすることができます。一時的に抜けるには、以下の操作をします。
[Ctrl]+[p]キー を押して次に [Ctrl]+[q]キー を押す
一時的に抜けている間に以下のコマンドを実行することで、現在実行中のコンテナを確認することができます。
docker ps
一時的に抜けているコンテナを再開するには以下のコマンドを実行します。
コンテナIDは、先ほどの[docker ps]で確認します。
docker attach コンテナID
同じように[exit]で終了させたコンテナも以下のように実行することで再開できます。
docker start コンテナID
docker attach コンテナID
5.ホストOSからコンテナ上のホームディレクトリをマウントする。
コンテナ上のファイルを編集する際に、使い慣れたホストOSのテキストエディタを使用できるように、ホストOSからコンテナ上のホームディレクトリをマウントすることができます。
docker run -i -t -v ホストOS上のパス:コンテナ上のパス リポジトリ名:タグ名 実行するコマンド
例えば、以下のように実行することができます。(XXXは、Windowsのユーザ名)
docker run -i -t -v /c/Users/XXX/tmp:/var/tmp machinelearn:init /bin/bash
上記の通り実行すると、ホストOS(Windows)上の/c/Users/XXX/tmpフォルダにコンテナ上の/var/tmpフォルダがマウントされ、同じファイルが編集できます。(図30、図31のように、ホストOSからも、コンテナからも同じ「test.txt」ファイルが見えています。)
以上で、Dockerのインストールと、基本的な使い方が理解できました。
これで、開発環境の準備が整ったので、Pythonによるスクレイピング&機械学習開発テクニック増補改訂 Scrapy、BeautifulSoup、scik [ クジラ飛行机 ]で、スクレイピングと機械学習開発に取り組んでいきたいと思います。
【過去記事】
2019年8月31日(土)にE資格を受験して、合格しました!
E資格対策として勉強の進め方や、参考書などをまとめました。
これから受験される方がいらっしゃいましたらご参考まで。
2019年3月9日(土)にG検定を受験し、見事合格できました!
受験の体験記や勉強法などを別のブログにまとめました。
これから受験される方がいらっしゃいましたらご参考まで。
【E資格対策に使った参考書】
- 人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書) [ 松尾豊 ]
- 深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト (EXAMPRESS) [ 一般社団法人日本ディープラーニング協会 ]
- 徹底攻略ディープラーニングG検定ジェネラリスト問題集 [ 明松真司 ]
- 実践機械学習システム [ ウィリ・リチャート ]
- アルゴリズムクイックリファレンス 第2版 [ George T. Heineman ]
- 深層学習【電子書籍】[ 岩澤 有祐 ]
- 入門Python 3 [ ビル・ルバノビック ]
- PythonによるWebスクレイピング 第2版 [ Ryan Mitchell ]
- Think Stats第2版 プログラマのための統計入門 [ アレン・B.ダウニー ]
- 集合知プログラミング [ トビー・セガラン ]
- ITエンジニアのための機械学習理論入門 [ 中井悦司 ]