Ubuntu20.04へのDocker Compose v2 インストール

# はじめに

気が付いたらDocker Compose のv2がリリースされていた。V1と比較して

* PythonではなくGolangベース
* ```docker-compose```ではなく```docker compose```で実行
* インストール手順も変更

という変更点があって、興味がわいたので試しにインストールしてみた。
ついでに、Docker本体も推奨されている手順でインストールしなおしてみた。
そのメモ。

::: note warn
**2022.8.21 追記**
より簡単な導入手順が公開されていたので、この記事の内容を改めてまとめなおしました。
Ubuntu 22.04 向けとありますが、20.04 でも導入できますので以下のリンクをご参照ください。
:::

https://qiita.com/kujiraza/items/a8236f65e2c46735ee91



# 環境

* インストール先
    * Ubuntu Server 20.04 (x86_64)
* インストールするもの
    * Docker 最新版
    * Docker Compose version v2.6.1

# 手順

## Docker インストール

【参考】["Install Docker Engine on Ubuntu"](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository). docker docs. 

```bash:Dockerのリポジトリを登録してインストール（参考サイトで推奨されている手順）
# 依存パッケージインストール
sudo apt install \
  apt-transport-https ca-certificates curl gnupg lsb-release

# Dockerの公式GPGキーを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# Dockerリポジトリ登録
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker Engineのインストール
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
```

```bash:動作確認
$ docker --version
Docker version 20.10.17, build 100c701

$ sudo docker run hello-world
...
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
```

## Docker Compose v2インストール （本題）

【参考】["Where to get Docker Compose"](https://github.com/docker/compose#where-to-get-docker-compose). Github. 


```bash:/usr/local/libexec/docker/cli-pluginsにインストールする場合
# インストール先ディレクトリがなければつくる。説明を楽にするためにカレントディレクトリも変更
sudo mkdir -p /usr/local/libexec/docker/cli-plugins
cd /usr/local/libexec/docker/cli-plugins

# リリースモジュールをダウンロードし、docker-composeという名前でインストール先に保存
sudo curl -L https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o docker-compose

# docker-composeを実行可能にする
sudo chmod +x docker-compose
```

```:動作確認
$ docker compose version
Docker Compose version v2.6.1
```

* 最新版を使いたい場合は、URLのバージョン部分を変更してDocker Composeのインストール手順を再実行（つまりは docker-composeファイルを上書き）すればよい。  利用可能なバージョンは[こちらを参照](https://github.com/docker/compose/releases)。
* v2.0.0とv2.0.1以降で、リリースモジュールのダウンロードURLの末尾が異なっているので注意。
    * 旧）docker-compose-linux-amd64 --> 新）docker-compose-linux-**x86_64**


## 補足：Docker Composeのインストール先について

[参考サイト](https://github.com/docker/compose#linux)にはDocker Composeのインストール先として以下の5つのディレクトリが挙げられている。

1. ```$HOME/.docker/cli-plugins```
2. ```/usr/local/lib/docker/cli-plugins```
3. ```/usr/local/libexec/docker/cli-plugins```
4. ```/usr/lib/docker/cli-plugins```
5. ```/usr/libexec/docker/cli-plugins```

自分の環境では5番目のディレクトリだけが存在していたが、ここは触りたくなかったので3番目のディレクトリを新規作成した。
何も考えずに1番目のディレクトリにインストールしてもいいと思う。
1番目のディレクトリへインストールする場合はsudoも不要なのでなにかと楽かも。

# おわりに

今回の記事はインストールのみ。~~そのうち本格的に使ってみる。~~ [^1]
なお、Docker Composeのファイル名変更せずに保存すると以下のように怒られる。
ファイル名は上記手順の通り```docker-compose```という名前で保存すること。

```bash:ファイル名を変更しなかった時のエラー
$ docker
Usage:  docker [OPTIONS] COMMAND
...

Invalid Plugins:
  compose-linux-x86_64 plugin candidate "compose-linux-x86_64" did not match "^[a-z][a-z0-9]*$"
```
[^1]:2022.7.16現在、composeは重宝しています。