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

  • 2
    いいね
  • 0
    コメント

目的・背景

  • デザイナーさんがフレームワーク環境下のテンプレート等を用意に変更できる環境を用意したかった
  • デザイナーさんは主にXAMPP等で環境構築していたため、プロジェクトにエンジニアがかかわり、フレームワーク等が入った場合にローカル環境の構築が非常に困難になってきた
  • Dockerファイルをプロジェクト関係者へ配布することにより、デザイナー全員が共通の環境でコーディングや確認ができる!それ幸せ!!と思って導入を決意
  • 当初Vagrant内へDockerを構築することも検討したが、処理速度が遅くなるのでDocker for Windowsでの構築とした

インストールした環境

  • ThinkPad X250
  • Windows10 64bit
  • Memory 8G
  • CPU intel Core i5 5200U*2

インストール

image

  • ダウンロードしたInstallDocker.msiをダブルクリックで開くとインストーラーが起動します
  • 画面の指示に従い規約への同意と起動を行います

image
image
image

  • 起動すると、Hyper-Vが有効になっていないパソコンではHyper-Vを有効にしますか?という質問画面が出ますので、OKを押してHyper-Vを有効にします(親切!!!)
  • OKを押すと少し時間がたったのちに再起動しますのでご注意下さい

image

BIOSの設定でエラー

image

image

  • Biosへ入る方法を調査
  • thinkpadの場合はこちら https://support.lenovo.com/jp/ja/solutions/ht118360
  • Intel(R) Virtualization Technologyを変更(Bios設定 > Security > Virtualization )
    • DisabledになっていたのでEnabledへ変更
    • 保存して再起動
  • 再度Windowsへログインし、タスクマネージャーから仮想化が有効になったことを確認

image

インストールできているか確認

  • Power Shellの起動(Git Bashが入っている方はGit BashでもOK)
  • インストールできているか確認
  • $ docker --help

image

インストールできてるっぽい
* docker-composeも入っているか確認
* $ docker-compose --help

image

うん、はいってる

hello world

  • $ docker run hello-worldを実行してみます

image

正しく起動してインストールできているようです

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
  • こちらをダウンロードして解凍して好きな場所へ移動させます

image

  • 私はDesktopへ配置しました
  • 次にPowerShellなどで配置したフォルダ内のdocker-composeフォルダへ移動します

image

  • 移動したらdocker-composeの起動を行います
  • $ docker-compose up -d
  • 以下のようなエラーが出てしまいました

image

  • Docker for WindowsではCドライブの共有設定をしていないとエラーになるケースがあるようです
  • Cドライブの共有設定はDocker for Windowsの設定画面よりSetting > Shared から設定できます

image

  • Cへチェックを入れてApplyをクリックします(設定によってはユーザーのパスワードを求められます)

エラー発生(環境によります)

image
* 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

image

ようやく起動してくれました◎

ブラウザでのアクセス

  • ブラウザでのアクセスを設定します
  • hostsファイルを編集し、ホスト名でアクセスできるようにします
  • C:\Windows\System32\drivers\etc
  • dockerで設定したポートはそのままlocalhost(127.0.0.1)でアクセスできるようになっているので、以下のように設定します

image

image

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

特にはまったこと

  • docker-compose.yml内で設定したファイルがディレクトリは表示されるが、ファイルがマウントされないという状況に陥った
  • Docker for WindowsのShared Driverのユーザー名が誤っていたことが原因であったので、一度リセットして再度実行したら成功した
  • FirewallでCドライブへ接続できないPCもあった