Windows10 × Docker for Windows トラブルシューティング

More than 1 year has passed since last update.

いくつか失敗するポイントがあったので、問題発生~解決の都度追記していきます。


前提環境

#
Type
Software

1
ClientOS
Microsoft Windows 10 Enterprise 10.0.14393 ビルド 14393

2
Container Host
Docker for Windows


トラブルシューティング


問題.1 メモリ不足でDockerが起動しない

■現象

Dockerを起動するとエラーが発生する。

image

タスクアイコンも真っ赤。

image

■原因

エラーの内容通り、設定しているメモリが確保できていない。

■対処方法


  • タスクアイコンで右クリック。

  • コンテキストメニューから Settings... を選択。

image



  • Advanced を選択。

  • Memory: 1024 MB に設定。


  • Apply ボタンを選択。

image



  • Docker is running となればOK。

image


問題.2 ホストとコンテナのボリューム共有に失敗する

■現象


  • タスクアイコンで右クリック。

  • コンテキストメニューから Settings... を選択。

image



  • Shared Drives を選択。

  • C Drive のチェックをON。


  • Apply ボタンを選択。

image

エラーが発生する。

image

■原因

どうやら、使用しているセキュリティソフト Kaspersky(個人向け) が、ブロックしているとのこと。

■対処方法


  • タスクアイコンで右クリック。

  • コンテキストメニューから 設定 を選択。

image


  • 設定ボタン(歯車アイコン)を選択。

image



  • プロテクション を選択。


  • ファイアウォール を選択。

image



  • ネットワーク を選択。

image



  • DockerNAT を選択。


  • 編集 ボタンを選択。

image


  • ネットワーク種別: 許可するネットワーク を選択。


  • 保存 ボタンを選択。

image


  • Dockerの設定をリトライしたところ、エラーは発生せずに完了しました。


  • Docker is running となればOK。

image


実際にファイル共有できているのか確認

Nginx のコンテナを動かして、アクセスログを共有してみます。


powershell

# docker-compose 試運転用のリポジトリを git clone 

git clone https://github.com/busonx/pilot-docker-compose.git
cd .\pilot-docker-compose\v2\nginx\
docker-compose up -d

image


  • 正常に動作しましたので、コンテナを停止します。


powershell

docker-compose stop



  • アクセスログが残ったのか確認します。(私が使用しているのは Visual Studio Code なので、 code コマンドでファイルを開いています。)


powershell

code .\datastore\webserver\nginx\access.log



  • アクセスログファイル access.log があること、

  • アクセスログが残っていることが確認できました。


access.log

172.18.0.1 - - [02/Apr/2017:03:19:37 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "-"



問題.3 コンテナを取得しようとするとタイムアウト

■現象

docker-compose でコンテナを立ち上げようとすると、タイムアウトになる。


powershell

PS C:\> docker-compose up -d



result

Building pg_db

Step 1/1 : FROM postgres:9.6.2
ERROR: Service 'pg_db' failed to build: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

■原因

プロキシの設定漏れ。(会社あるあるですね :sweat:

■対処方法


  • タスクアイコンで右クリック。

  • コンテキストメニューから Settings... を選択。

image



  • Proxies を選択。


  • Manual proxy configuration を選択。

  • Web Server (HTTP): http://proxyserver.jp:8080 を設定。



    • proxyserver.jp: プロキシサーバ名


    • 8080: プロキシのポート



  • Bypass for these hosts and domains: (use commas to separate entries): localhost, 127.0.0.1 を設定。


    • 除外設定です。適宜設定してください。




  • Apply ボタンを選択。

image