いくつか失敗するポイントがあったので、問題発生~解決の都度追記していきます。
前提環境
# | Type | Software |
---|---|---|
1 | ClientOS | Microsoft Windows 10 Enterprise 10.0.14393 ビルド 14393 |
2 | Container Host | Docker for Windows |
トラブルシューティング
問題.1 メモリ不足でDockerが起動しない
■現象
Dockerを起動するとエラーが発生する。
タスクアイコンも真っ赤。
■原因
エラーの内容通り、設定しているメモリが確保できていない。
■対処方法
- タスクアイコンで右クリック。
- コンテキストメニューから
Settings...
を選択。
-
Advanced
を選択。 - Memory:
1024
MB に設定。 -
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
ボタンを選択。