Raspberry Pi 3 で Amazon Linux 2
2022年2月2日、Raspberry Pi OS (以前は Raspbian と呼ばれていました) の 64bit 版が発表されました。これにより、BCM2710 を採用している、Raspberry Pi Zero 2、Raspberry Pi 3 と BCM2711 を採用している Raspberry Pi 4 などで AArch64 (arm64) に対応したアプリケーションの実行が可能になりました。
Amazon Web Services では、Graviton という同じく arm64 アーキテクチャのプロセッサを使用した EC2 インスタンスやコンテナ実行環境、同社の FaaS である Lambda 実行環境などがあります。
さらに、AWS からは arm64 アーキテクチャの Amazon Linux 2 イメージ (linux/arm64/v8) が公開されています。
そこで、手元にあった Raspberry Pi 3 の OS を 64bit 版に切り替えて、Amazon Linux 2 イメージをコンテナで実行してみることにしました。
メモリ容量の少ない Raspberry Pi 3 でコンテナを実行するために、なるべくオーバーヘッドの少ない実行環境を構築したいという理由から、containerd を使う nerdctl をインストールして使用することにしました。
準備
コンテナの実行を有効にする準備をします。
まず、nerdctl でコンテナイメージを実行する時に、iptables
が必要になるため、これをインストールします。
apt-get update apt-get install -y iptables
次に、/boot/cmdline.txt
の行に以下を追加します。これは必ず既存の行にそのまま追記するようにしてください。
cgroup_memory=1 cgroup_enable=memory
追記後は、以下のようになりました。
console=serial0,115200 console=tty1 root=PARTUUID=559b8d0e-02 rootfstype=ext4 fsck.repair=yes rootwait cgroup_memory=1 cgroup_enable=memory
追記後、reboot
コマンドを実行して再起動してください。
nerdctl のインストール
nerdctl は、GitHub リポジトリから full バージョンをダウンロードします。
curl -Lo nerdctl-full-linux-arm64.tar.gz https://github.com/containerd/nerdctl/releases/download/v0.16.1/nerdctl-full-0.16.1-linux-arm64.tar.gz
私は、root ユーザでコンテナ実行できるように、/usr/local
に展開しました。
sudo tar Cxzvvf /usr/local nerdctl-full-linux-arm64.tar.gz
サービスの有効化
sudo systemctl enable --now containerd
Amazon Linux 2 イメージの実行
nerdctl は、docker コマンド、docker-compose コマンドとほぼ同様に使用できます。
sudo nerdctl run -it --rm amazonlinux:2
まとめ
Apple は、同社の arm64 アーキテクチャプロセッサの Apple silicon を搭載した Mac にシフトしています。またクラウドプロバイダも AWS は Outposts も含め arm64 アーキテクチャの採用を推進しているように見えます。arm64 イメージのテストに安価な Raspberry Pi が使用できるようになったことは非常に嬉しいことだと考えています。
参考
- Raspberry Pi OS (64-bit)
- AWS Lambda Functions Powered by AWS Graviton2 Processor for Better Price to Performance Ratio
- Kubernetes Proceeding with Deprecation of Dockershim in Upcoming 1.24 Release
- Q&A with Matthew Farina of SUSE Regarding Kubernetes Rancher Desktop
- AWS Offers Two New Outposts SKUs Suitable for Space Constrained Locations