ラズパイにDockerをセットアップする

テスト用に家にあるRaspberry Piをよくリセットしてはdockerをインストールしているので
メモ用の手順を記載

とはいえ、下記の公式記事をコピペして、
最後にpiユーザーにdocker権限を与える程度

https://docs.docker.com/engine/install/debian/


## デバイス情報
Raspberry Pi 3B
SSDにRaspberry Pi Imager v1.7.2を使って、
Raspberry Pi OS(64bit)をインストール済み

```console
pi@raspberry:~ $ lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 11 (bullseye)
Release:	11
Codename:	bullseye

pi@raspberry:~ $ uname -a
Linux raspberry 5.15.32-v8+ #1538 SMP PREEMPT Thu Mar 31 19:40:39 BST 2022 aarch64 GNU/Linux
```

## Dockerのインストール

記事記載の当日は下記のように記載してありましたが、普通にインストールできたのでスルー
（前まではインストール先のリンクがアーキテクチャ名を指定していた際にラズパイでは対応できていませんでしたが、いつの間にかコマンドの内容が変更されていたので多分大丈夫になった）
とはいえ、
用意されたスクリプトの方が実行は簡単だと思うのでそちらの方がいい方はそちらで。

![docs.docker.com_engine_install_debian_ (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565925/ac225c00-0c7a-0beb-3369-16edf9a601ad.png)

用意されたスクリプトもコピペすれば終わりそうなので省きます

https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script

### 古いバージョンのアンインストール
```console
pi@raspberry:~ $ sudo apt-get remove docker docker-engine docker.io containerd runc
```

### リポジトリの設定

```console
pi@raspberry:~ $ sudo apt-get update
pi@raspberry:~ $ sudo apt-get install -y ca-certificates curl gnupg lsb-release
pi@raspberry:~ $ sudo mkdir -p /etc/apt/keyrings
pi@raspberry:~ $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
pi@raspberry:~ $ dpkg --print-architecture
pi@raspberry:~ $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```

### DockerEngineのインストール

```console
pi@raspberry:~ $ sudo apt-get update
pi@raspberry:~ $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
pi@raspberry:~ $ apt-cache madison docker-ce
> docker-ce | 5:20.10.17~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable arm64 Packages
> docker-ce | 5:20.10.16~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable arm64 Packages
> docker-ce | 5:20.10.15~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable arm64 Packages
> docker-ce | 5:20.10.14~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable arm64 Packages
> docker-ce | 5:20.10.13~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable arm64 Packages
> docker-ce | 5:20.10.12~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable arm64 Packages
> docker-ce | 5:20.10.11~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable arm64 Packages
> docker-ce | 5:20.10.10~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable arm64 Packages
> docker-ce | 5:20.10.9~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable arm64 Packages
> docker-ce | 5:20.10.8~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable arm64 Packages
> docker-ce | 5:20.10.7~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable arm64 Packages
> docker-ce | 5:20.10.6~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable arm64 Packages
```

最新の`5:20.10.17~3-0~debian-bullseye`をインストールするように下記コマンドを変更して実行
```console
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io docker-compose-plugin
```

↓
```
pi@raspberry:~ $ sudo apt-get install docker-ce=5:20.10.17~3-0~debian-bullseye docker-ce-cli=5:20.10.17~3-0~debian-bullseye containerd.io docker-compose-plugin
```

### インストールされたか確認

```console
pi@raspberry:~ $ sudo docker run --rm hello-world
```

## piユーザーで実行できるようにする

dockerグループがあるか確認
```console
pi@raspberry:~ $ cat /etc/group | grep docker
```

<details><summary>ない場合</summary><div>
dockerグループを手動で作成する

```console
pi@raspberry:~ $ sudo groupadd docker
```
</div></details>

dockerグループにpiユーザーを入れて再起動
```console
pi@raspberry:~ $ sudo usermod -aG docker pi
pi@raspberry:~ $ sudo reboot
```

再起動後に自分のグループを確認し、存在していればok!
```console
pi@raspberry:~ $ id | grep docker
> uid=1000(pi) gid=1000(pi) groups=1000(pi),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),104(input),106(render),108(netdev),117(lpadmin),995(docker),997(gpio),998(i2c),999(spi)
```

## 最後にDockerのバージョン確認

```console
pi@raspberry:~ $ docker version
Client: Docker Engine - Community
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:02:34 2022
 OS/Arch:           linux/arm64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.11
  Git commit:       a89b842
  Built:            Mon Jun  6 23:01:01 2022
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.6.6
  GitCommit:        10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc:
  Version:          1.1.2
  GitCommit:        v1.1.2-0-ga916309
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
pi@raspberry:~ $ docker compose version
Docker Compose version v2.6.0
```

docker compose v2もインストールされていますね

#### 終わり！