#目的・背景
- デザイナーさんがフレームワーク環境下のテンプレート等を用意に変更できる環境を用意したかった
- デザイナーさんは主にXAMPP等で環境構築していたため、プロジェクトにエンジニアがかかわり、フレームワーク等が入った場合にローカル環境の構築が非常に困難になってきた
- Dockerファイルをプロジェクト関係者へ配布することにより、デザイナー全員が共通の環境でコーディングや確認ができる!それ幸せ!!と思って導入を決意
- 当初Vagrant内へDockerを構築することも検討したが、処理速度が遅くなるのでDocker for Windowsでの構築とした
#インストールした環境
- ThinkPad X250
- Windows10 64bit
- Memory 8G
- CPU intel Core i5 5200U*2
#インストール
- 公式サイトへアクセスしDocker for Windowsをダウンロードします
- 今回はstable(安定板)をダウンロードしました
- https://docs.docker.com/docker-for-windows/
- ダウンロードしたInstallDocker.msiをダブルクリックで開くとインストーラーが起動します
- 画面の指示に従い規約への同意と起動を行います
- 起動すると、Hyper-Vが有効になっていないパソコンではHyper-Vを有効にしますか?という質問画面が出ますので、OKを押してHyper-Vを有効にします(親切!!!)
- OKを押すと少し時間がたったのちに再起動しますのでご注意下さい
- Hyper-Vは有効になったが仮想化が無効とのこと
- 表示されているURLを参考にタスクマネージャーから確認
- https://docs.docker.com/docker-for-windows/troubleshoot/#virtualization-must-be-enabled
- 確かに無効になってる、、、
- Biosへ入る方法を調査
- thinkpadの場合はこちら https://support.lenovo.com/jp/ja/solutions/ht118360
- Intel(R) Virtualization Technologyを変更(Bios設定 > Security > Virtualization )
- DisabledになっていたのでEnabledへ変更
- 保存して再起動
- 再度Windowsへログインし、タスクマネージャーから仮想化が有効になったことを確認
#インストールできているか確認
- Power Shellの起動(Git Bashが入っている方はGit BashでもOK)
- インストールできているか確認
$ docker --help
インストールできてるっぽい
- docker-composeも入っているか確認
$ docker-compose --help
うん、はいってる
#hello world
-
$ docker run hello-world
を実行してみます
正しく起動してインストールできているようです
#docker-composeを使ってnginxからローカルのファイルを表示する
- nginx.local.hostにてアクセスできるようにする(httpとhttps両方アクセスできる)
- 表示するWEBコンテンツはdocker-compose.ymlの一階層上にhtmlというフォルダ名で配置する
- nginxのドキュメントルートは/htmlとし、docker-composeにてmountする
- テストに使用したdocker-composeはこちらへ公開しています
- https://github.com/YukiMatsuo/docker-compose-test
- こちらをダウンロードして解凍して好きな場所へ移動させます
- 私はDesktopへ配置しました
- 次にPowerShellなどで配置したフォルダ内のdocker-composeフォルダへ移動します
- 移動したらdocker-composeの起動を行います
$ docker-compose up -d
- 以下のようなエラーが出てしまいました
- Docker for WindowsではCドライブの共有設定をしていないとエラーになるケースがあるようです
- Cドライブの共有設定はDocker for Windowsの設定画面よりSetting > Shared から設定できます
- Cへチェックを入れてApplyをクリックします(設定によってはユーザーのパスワードを求められます)
- Firewallで445ポートへアクセスできないといわれました
- E-SETを使用していたので、E-SETのFirewallの設定を変更、445ポートの接続をIN/OUT共に許可
- 再チャレンジ・・・・
- 変わらず接続できませんでしたので、WindowsのBase Filtering Engineを停止
- コントロールパネル > 管理ツール > サービス > Base Filtering Engine
- サービスの停止を行い、PCを再起動
- 再チャレンジ・・・成功!!
##エラー解消
- 再度
$ docker-compose up -d
を実行します - 今度は443ポートが使用中と怒られました
-
$ netstat -oan
で現在使用中のポートのPIDを調べます - NT Kernel & Systemが使用しているようなので、こちらのサイトを参考に変更します
- http://sturnus.net/movable/faq/2013/11/xamppport-80.html
- こちらのサイトを参考にSkypeも起動していたので変更しました
- 再度実行
$ docker-compose up -d
ようやく起動してくれました◎
##ブラウザでのアクセス
- ブラウザでのアクセスを設定します
- hostsファイルを編集し、ホスト名でアクセスできるようにします
- C:\Windows\System32\drivers\etc
- dockerで設定したポートはそのままlocalhost(127.0.0.1)でアクセスできるようになっているので、以下のように設定します
- ブラウザでから以下URLへアクセスします
こちらの画面が開けばインストールおよび設定は成功です
#特にはまったこと
- docker-compose.yml内で設定したファイルがディレクトリは表示されるが、ファイルがマウントされないという状況に陥った
- Docker for WindowsのShared Driverのユーザー名が誤っていたことが原因であったので、一度リセットして再度実行したら成功した
- FirewallでCドライブへ接続できないPCもあった