Docker for Windowsで起動時にTimeoutで失敗し、lifecycleTimeoutSecondsの値を編集しろと言われたときの対処法

いつも通りPCを起動した際にDocker for Windosの起動に失敗し、エラーが出たので対処法が検索して見つかったのでをそれを自分なりに簡単にまとめてみました。
GitHubにissueが上がっていてそれからの引用ばかりなのでまとめといえるのかあれなのですが。


#GitHubのリンク
こんな個人のまとめよりissueを見たい方のために先にリンクを張っておきます。
[issue](https://github.com/docker/for-win/issues/4393)
さらに解決法のみを見たい方のためのそこへのリンクも張っておこうと思います。
[解決法](https://github.com/docker/for-win/issues/4393#issuecomment-541780066)

#環境
一応自分の環境を乗せておこうと思います
OS:Windows10 Pro バージョン1903
Docker Desktop バージョン2.1.0.4(39773)

#エラー
PCを起動した際にDockerの起動でエラーが出ました。
その際の画面のスクショは取り忘れてしまったのですが、似たようなエラー文をissueの中で見つけたので引用して張っておきます。

```
Timed out waiting for the lifecycle-server to start.
This may be the result of a slow environment or there may be a real problem.
This timeout can be increased by editing settings.json, value 'lifecycleTimeoutSeconds'.
This file is usually in C:\Users\(yourusername)\AppData\Roaming\Docker");
```

[引用箇所](https://github.com/docker/for-win/issues/4393#issuecomment-521984167)
このほかに下にもう数行文章があったと思います。

#原因
これも[issueに書かれていた](https://github.com/docker/for-win/issues/4393#issuecomment-523377898)のですがどうやら2.1.0.0で遅いマシンがタイムアウトするようになったかららしいです。
2.1.0.1のリリースノートにこのように書かれています。
>Docker Desktop now supports a configurable user timeout for VMs on slower machines.

ちなみにこれをみらい翻訳で訳すと
>Docker Desktopは,遅いマシン上のVMに対して,構成可能なユーザタイムアウトをサポートするようになった。

[ここ](https://docs.docker.com/docker-for-windows/release-notes/)のDocker Desktop Community 2.1.0.1のBug fixes and minor changesに書かれてます。


#解決法
このissueの最後の書かれているのですがそれを引用させていただきます。
>1, Open "Window Security"
2, Open "App & Browser control"
3, Click "Exploit protection settings" at the bottom
4, Switch to "Program settings" tab
5, Locate "C:\WINDOWS\System32\vmcompute.exe" in the list and expand it
6, Click "Edit"
7, Scroll down to "Code flow guard (CFG)" and uncheck "Override system settings"
8, Start vmcompute from powershell "net start vmcompute"

これを翻訳すると
>1、「ウィンドウセキュリティ」を開きます
2、「アプリとブラウザのコントロール」を開きます
3、下部の「エクスプロイト保護設定」をクリックします
4、「プログラム設定」タブに切り替えます
5、リストで「C：\ WINDOWS \ System32 \ vmcompute.exe」を見つけて展開します
6、「編集」をクリックします
7、「コードフローガード（CFG）」まで下にスクロールし、「システム設定を上書きする」をオフにします
8、powershellからvmcomputeを開始する「net start vmcompute」

となります。
ちなみになぜこれが有効なのかはわかりませんでしたすみません。

それぞれの番号にわかりやすいよう画像を送付してみました。
1.「Windows セキュリティ」を開きます
![Qiita1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267515/3bca6925-3e88-0836-9097-51c85f6ba393.png)

2.「アプリとブラウザーコントロール」を開きます
![Qiita2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267515/e8f4568b-a527-f9db-7f4e-d7e83a50c7c1.png)

3．下部の「Exploit protection」の「Exploit protectionの設定」をクリックします
![Qiita3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267515/34b2a6e6-21d2-5db4-292a-f1d88a91a40d.png)

4．「プログラム設定」タブに切り替えます
![Qiita4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267515/465dc681-4554-88fa-0999-2ee676966ced.png)

5．リストで「C:\Windows\System32\vmcompute.exe」を見つけて展開します
6．「編集」をクリックします
![Qiita5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267515/90b4325a-c6af-2b66-4c79-c874be94e3f5.png)

7．「制御フローガード（CFG）」まで下にスクロールし、「システム設定を上書きする」のチェックを外してオフにします
![Qiita6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267515/3c63f1b4-37b0-e468-a1d3-962e7c1b1844.png)

8．powershellからvmcomputeを開始します
既に起動している場合は一度`net stop vmcompute`で止めてから`net start vmcompute`
Hyper-Vが関連しているなどで止めるかどうかyesかnoで聞かれる場合がありますがyesと答えます。
その際にHyper-Vを使用しているものは止めても大丈夫なようにしておきましょう。
![Qiita7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267515/1942aca3-991e-65ca-82f8-d03d6696f16e.png)

これでDocker Desktopを問題なく起動できるはずです。

#まとめ
issueに乗っていた解決法で対処できた！
ちなみにエラー画像をとるため問題を再現しようとしたのですが一度vmcomputeの設定を編集してDocker Desktopを起動した後だとCFGにチェックを入れても問題なく起動してしまい再現できませんでした。