Docker desktop is startingが終わらない

# 結論
Docker desktop　for macをバージョンダウンしたら治りました。

:::note warn
注意点
データはバックアップがあれば元に戻せますので各自の環境に合わせて取っておきましょう。
私の環境ではデータ専用コンテナを使いつつ、SQLファイルのバックアップをとっていることで復元しています。

Dockerは元々一時的な実行環境として設計されており、データ保持については色々な方法を組み合わせて実現するというものです。後述する手順ではコンテナやイメージ、ボリュームが削除されるのでこの辺りのバックアップが必要な方は適宜そちらの作業もされることをお勧めします。
:::

1.以下のURLから落としたいバージョン（2022年8月8日現在は4.8.1）をダウンロードします。
https://docs.docker.com/desktop/release-notes/#docker-desktop-481
2.アプリケーションフォルダのDockerをゴミ箱に入れます。
3.ダウンロードしたdmgファイルをダブルクリックでインストールします。

今回の4.8.1を落とした理由としていかに書き込みがあったからでした。
https://github.com/docker/for-mac/issues

世界中のユーザーが同じような問題を挙げてくれていてその中で
4.8.1は動いているという情報があったので決めました。

# 経緯
Docker DesktopをアップデートしたらDocker desktop is startingから進まなくなりました。

# ログの取り方
Docker Desktop for macを立ち上げた時のログを取るには以下のコマンドで取得することができます。

```shellscript
% /Applications/Docker.app/Contents/MacOS/com.docker.diagnose check
```

# 行ったこと｜今回は解決には至らなかったもの
## Clean / Purge data
Dockerのアイコンから
↓
Troubleshoot
↓
Clean / Purge data
を実施してみましたが改善されませんでした。
具体的には今度はDocker desktop is stoppingが終わらなくなりました。

なおClean / Purge dataを実行すると以下の動作になるようです。
A disk image reset destroys all Docker containers and images local to the machine, preserving all settings.
ディスク イメージをリセットすると、マシンのローカルにあるすべての Docker コンテナーとイメージが破棄され、すべての設定が保持されます。

## MacOSアップデート
次にMacOS自体が12.4だったので12.5にアップデートしてみました。
M1Max ｜　350Mbpsで40分くらいかかり再起動も何回かあったので
それくらいの余裕がある時に実施した方がよさそうです。

## Reset Docker Desktop to factory defaults
Dockerのアイコンから
↓
Troubleshoot
↓
Reset Docker Desktop to factory defaults
を実施してみましたが改善されませんでした。
具体的には今度はDocker desktop is stoppingが終わらなくなりました。

なおReset Docker Desktop to factory defaultsを実行すると以下の動作になるようです。
A factory reset destroys all Docker containers and images local to the machine, and restores the application to its original state, as when it was first installed.
工場出荷時の設定にリセットすると、マシンのローカルにあるすべての Docker コンテナーとイメージが破棄され、アプリケーションが最初にインストールされたときの元の状態に復元されます。

## Uninstall Docker Desktop
Dockerのアイコンから
↓
Troubleshoot
↓
Uninstall Docker Desktop
を実施してみましたが改善されませんでした。
具体的には今度はDocker desktop is stoppingが終わらなくなりました。

なおUninstall Docker Desktopを実行すると以下の動作になるようです。
You are about to uninstall Docker Desktop. Destroys all Docker containers and images local to the machine. Removes all files generated by the application.
Docker Desktop をアンインストールしようとしています。マシンにローカルなすべての Docker コンテナーとイメージを破棄します。アプリケーションによって生成されたすべてのファイルを削除します。

## ターミナルでDockerをアンインストール
公式によると以下のコマンドでアンインストールできるとのこと。

```shellscript
% /Applications/Docker.app/Contents/MacOS/Docker --uninstall
```

しかしこちらをやってもアンインストールできませんでした。

## アプリケーションフォルダから削除し再度インストール

アプリケーションフォルダから既存のDockerをゴミ箱に入れます。
そして以下のURLから新しいものをダウンロードしインストールします。
Docker desktop is startingから動かず。

## プロセスを削除
プロセスが残っていると削除できないとの情報を見つけ
アクティビティモニタを覗くと２つのプロセスが見つかりました。

 com.docker.driver.amd64-linux

## gRPCのチェックを外す
以下の記事の通りgRPCのチェックを外した状態での起動には成功しましたが

https://qiita.com/ryomoucmei/items/5490efb16aeaccd934dd

Docker desktop is startingから動かない状況は変わりませんでした。

## .dockerディレクトリを移動
~/.dockerディレクトリを移動してMacを再起動後Docker Desktop for Macを起動してみましたが
Docker desktop is startingから動かない状況は変わりませんでした。

## group.com.dockerディレクトリを移動
このディレクトリを移動するとイメージなどが消えるとの情報がありましたが
やむなく移動してMacを再起動したところ元のディレクトリ（~/Library/Group Containers/group.com.docker）
に自動生成されておりました。
その後Docker Desktop for Macを起動してみましたが
Docker desktop is startingから動かない状況は変わりませんでした。

## シンボリックリンクを移動しbrewからdockerをインストールしてみました
以下のコメントの手順を行いました。

https://github.com/docker/for-mac/issues/5113#issuecomment-1019508978

がその後Docker Desktop for Macを起動してみましたが
Docker desktop is startingから動かない状況は変わりませんでした。

## golangのバージョンを合わせる
dockerコマンドをテストしていて以下のようにgolangのバージョンが違っていることに気がつきました。

```shellscript
% docker version
Error response from daemon: dial unix docker.raw.sock: connect: no such file or directory
Client:
 Cloud integration: v1.0.28
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:04:45 2022
 OS/Arch:           darwin/arm64
 Context:           default
 Experimental:      true

 % go version
go version go1.18.4 darwin/arm64
```

brewでgolangをインストールしていたのをgoenvを導入し
go1.17.11にしました。

```shellscript
% go version                             
go version go1.17.11 darwin/arm64
```

その後Docker Desktop for Macを起動してみましたが
Docker desktop is startingから動かない状況は変わりませんでした。

## ノートンのスキャンをオフにしてみる
ノートンのスキャンをオフにしてみましたが
その後Docker Desktop for Macを起動してみましたが
Docker desktop is startingから動かない状況は変わりませんでした。

### 参考
https://matsuand.github.io/docs.docker.jp.onthefly/desktop/windows/troubleshoot/

# 参考

https://www.drbuho.com/how-to/uninstall-docker-mac

https://qiita.com/show2214/items/2a21c5d34042f75cea17

https://docs.docker.com/desktop/release-notes/


https://docs.docker.com/desktop/install/mac-install/#:~:text=To%20uninstall%20Docker%20Desktop%20from,Uninstall%20to%20confirm%20your%20selection.