注意書き

本サイトでは、アフィリエイト広告およびGoogleアドセンスを利用しています。

Raspberry Pi で x86_64 のコンテナを動かす方法

インフラストラクチャ

Raspberry Pi 4 で x86_64 (AMD64) のコンテナを動かすための方法を記載します。実行パフォーマンスは悪いですが、動作できることに意味がある場合には1つの方法として役立つこともあるかなと思います。

スポンサーリンク

機材情報

以下の機材を使用しています。

  • Raspberry Pi 4 8GB モデル
  • Raspberry Pi OS Lite (64-bit)
    • 2022-09-22 版

microSD カード 32GB 品に OS を焼いて起動しています。

Docker のインストール

Docker をインストール済みの場合には以下の作業は不要です。

$ sudo apt install docker.io
$ sudo usermod -aG docker $USER

このコマンド実行後は所属グループ反映のため、再ログインを行います。

動作の確認

簡単な動作確認として、nginx を動かしてみます。以下のコマンドで起動して、ブラウザで http://localhost:8080/ にアクセスしてみて動いていることを確認しておきます。

$ docker run --rm -p 8080:80 nginx

確認が終わったら、終了しておきます。

動作の確認2

x86_64 のコンテナイメージを取得して、同様に動かしてみます。platform というオプションを設定して、プラットフォームの指定を明示的に行います。

$ docker run --rm -p 8080:80 --platform linux/x86_64 nginx

当然ながら、こちらの場合では動作させることができません。

QEMU User Static (QUS) を使う

QEMU User Static というものを使って、アーキテクチャが違う環境のコンテナを動かすことを可能にします。QEMU User Static は https://github.com/dbhi/qus で公開されているオープンソースのプロダクトです。

インストール

インストールするために、以下のコマンドを実行します。ここでは x86_64 のコンテナを動かしたい目的で QUS を使用するので、 “-p” オプションで x86_64 を指定します。 “–” 以降のパラメータなので、このオプションは docker のポート指定のオプションとは別物になります。

$ docker run --rm --privileged aptman/qus -s -- -p x86_64

動作の確認

先ほど動かなかった、nginx (x86_64) のコンテナを動かしてみましょう。手元で試したところ、少々エラーは出ましたが起動に成功して、ブラウザからのアクセスでテストページの表示が確認できました。

その他

指定できるプラットフォームにはほかにも色々とあるので、使いたい場面が出てきそうな気はします。しかしエミュレーション実行にはなるはずなので、パフォーマンスを要求するものには厳しいでしょう。

おまけ

Raspberry Pi 4 で x86_64 コンテナを動かしたとき、コンテナ内で uname を実行してみたものが以下の図です。

コンテナの中としては x86_64 だと思って動いているようです。

コメント

タイトルとURLをコピーしました