Ubuntu24.04へDocker Engine 一式をインストール （Compose含む）

# はじめに

Ubuntu 24.04.1 LTS がリリースされた記念に、公式のインストール方法を再確認しました。
[Docker Desktop on Linux](https://docs.docker.com/desktop/install/linux-install/) ではなく、従来の Docker Engine をインストールします。

# 以前の記事

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

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

# 環境

* インストール先
    * Ubuntu Server 24.04.1 LTS (x86_64) 
        *  20.04 LTS, 22.04 LTS や amd64, armhf, arm64, 
  s390x, and ppc64le (ppc64el) への導入も同じ手順で可 [^1]
* インストールするもの
    * Docker Engine
    * Docker Compose (V2) plugin
    * その他、公式マニュアルの手順入れているもの



# 手順

Dokerリポジトリから一式を導入する手順を紹介します。
また、参考までにComposeを別の方法で導入する手順も紹介します。

##  Docker のリポジトリからインストール

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

上記公式マニュアル記載の手順に沿って実施します。
最初のスクリプトっぽい部分を除いて、apt-getの代わりにaptを使用します。
 (個人的な好みなので、aptをapt-getに戻して実行しても構いません）

なお、以前の手順と比較して、以下が変更されたようです。
* GPGキーをバイナリ変換せずにASCIIのまま保存
* gnupg と lsb-releaseのインストールが不要
* 新たにdocker-buildx-plugin をインストール

```bash:Dockerのリポジトリを登録してインストール
# 古いバージョンがあれば削除
for pkg in docker.io docker-doc docker-compose \
docker-compose-v2 podman-docker containerd runc; \
do sudo apt-get remove $pkg; done

# 依存パッケージインストール
sudo apt update
sudo apt install ca-certificates curl

# Dockerリポジトリの公開鍵をUbuntu推奨ディレクトリへ格納
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc  # おそらく不要。念のため

# Dockerリポジトリ登録
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc]  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") 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 docker-buildx-plugin docker-compose-plugin
```


```bash:動作確認（2024.8.29時点）
$ docker --version
Docker version 27.2.0, build 3ab4256

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

$ docker compose version
Docker Compose version v2.29.2
```

##  【参考】リポジトリを介さずに Compose をインストール

上の手順でDockerをインストールするとComposeも入ります。
それ以外の手順は需要が低いかもしれませんが、一応載せておきます。

:::note info
【参考】["Install the Compose plugin - Install the plugin manually"](https://docs.docker.com/compose/install/linux/#install-the-plugin-manually). docker docs. 
:::

```bash:自分だけが使用する場合（x86_64用)
# DOCKER_CONFIG 変数に値が入っていればそのまま、値が入っていなければ $HOME/.docker を代入する
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
# インストール先ディレクトリを作成する
mkdir -p $DOCKER_CONFIG/cli-plugins
# リリースモジュールをダウンロードし、docker-composeという名前でインストール先に保存する
curl -SL \
  https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-linux-x86_64 \
  -o $DOCKER_CONFIG/cli-plugins/docker-compose
# docker-composeを実行可能にする
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
```


```bash:すべてのユーザが使用する場合（x86_64用)
# インストール先ディレクトリを作成する
sudo mkdir -p /usr/local/lib/docker/cli-plugins
# リリースモジュールをダウンロードし、docker-composeという名前でインストール先に保存する
sudo curl -SL \
  https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-linux-x86_64 \
  -o /usr/local/lib/docker/cli-plugins/docker-compose
# docker-composeを実行可能にする
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
```

```bash:動作確認
$ docker compose version
Docker Compose version v2.29.2
```
:::note info
- 他のバージョンのComposeを使いたい場合は、curlへ指定したURLのバージョン部分を変更し再実行ます
（つまりは docker-composeファイルの上書き）
- curlに指定したURLは、[GitHUBのリリースページ](https://github.com/docker/compose/releases)掲載ファイルのダウンロードURLです
- Docker Compose は 以下の5つの場所にインストール可能です。
  【参考】 ["Where to get Docker Compose"](https://github.com/docker/compose#where-to-get-docker-compose). Github. 
  - ```$HOME/.docker/cli-plugins```
  - ```/usr/local/lib/docker/cli-plugins```
 OR ```/usr/local/libexec/docker/cli-plugins```
  - ```/usr/lib/docker/cli-plugins``` 
OR  ```/usr/libexec/docker/cli-plugins```
:::

## 【参考】スタンドアロン版をインストール

v1の時と同様、`docker-compose` コマンドでもv2を実行可能にできるとのことです。
v1との操作性を共通化したい方向けしょうか？
掲載はしませんが、興味がある方は以下のリンクへどうぞ。

:::note info
【参考】["Install Compose standalone"](https://docs.docker.com/compose/install/standalone/). docker docs. 
:::

# おわりに

公式ドキュメントは、数年前に比べてかなり洗練されてきました。
英語もブラウザ翻訳で簡単に日本語で参照できますので、
このページのような解説はもう不要かもしれませんね。

ともあれ、何かの役に立てば幸いです。


[^1]:[こちらの記載](https://docs.docker.com/engine/install/ubuntu/#os-requirements)参照