Edited at

Docker for Windows をインストールしてdocker-composeを動かすまで(Windows10)

More than 1 year has passed since last update.


目的・背景


  • デザイナーさんがフレームワーク環境下のテンプレート等を用意に変更できる環境を用意したかった

  • デザイナーさんは主にXAMPP等で環境構築していたため、プロジェクトにエンジニアがかかわり、フレームワーク等が入った場合にローカル環境の構築が非常に困難になってきた

  • Dockerファイルをプロジェクト関係者へ配布することにより、デザイナー全員が共通の環境でコーディングや確認ができる!それ幸せ!!と思って導入を決意

  • 当初Vagrant内へDockerを構築することも検討したが、処理速度が遅くなるのでDocker for Windowsでの構築とした


インストールした環境


  • ThinkPad X250

  • Windows10 64bit

  • Memory 8G

  • CPU intel Core i5 5200U*2


インストール


  • ダウンロードしたInstallDocker.msiをダブルクリックで開くとインストーラーが起動します

  • 画面の指示に従い規約への同意と起動を行います






  • 起動すると、Hyper-Vが有効になっていないパソコンではHyper-Vを有効にしますか?という質問画面が出ますので、OKを押してHyper-Vを有効にします(親切!!!)

  • OKを押すと少し時間がたったのちに再起動しますのでご注意下さい


BIOSの設定でエラー


  • 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)でアクセスできるようになっているので、以下のように設定します

こちらの画面が開けばインストールおよび設定は成功です


特にはまったこと


  • docker-compose.yml内で設定したファイルがディレクトリは表示されるが、ファイルがマウントされないという状況に陥った

  • Docker for WindowsのShared Driverのユーザー名が誤っていたことが原因であったので、一度リセットして再度実行したら成功した

  • FirewallでCドライブへ接続できないPCもあった