Docker Desktop for MacをHomebrewでインストール（Homebrew Caskのエラー解決メモ付き）

# 概要

* __Docker Desktop for Mac__を`Homebrew`でインストールします。
* その際に必要となる`Homebrew Cask`が（自分の環境では）うまく機能しなかったので、解決方法やその他もろもろを含めて、今回ちょっとした覚えがき的に記すこととします！


# 先に結論


#### Docker Desktop for Macのインストール

Terminalで以下コマンドを実行します。

```
$ brew install docker

$ brew cask install docker

$ open /Applications/Docker.app
```


#### `$ brew cask install docker`がうまくいかない場合

Terminalで以下コマンドを実行します。

```
$ brew update-reset && brew update
```

* 先頭文字`$`は入力不要です（以降も同様）
* [Homebrew自体のインストール](https://brew.sh/index_ja)と、[Docker IDの作成](https://hub.docker.com/)は事前に完了していること前提です


## 実行環境

| | バージョン |
|:--|:--|
| macOS | Mojave 10.14.6 |
| Homebrew | 2.2.10 |
| Docker | 19.03.8 |


## Homebrew Caskとは

* Homebrewの拡張。
* Macのデスクトップアプリを`brew`（`brew cask`）コマンドでインストールできるようになる。
  * （参考）入手可能なアプリのリスト：[Homebrew Formulae](https://formulae.brew.sh/cask/)
* Terminalコマンド入力による「CLIベースのインストール」実行ができるので、アイコンをアプリケーションに移して。。。とかしなくてもよくなる。

> "インストールするのに、このアイコンをドラッグして..."なんてことは、もう不要です！
> Homebrew Caskは、Homebrewを拡張し、AtomやGoogle ChromeなどのGUI macOSアプリケーションのインストールと管理に、エレガントさ、シンプルさ、スピードをもたらします。
> バイナリ形式で配布されるmacOSアプリケーションの管理に対して、フレンドリーなCLIワークフローを提供することで実現します。
>
> 出典：[Homebrew Cask (GitHub)](https://github.com/Homebrew/homebrew-cask)


## 手順 （および`brew cask install`エラー → 解決の流れ）

Homebrewでのインストールを、いつもと同じようにTerminalで実行します。

```
$ brew install docker
```

ただし、これだけでは`Docker.app`が入らないので、つづけて`brew cask install docker`を実行する必要があります。

。。。が、自機Macで`brew cask`がどうも機能しないことが判明。


```
$ brew cask

==> Tapping homebrew/cask
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask'...
.
.
.
Error: Failure while executing; `git clone https://github.com/Homebrew/homebrew-cask /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask` exited with 128.
Follow the instructions here:
.
.
.
```

Terminalから`brew update-reset && brew update`を実行して、Homebrewとformula（brewで入れたパッケージ）をアップデートしなおします。
（参考：[Homebrew Cask (GitHub)](https://github.com/Homebrew/homebrew-cask/)）

```
$ brew update-reset && brew update

==> Fetching /usr/local/Homebrew...
.
.
.
From https://github.com/Homebrew/brew
   5518f276e..87fcba5d0  master     -> origin/master

==> Resetting /usr/local/Homebrew...
Branch 'master' set up to track remote branch 'master' from 'origin'.
Switched to and reset branch 'master'
Your branch is up to date with 'origin/master'.

==> Fetching /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core...

==> Resetting /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core...
Branch 'master' set up to track remote branch 'master' from 'origin'.
Reset branch 'master'
Your branch is up to date with 'origin/master'.

Already up-to-date.

```

つつがなくアップデートできたようなので、あらためて`brew cask`を実行します。


```
$ brew cask

==> Tapping homebrew/cask
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask'...
.
.
.

Tapped 1 command and 3502 casks (3,618 files, 204.8MB).
Homebrew Cask provides a friendly CLI workflow for the administration
of macOS applications distributed as binaries.
.
.
.
See also "man brew-cask"

```

どうやら、うまくcloneして持ってこれたみたいです！


## Dockerをbrew caskで、あらためてインストール

というわけで
`brew cask`の実行環境準備が整ったので、Docker.appインストールに再アタックしてみます。

```
$ brew cask install docker

Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/cask).
==> Updated Casks
onyx

==> Downloading https://download.docker.com/mac/stable/43472/Docker.dmg
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'docker'.
==> Installing Cask docker
==> Moving App 'Docker.app' to '/Applications/Docker.app'.
🍺  docker was successfully installed!

```

うまくインストールできました。

```
$ open /Applications/Docker.app

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

```

ちゃんとDockerデーモン起動してます^^！
（コンテナ自体はまだない）


---

### 参考
* [Homebrew Cask（本家リポジトリ）](https://github.com/Homebrew/homebrew-cask)
* [Homebrew使い方まとめ](https://qiita.com/vintersnow/items/fca0be79cdc28bd2f5e4)
* [homebrew-caskとは](https://qiita.com/swallowtail62/items/61244ea3c7d00f692823)
* [Homebrew で macOS に Docker をインストールして Hello world](https://qiita.com/niwasawa/items/c8cfe350caa9f4730400)