ラズパイを使うすべての人と知識の共有を図りたい。こんにちは、ぽっちーです。
今回はラズパイにDockerとDocker Composeをインストール方法を解説します。
対象のRaspberry PiとOS
DockerとDocker ComposeをインストールするラズパイとOSは以下の通りです。
機種 | Pico / Pico W を除くすべてのラズパイ |
OS | Raspberry Pi OS Lite(旧 Raspbian) |
インストール方法一覧
ラズパイにDockerとDocker Composeをインストールする方法は以下の3種類です。
- Raspberry Pi OSの公式リポジトリからインストールする方法
- Docker公式のインストールスクリプトを利用してインストール方法
- debパッケージをダウンロードして手動でインストールする方法
1. Raspberry Pi OSの公式リポジトリからインストールする方法
Raspberry Pi OSの公式リポジトリからインストールする方法は、aptコマンドだけで完結するとても簡単な方法です。
メリット・デメリットは以下の通り。
メリット
- インストールが簡単
- アップデートが簡単
デメリット
- 特定のバージョンをインストールできない
- バージョンが古い
最大のメリットはインストールとアップデートが簡単な点です。セキュリティの脆弱性のアップデートなどが入った場合に、apt upgradeで簡単にアップデートできます。
デメリットは最新のDockerではないことと、特定のバージョンを指定してインストールできないことです。最新のDockerの機能を使いたい場合やバージョンを固定したい場合にはこの方法は使えないことになります。
2. Docker公式のインストールスクリプトを利用してインストールする方法
Docker公式のインストールスクリプトを利用してインストールする方法も比較的簡単にDockerをインストールすることができます。
メリット・デメリットは以下の通り。
メリット
- Dockerの最新安定版を利用できる
- アップデートが簡単
デメリット
- すでにDockerがインストールされている場合に最新のDockerがインストールされない場合がある
- 大量のパッケージがインストールされる
- Docker公式が本番環境向きではないとアナウンスしている
Docker公式のインストールスクリプトの一番のメリットは最新安定版のDockerを利用できることです。また、1. の方法と同様にaptでアップデートができる点も楽です。
一番のデメリットは、Docker公式が開発環境やテスト環境用に使ってくださいとアナウンスしている点です。本番環境で使う場合にはバージョンの固定やパッケージの取捨選択をすることが大半だと思いますが、インストールスクリプトはそんなのお構いなしに最新安定版を大量のパッケージとともにインストールします。
3. debパッケージをダウンロードして手動でインストールする方法
debパッケージをダウンロードして手動でインストールする方法は、手動でダウンロードしたdebパッケージを、原始的なdpkgコマンドでインストールする方法です。
メリット・デメリットは以下の通り。
メリット
- 最新版を利用できる
- aptのソースリストにリポジトリを追加しないでインストールできる
デメリット
- インストールが面倒
- アップデートが面倒
2. の方法と同様、最新版のDockerを使えることがメリットです。また、Dockerのaptリポジトリを使わないので、aptのソースリストを汚したくない方には良いかもしれません。
最大のデメリットはアップデートが面倒なことです。
自分で常にDockerのアップデート情報を監視して、アップデートがあった場合には各種パッケージを手動でダウンロードした後にdpkgコマンドで再度インストールする必要があります。とても手間がかかる方法だと言えます。
インストール
さきほどの各インストール方法別にDockerをインストールする方法を解説します。
Raspberry Pi OSの公式リポジトリからインストールする
インストールはdocker.ioパッケージをインストールするだけです。
$ sudo apt update
$ sudo apt install docker.io
これだけでインストールが完了します。
Docker Composeを利用したい場合はdocker-composeパッケージをインストールします。
$ sudo apt update
$ sudo apt install docker-compose
docker compose サブコマンドは使える?
Raspberry Pi の公式リポジトリ(正式にはDebian Bullseyeのリポジトリ)からインストールできるのは、2023年4月時点でバージョン20.10.5のものです。
docker compose サブコマンドが利用できるのはDocker 20.10.13からなので、残念ながらcomposeサブコマンドは使えません。従来のdocker-composeを利用しましょう。
Docker公式のインストールスクリプトを利用してインストールする
Docker公式のページに記載されているインストール用スクリプトをダウンロードします。
$ curl -fsSL https://get.docker.com -o get-docker.sh
カレントディレクトリにget-docker.shというシェルスクリプトが保存されるので、root権限で実行します。
$ sudo sh get-docker.sh
これだけでOK。
debパッケージをダウンロードして手動でインストールする
あとで簡単にインストールを済ますために、debパッケージのダウンロード先となる空のディレクトリを作成しておきます。
ここではホームディレクトリにdocker-packagesというディレクトリを作成し、そのディレクトリに移動します。
$ mkdir ~/docker-packages
$ cd ~/docker-packages
次に、パッケージをダウンロードするのですが、ラズパイにインストールしているOSのアーキテクチャ(ビット数)によってダウンロード対象のdebファイルが格納されている場所が変わってきます。
OSの種類 | debパッケージ格納場所 |
---|---|
Raspberry Pi OS 64bit | https://download.docker.com/linux/debian/dists/bullseye/pool/stable/arm64/ |
Raspberry Pi OS (32bit) | https://download.docker.com/linux/debian/dists/bullseye/pool/stable/armhf/ |
初代Raspberry Pi、2、Zero、Zero Wは32ビット版のOSしかインストールできないので迷わないで済みますが、Raspberry Pi 3、3+、4、Zero 2 Wは32ビットのOSも64ビットのOSもインストール可能なので注意が必要です。
debパッケージの格納場所から以下のパッケージをwgetコマンドなどでダウンロードします。
containerd.io_<version>_<arch>.deb
docker-ce_<version>_<arch>.deb
docker-ce-cli_<version>_<arch>.deb
docker-buildx-plugin_<version>_<arch>.deb
docker-compose-plugin_<version>_<arch>.deb
<version>は任意のものを選んでください。
<arch>は、64ビット版ならarm64、32ビット版ならarmhfとなります。
ダウンロードが終わったら、dpkgでこれらすべてのパッケージをインストールします。
$ sudo dpkg -i ./*.deb
これでインストールは完了です。
インストール後の確認
インストールが無事に完了していることを確認してみます。
docker界ではおなじみの、hello-worldコンテナを実行します。
$ sudo docker run --rm hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(arm32v7)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Hello from Docker! と表示されれば正常にインストールできています。
一般ユーザーでもdockerコマンドを利用できるようにする
他のLinuxディストリビューションと同様、Raspberry Pi OSでもデフォルトでは一般ユーザーでdockerコマンドを実行することができません。
dockerを実行させたいユーザーをdockerグループに所属させることで、sudoなしでもdockerコマンドを利用することができるようになります。
以下のコマンドでユーザーをdockerグループに所属させましょう。
$ sudo usermod -aG docker <ユーザー名>
一度ログアウトしてから再度ログイン後、sudoなしでもdockerコマンドが使えるようになります。
32ビット版のRaspberry Pi OSを使っている場合の注意点
32ビット版のRaspberry Pi OSは全てのラズパイで動作するように作られている便利なOSで、microSDカードを差し替えるだけで別のラズパイでも動いてしまいます。それゆえにちょっとした注意点があります。
Raspberry Pi 3以降のラズパイでは、32ビット版のアーキテクチャはarmv7(armhfv7)となりますが、それより前のラズパイではarmv6(armhfv6)アーキテクチャで動作します。
armv7でdockerイメージをダウンロードすると、当然のようにarmv7用のイメージがダウンロードされますが、このイメージはRaspberry Pi 3より前の、armv6なラズパイでは動きません。
逆に、Raspberry Pi 3より前のarmv6なラズパイでdockerイメージをダウンロードした場合、Raspberry Pi 3以降のarmv7なラズパイでも動かすことができます。
OSを共通化していてラズパイ本体を切り替えて使っている場合には注意が必要です。
まとめ
この記事ではラズパイにDockerとDocker Composeをインストールする方法を紹介しました。
電子工作で使う場合はとてもパワフルに思えるラズパイでも、デスクトップ用途やサーバー用途に使うと非力さが目立ってしまい、Dockerを使う機会は限られてきてしまうかもしれません。
ですが、ホストの環境を汚すことなく新規に環境を立ち上げられるDockerはラズパイにおいても魅力的です。
ラズパイでDockerを使ってみたい方の参考になれば幸いです。
それでは、良いラズパイライフを。
大変参考になりました。ありがとうございます。
ただし、「Raspberry Pi OSの公式リポジトリからインストールする」の記述で
sudo apt install docker-composer
の apt が抜けています。
ご指摘ありがとうございます。修正させていただきました。ご協力感謝いたします!
途中のコマンドの `apt` が抜けてますね。
https://raspi.lflab.work/how-to-install-docker/#i-2:~:text=sudo%20install%20docker%2Dcompose
ご指摘ありがとうございます。修正させていただきました。ご協力感謝いたします!