Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

目的・背景

  • デザイナーさんがフレームワーク環境下のテンプレート等を用意に変更できる環境を用意したかった
  • デザイナーさんは主に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もあった
fullspeed
独自のアドテクノロジーにより、DSP、ソーシャルメディア、SEO、リスティング、アフィリエイトを展開
https://www.fullspeed.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away