いくつか失敗するポイントがあったので、問題発生~解決の都度追記していきます。
前提環境
| # | Type | Software |
|---|---|---|
| 1 | ClientOS | Microsoft Windows 10 Enterprise 10.0.14393 ビルド 14393 |
| 2 | Container Host | Docker for Windows |
トラブルシューティング
問題.1 メモリ不足でDockerが起動しない
■現象
Dockerを起動するとエラーが発生する。
タスクアイコンも真っ赤。
■原因
エラーの内容通り、設定しているメモリが確保できていない。
■対処方法
- タスクアイコンで右クリック。
- コンテキストメニューから
Settings...を選択。
-
Advancedを選択。 - Memory:
1024MB に設定。 -
Applyボタンを選択。
-
Docker is runningとなればOK。
問題.2 ホストとコンテナのボリューム共有に失敗する
■現象
- タスクアイコンで右クリック。
- コンテキストメニューから
Settings...を選択。
-
Shared Drivesを選択。 - C Drive のチェックをON。
-
Applyボタンを選択。
エラーが発生する。
■原因
- 公式の説明: FIREWALL RULES FOR SHARED DRIVES - docs.docker.com
- ドンピシャのissue: Cannot share drive between Windows 10 and Docker #380 - github.com
どうやら、使用しているセキュリティソフト Kaspersky(個人向け) が、ブロックしているとのこと。
■対処方法
- タスクアイコンで右クリック。
- コンテキストメニューから
設定を選択。
- 設定ボタン(歯車アイコン)を選択。
-
プロテクションを選択。 -
ファイアウォールを選択。
-
ネットワークを選択。
-
DockerNATを選択。 -
編集ボタンを選択。
- ネットワーク種別:
許可するネットワークを選択。 -
保存ボタンを選択。
- Dockerの設定をリトライしたところ、エラーは発生せずに完了しました。
-
Docker is runningとなればOK。
実際にファイル共有できているのか確認
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
- ブラウザで http://localhost:80/ を開きます。
- 正常に動作しましたので、コンテナを停止します。
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)
■原因
プロキシの設定漏れ。(会社あるあるですね
)
■対処方法
- タスクアイコンで右クリック。
- コンテキストメニューから
Settings...を選択。
-
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ボタンを選択。
















