エンジニアを目指す初学者に向けて、わかりやすく解説したブログです。

Raspberry PiにDockerをインストールする

やりたいこと

Raspberry Pi 3 B+にDockerをインストールしたい。

インストール方法3つ

Raspberry PiはDebian系なので、Debianのインストール方法を参照しながら進める。

Icon in a page linkDebian

インストール方法は3つある模様。

  1. aptリポジトリを利用
  2. パッケージから
  3. 簡易インストールスクリプトから

インストール方法を検索すると、簡易インストールスクリプトを使った方法がヒットする。

これでも間違いではないが、 公式ドキュメントを見ると以下のように記載されている。

Docker provides a convenience script at https://get.docker.com/ to install Docker into development environments non-interactively. The convenience script isn't recommended for production environments, but it's useful for creating a provisioning script tailored to your needs.

これは開発環境用であり、本番環境では推奨していないということ。

ラズパイは個人で利用することがほとんどのため、どちらでも良いと思うが
バージョンアップの手間などはapt経由のほうが楽だと個人的は思うので、1の方法で解説する。

1. 古いパッケージを削除する

  • docker.io
  • docker-compose
  • docker-doc
  • podman-docker

このあたりの古いパッケージが入っているとうまくインストールできないので削除しておく必要あり。

ただし、通常RaspberryPiを構築したばかりでは入っていることはないのでスキップする。

気になる場合はこちらを参照:Icon in a page linkDebian

2. Dockerのaptリポジトリを使えるようにする

「aptからインストールすると、古いバージョンのDockerがインストールされてしまう」という問題は、これを実施していないことが原因である。

公式ドキュメントに記載のある以下のコマンドを上から順番に実行していけば問題ない。

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
  1. GPG鍵を追加する
    1. 「このリポジトリから取得したパッケージが本物かどうか」を検証するための署名鍵
  2. aptに新しいリポジトリを登録する
  3. 新しいリポジトリ情報を読み込み、最新版をインストールする

3. Dockerのインストール

公式ドキュメントに記載のある以下のコマンドを実行するだけ。

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4. 動作確認

systemctlコマンドから、動いているか確認する。

$ systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; preset: enabled)
     Active: active (running) since Sat 2025-09-27 21:19:18 JST; 1min 2s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 10376 (dockerd)
      Tasks: 11
        CPU: 2.681s
     CGroup: /system.slice/docker.service
             └─10376 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

 927 21:19:15 raspberrypi dockerd[10376]: time="2025-09-27T21:19:15.981759869+09:00" level=info msg="Loading containers: start."
 927 21:19:17 raspberrypi dockerd[10376]: time="2025-09-27T21:19:17.999200993+09:00" level=info msg="Loading containers: done."
 927 21:19:18 raspberrypi dockerd[10376]: time="2025-09-27T21:19:18.163027936+09:00" level=warning msg="WARNING: No memory limit support"
 927 21:19:18 raspberrypi dockerd[10376]: time="2025-09-27T21:19:18.163259238+09:00" level=warning msg="WARNING: No swap limit support"
 927 21:19:18 raspberrypi dockerd[10376]: time="2025-09-27T21:19:18.163587101+09:00" level=info msg="Docker daemon" commit=249d679 containerd-snapshotter=false storage-driv>
 927 21:19:18 raspberrypi dockerd[10376]: time="2025-09-27T21:19:18.164933816+09:00" level=info msg="Initializing buildkit"
 927 21:19:18 raspberrypi dockerd[10376]: time="2025-09-27T21:19:18.533202941+09:00" level=info msg="Completed buildkit initialization"
 927 21:19:18 raspberrypi dockerd[10376]: time="2025-09-27T21:19:18.615506437+09:00" level=info msg="Daemon has completed initialization"
 927 21:19:18 raspberrypi dockerd[10376]: time="2025-09-27T21:19:18.615884144+09:00" level=info msg="API listen on /run/docker.sock"
 927 21:19:18 raspberrypi systemd[1]: Started docker.service - Docker Application Container Engine.

動いていなければ sudo systemctl start docker

また、最新版がインストールされていることも確認できる。

$ docker --version
Docker version 28.4.0, build d8eb465

まとめ

  • しっかりインストールするなら、aptを利用した方法を推奨する
  • aptで最新版をインストールするためには、Docker社のaptリポジトリを追加する必要がある
  • systemctlで動作確認