Docker のインストール手順

## Docker
**[Docker](https://www.docker.com/)** のインストール方法や内容が各環境で異なるので、インストールのみに絞った記事をまとめた。
各 OS 環境ではすべてパッケージ管理ソフトを利用してコンソールからインストールすることを想定している。

## 各 OS 環境の情報
### macOS
主に Docker 単体、[Docker Desktop](https://www.docker.com/products/docker-desktop)、[Docker Toolbox](https://github.com/docker/toolbox) の3つがある。
いずれも [Homebrew](https://brew.sh/index_ja) でインストール可能。
ただし、 Docker Toolbox は2019年8月1日リリースの 19.03.1 を最後に廃止された。 [^toolbox]

[^toolbox]: "⚠️ Deprecation Notice: This project and repository is now deprecated and is no longer in active development. Please use Docker Desktop instead where possible." - [toolbox/README.md at master · docker/toolbox](https://github.com/docker/toolbox/blob/master/README.md)

### Windows
主に Docker 単体、[Docker Desktop](https://www.docker.com/products/docker-desktop)、[Docker Toolbox](https://github.com/docker/toolbox) の3つがある。
ただし、 Docker Toolbox は2019年8月1日リリースの 19.03.1 を最後に廃止された。 [^toolbox]

#### Docker 単体
Windows Server コンテナーを導入後、Docker Engine をインストールする。
https://www.gmo.jp/report/single/?art_id=214

#### Docker for Windows
Microsoft Windows 10 の Professional か Enterprise の 64 ビット版が必要。
それ以外は Docker Toolbox を利用する必要がある。

### CentOS
標準リポジトリ、Docker 公式リポジトリ。

## インストール
### macOS

#### Homebrew
```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
パッケージ管理ソフトを使うことでコンソールからアプリケーションのインストールができる。macOS にもいくつかあるようだが、ここではデファクトスタンダードの [Homebrew](https://brew.sh/index_ja) を利用する。

#### Docker Desktop for Mac
```bash
brew install --cask docker
open /Applications/Docker.app
```
非常に分かりにくいが Homebrew で `docker` を `--cask` オプション付きで指定すると [Docker Desktop for Mac](https://www.docker.com/products/docker-desktop) がインストールされる。
Docker Desktop には Docker Engine, Docker CLI, Docker Compose, Notary, Kubernetes, Credential Helper が含まれる。 [^desktop]

[^desktop]: "Docker Desktop には Docker Engine、 Docker CLI クライアント、Docker Compose、Notary、Kubernetes、Credential Helper（資格情報の管理を支援するツール） を含みます。" - [Docker Desktop 概要 — Docker-docs-ja 19.03 ドキュメント](https://docs.docker.jp/desktop/index.html)

`docker` を `--cask` オプションなしで指定すると [Docker CE](https://github.com/docker/docker-ce) が参照されて Docker Engine と Docker CLI のみがインストールされる。
ただし Docker 20.10 以降は[当該リポジトリ](https://github.com/docker/docker-ce)は廃止されるようなので[当該フォーミュラ](https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/docker.rb)の動向に注意されたい。 [^docker-ce]

[^docker-ce]: "Docker 20.10リリース以降、Docker Engine および Docker CLI パッケージは、このリポジトリからではなく、それぞれのソースリポジトリから直接ビルドされます。（訳）" - [docker-ce/README.md at master · docker/docker-ce](https://github.com/docker/docker-ce/blob/master/README.md)

### Windows

#### Chocolatey
**Chocolatey** は Windows のパッケージ管理ソフト。コマンドラインから Windows アプリケーションをインストールできるようになる。
本体のインストールは PowerShell と cmd.exe で異なる。

##### PowerShell
```
Set-ExecutionPolicy AllSigned; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
```
Windows PowerShell を管理者として実行して起動し、上記コマンドをコピペする。

##### cmd.exe
```
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
```
cmd.exe を管理者として実行して起動し、上記コマンドをコピペする。

#### VirtualBox / Docker / Docker Compose
```
cinst -y virtualbox docker docker-compose
```
Docker for Windows は VirtualBox が使えなくなるため回避。
`docker-toolbox` でもいいがバージョンがちょっと古そうなので、ここでは個別にインストール。

### CentOS
#### Docker リポジトリ
```bash
yum -y install epel-release && yum -y update && yum -y install yum-{axelget,utils} && \
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && \
yum -y install docker-ce && systemctl start docker && systemctl enable $_ && \
curl -L $(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep download_url | grep 'Linux-x86_64"' | cut -d'"' -f4) -o /usr/local/bin/docker-compose && chmod +x $_
```

#### Base リポジトリ
```bash
yum -y install docker-{lastest,compose}
```
`docker-latest` パッケージを指定すると 1.13 がインストールされる。
`docker` パッケージだと 1.12 のため新しいコマンドが利用できない。