masalibの日記

システム開発、運用と猫の写真ブログです

Boot2DockerをWindowsマシンにインストールして、PHPを動かしてみた

概要

今はやりのdockerの何がいいのかさっぱりわからなかったので
実際に触ってみることにしました

インストール

サーバーを用意するのはめんどくさいので
Boot2Dcoker(軽量版のlinux)でおこないます
まず公式サイトからexeをインストールする


https://docs.docker.com/installation/windows/

公式のページの
installationのDocker for Windows Installerを選択する

f:id:masalib:20150220200745j:plain

インストールexeをダウンロードして起動する

f:id:masalib:20150220200746j:plain

保存するフォルダを選択する

f:id:masalib:20150220200747j:plain


Boot2Dcoker(軽量版のlinux
 → 本体なので必ずチェックする
VirtualBox
 → 本家から落としたほうがいいと思うのではずした
 msysgit (Git for Windows)
 → gitを使うのでチェックした

f:id:masalib:20150220200748j:plain

スタートメニューのフォルダをきかれたがそのままにした

f:id:masalib:20150220200750j:plain

Create a dektop icon
 →(ディスクトップにアイコンはあっても困らないのでチェックした
Add Boot2docker.exe to PATH
  → pathに追加しないと後々困りそうなので追加
Reboot Windows at the end of installation
→ インストールした後にリブートは必要ないのではずした

f:id:masalib:20150220200751j:plain

確認画面が表示されてインストールが開始される
終了するとディスクトップにアイコンができます

f:id:masalib:20150220200752j:plain

クリックするコマンドプロンプトが起動してdockerが起動されるっぽい・・・
がすぐに閉じてしまいました
VirtualBoxを起動すると下記の画面が表示されている
できている!!ので

f:id:masalib:20150220200753j:plain

起動してみると下記のエラーが表示された

Unable to boot please use a kernel appropriate for your CPU

調べてみると
http://acball.hatenablog.com/entry/2013/11/05/205712
BIOSの設定で仮想化機能が有効になっていなかった

再起動してbiosの画面で
 CPU Configuration > Intel(R) VirtualizationTechnology > [Enabled](有効)
にした

再起動後にもう1度ディスクトップのアイコンをクリックすると
f:id:masalib:20150220200754j:plain


成功しました!!

コンテナの起動と停止

実際にコンテナを実行してみました
やり方は公式サイトにのってhello-worldです

docker run hello-world

Unable to find image 'hello-world:latest' locally
511136ea3c5a: Pull complete
31cbccb51277: Pull complete
e45a5af57b00: Pull complete

作成されたっぽいのイメージ一覧とコンテナ一覧を表示してみた

#イメージ一覧
docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
hello-world         latest              e45a5af57b00        7 weeks ago         910 B

#コンテナ一覧(停止も含む)
docker ps -a
CONTAINER ID        IMAGE                COMMAND                CREATED             STATUS                     PORTS               NAMES
3eb6a563fece        hello-world:latest   "/hello"               2 minutes ago       Exited (0) 2 minutes ago                       mad_hawking
4454a3cb73b4        e6e107787eec         "apache2-foreground"   About an hour ago   Exited (0) 4 minutes ago                       sharp_turing

これだと、文字がでているだけで実感がわかなかったので
php5.5のインストールをしました

Docker Hubにある5.5-apacheのイメージを使って
php5.5をインストールする
そして、いつもの phpinfo()を出力したいと思います

#phpinfoを表示させるソースを用意
cd /Users/path/to/
sudo vi index.php
<!--?php
 phpinfo();
?-->
#php5.5のイメージから作成する
docker run -v /Users/path/to:/var/www/html -p 8085:80 -d php:5.5-apache
#作ったコンテナの/var/www/htmlが/Users/path/toとして認識されているっぽい・・・・

Unable to find image 'php:5.5-apache' locally
8771fbfe935c: Pull complete
0e30e84e9513: Pull complete
f4da5c72c7c4: Pull complete
c44336edc44a: Pull complete
f41f85636a49: Pull complete
80ed240e7a90: Pull complete
2e0595b433b7: Pull complete
1ac5dbe88bf8: Pull complete
17d576ec126e: Pull complete
653fcb6562e1: Pull complete
d89dffe5c20a: Pull complete
b0e88117edfe: Pull complete
8b31bff10801: Pull complete
4f826ea1872d: Pull complete
df63234f1c70: Pull complete
2dab4203dd9e: Pull complete
d390e082f782: Pull complete
16f234800ec1: Pull complete
429ca19ed000: Pull complete
16ab7549f854: Pull complete
e6e107787eec: Pull complete
511136ea3c5a: Already exists
php:5.5-apache: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Status: Downloaded newer image for php:5.5-apache
fffdf1f0d0dadb4dd032786e4d090642ff400ae8984aeb722f291cdfc7056795

ブラウザでアクセスすると
認識されました!!

f:id:masalib:20150220202354j:plain

便利ですね!!簡単なテストならこれでいいかも

今回作ったコンテナはテスト用なので削除します
削除するにはコンテナをストップさせて、イメージを削除するみたいです

#コンテナ一覧を表示(動いているもの)
 docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                  NAMES
fffdf1f0d0da        php:5.5-apache      "apache2-foreground"   10 minutes ago      Up 10 minutes       0.0.0.0:8085->80/tcp   adoring_pare

#上記のコンテナIDをもとに削除する

docker stop fffdf1f0d0da

#コンテナ一覧を表示(動いているもの)
 docker ps
#表示されないことを確認する

#イメージの削除するために現在のimageリストを表示する
docker image

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
php                 5.5-apache          e6e107787eec        8 hours ago         431.3 MB
hello-world         latest              e45a5af57b00        7 weeks ago         910 B

#hello-worldとphpがあることが確認できました
#この一覧で表示されているIMAGE IDをもとに削除します

#PHPの削除
 docker rmi -f e6e107787eec

Untagged: php:5.5-apache
Deleted: e6e107787eec500867e4923d10899dd51548c07724bde0a109b9a219dbbac715
Deleted: 16ab7549f854ee1e57c6b69a1502889cbe7f9549312df0d7c5e0411b17375776
Deleted: 429ca19ed0003ce02a020523cdd69ec3e91934fbfd8576ffdba1c264adb8bae0
Deleted: 16f234800ec133a04ebb254156695971b83ab5f7467a2c446edf85c2c94e6e98
Deleted: d390e082f78218a05f92cc7fdd0c3c7f80b1189eb344ac5edac7edd4032e6c5f
Deleted: 2dab4203dd9e9d1c0d0aba59612899fb8795a7568ad7c238f1cfa2304c5dde06
Deleted: df63234f1c70f8998d7f1a85868b59b5dbd9c5d92661ecf08ad2b14c689b2aba
Deleted: 4f826ea1872ddcf4eab7bab84ac9cb6682b539285e0c8a3ff96bd7a53cfc143b
Deleted: 8b31bff10801ccd59cf6089fcfbac72b2bb4c2d531dd0f7f292691dfdca47592
Deleted: b0e88117edfe9f2538b730cd95a401262aab5ef5234d0ea566dfde990e766a37
Deleted: d89dffe5c20ab578d10de2ac42264f1a04aa3950615229af96021737a911c0f6
Deleted: 653fcb6562e1b6d6ceafa77149531f399694b9000cafe0ef3fd8625a6cfb814c
Deleted: 17d576ec126ebe6921cc1b68445548d9d4e98d21232e8b8e3622df3a2dcd9986
Deleted: 1ac5dbe88bf8c275e2442bca8e129453cad88b06f901e478781c0b8baff1a342
Deleted: 2e0595b433b724bcbc5d020faa3bf1127c8ffbb43e47ab457ea6cfcfb39a1a54
Deleted: 80ed240e7a90b7db41b4e6ebda6f92a8b5f41ce361be8c774ad7a983c237e69f
Deleted: f41f85636a49f9e76ea0b51306fbadf63d5bd0c6825313aaccc9199b9d491a9f
Deleted: c44336edc44a6f6912846ba9480a011e3bee967155587d75db9e9b62e5632721
Deleted: f4da5c72c7c46dcc3907d8c56295fa4712ad6ceb2215889f12b148a14ae5db9e
Deleted: 0e30e84e9513cb3d9d991389adfb77ac6afc9d75a5234e3d61af2f080c75d0ce
Deleted: 8771fbfe935cde12b40418e029cdb68adff76d740eddb72fc6c811b1b4c16a3e

#hello worldの削除
docker rmi -f e45a5af57b00

Untagged: hello-world:latest
Deleted: e45a5af57b00862e5ef5782a9925979a02ba2b12dff832fd0991335f4a11e5c5
Deleted: 31cbccb51277105ba3ae35ce33c22b69c9e3f1002e76e4c736a2e8ebff9d7b5d
Deleted: 511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158

#削除されているのか一覧で表示してみました
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

感想

vmサーバーに比べて、ファイルサイズが小さいですね
phpの環境を用意するまでの時間が早いね(ネットワークに依存が・・・)
・実際に開発で使うにはソースの展開方法など検討しないといけない
(うちはgitを使っていないので・・・・)
今後はイメージの作り方など確認していきたい

参考サイト

Windowsのインストールで参考にしました


phpの部分はこちらを参考にしました


dockerのコマンド一覧で参考にしまし