RaspberryPi 4 Docker 環境の構築

先日 Raspberry Pi 4 に M.2 SATA を追加してストレージの問題も解決しました。

ストレージに余裕ができたので RaspberryPi 4 の能力を最大限に使うために Docker 環境を構築してみました。

RasbianOS の 64 bit化

すでに M.2 SATA を搭載したときに RasbianOS を 64bit カーネルで動作するように設定しています。

config.txt で arm_64bit の設定を追加したら、以下のコマンドで RaspberryPi のファームウェアをアップデートします。

アップデートが完了したら、再起動して 64bit カーネルを有効にします。

これで RasbianOS が 64bit で動作するようになりました。
設定後の環境は、次の通りです。

Docker Engine 環境の構築

64bit 化ができたら、 Docker 環境を構築していきます。

Docker Engine のインストール

多くのディストリビューションでは、yum,apt,dnfなどのパッケージ管理からインストールしますが、RasbianOSでは 別の方法でインストールします。

pi ユーサーに Docker 実行権限の付与

Docker Engine のインストールが完了したら、 pi ユーザーで docker の管理ができるように権限を追加します。

これで pi ユーザーで、docker コマンドの実行ができるようになりました。

docker のインストールは完了しましたが、今後のアップデートで docker のバージョンが変わってしまうと環境違いの問題なども発生するので、アップデートから除外しておきます。

イメージとコンテナの保存場所の変更

Docker イメージとコンテナは増えていきますので、ローカルの microSDではなく、拡張した M.2 SATA に保存するように設定を変更します。
RasbianOS ではプロセスの管理で systemd を使用しますので、 systemd の設定ファイルを変更します。

docker.service ファイルを開いたら ExecStart のパラメータに -g [path] を追加します。
今回は M.2 SATA でマウントした /mnt/opt01 以下を指定しています。

ここまでの設定が完了したら systemd の設定を再読込して docker を再起動します。

docker の動作確認

以下のコマンドを実行して docker の最初の動作確認(Hello World)をします。

Docker の基本的なコマンド

この記事を読んでいる人は、 docker を使いこなしている方が多いと思いますが、念のため docker コマンドの基本的な利用方法を記載しておきます。

コンテナの一覧は docker ps -a を使用します。

コンテナの状況を確認したら、以下のコマンドで コンテナを管理できます。

コマンド内容
docker ps起動しているコンテナを表示
docker ps -a起動・停止しているコンテナ すべてを表示
docker run [名前]docker pull, create, start を実行
docker pull [名前]コンテナイメージを取得
docker create -it [名前]イメージからコンテナを作成
docker container ls -aコンテナの一覧を表示
docker start [コンテナID]コンテナの起動
docker stop [コンテナID]コンテナの停止
docker restart [コンテナID]コンテナの再起動
docker rm [コンテナID]コンテナの削除

docker-compose のインストール

これで Docker Engine が利用できるようになりましたが、 Docker の管理を簡単にするために docker-compose をインストールします。

docker-compose も docker 同様に、バージョンを固定するためにアップデートの対象から外します。

docker-compose で nginx,postgresql のコンテナ利用

docker の基本が確認できたので docker-compose で nginx,postgresql の動作を確認します。

準備

docker-compose で docker を管理するために作業ディレクトリを作成します。

docker-compose.yaml 作成と起動

作業ディレクトリに移動したら docker-compose で指定する docker-compose.yaml を作成してコンテナを起動します。

docker-compose.yaml を作成したら docker-compose で nginx と PostgreSQL のコンテナを起動します。

これで nginx と PostgreSQL のコンテナが起動しました。

docker-compose コンテナの停止

使わないコンテナは docker-compose.yaml のディレクトリで、以下のコマンドを実行することで、すべて停止することができます。

これで RaspberryPi 4 で、docker を使う環境が整いました。

Translate »