37
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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

前提環境

# 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

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
37
Help us understand the problem. What are the problem?