AlmaLinux 第27回 | Rocky Linux 第14回「Raspberry Piでlinux/amd64のDockerコンテナーを動かす」

Dockerのマルチアーキテクチャー機能

前回は、Raspberry Pi 4上のAlmaLinuxとRocky LinuxにDockerをインストールして動かしてきました。

AlmaLinux 第24回 | Rocky Linux 第11回「Dockerのインストール」

また、以前にRaspberry Pi OSの場合には「Raspberry Piでlinux/amd64のDockerコンテナーを動かす」としてDockerのマルチアーキテクチャーの機能を使っていました。その際には、qemu-user-staticというパッケージをインストールしています。

ところが、AlmaLinuxやRocky Linuxにはqemu-user-staticパッケージが公開されていません。そのため、現在の対応状況を見ると次のようになっています。

$ docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS  BUILDKIT             PLATFORMS
default * docker                                       
  default default         running v0.11.6+616c3f613b54 linux/arm64, linux/arm/v7, linux/arm/v6

そこで、どうしようかということですがAlmaLinux、Rocky LinuxもRHEL系ということでFedoraのダウンロードサイトを探すとqemu-user-staticパッケージも一式公開されています。

qemu-user-staticのインストール

そこで、今回はFedoraのダウンロードサイトから必要なrpmファイルをダウンロードして直接インストールしてみようと思います。現在のFedoraバージョン38aarch64用のパッケージを見るとqemu-user-staticとして多くのアーキテクチャー用のものが用意されています。

そこで、これらを一式ダウンロードしてからインストールします。Fedoraのバージョンが38qemu-user-staticのバージョンが7.2.0-6になっていますから次のようなスクリプトを用意して一気にダウンロードします。

#!/bin/bash

ARCH=aarch64
FEDORA_VER=38
QEMU_VER=7.2.0-6

QV=${QEMU_VER}.fc${FEDORA_VER}.${ARCH}
DL=https://dl.fedoraproject.org/pub/fedora/linux/releases/${FEDORA_VER}/Everything/${ARCH}/os/Packages/q

wget ${DL}/qemu-user-static-${QV}.rpm

for i in aarch64 alpha arm cris hexagon hppa loongarch64 m68k microblaze \
  mips nios2 or1k ppc riscv s390x sh4 sparc x86 xtensa; do
  wget ${DL}/qemu-user-static-${i}-${QV}.rpm
done

exit 0

続けてダウンロードしたrpmファイルをインストールします。

$ sudo dnf install -y ./qemu-user-static*.rpm

インストールが完了したら、Dockerの様子を見てみます。

$ docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS  BUILDKIT             PLATFORMS
default * docker                                       
  default default         running v0.11.6+616c3f613b54 linux/arm64, linux/arm/v7, linux/arm/v6, linux/amd64,
linux/amd64/v2, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64

今回、動かそうとしていたlinux/amd64などのプラットフォームが追加されています。これで、Raspberry PiのAlmaLinux、Rocky LinuxにインストールしたDockerでもlinux/amd64のコンテナーを動かすことができるようになっています。

linux/amd64アーキテクチャーのDockerコンテナーを実行

実際にlinux/amd64用のDockerコンテナーを実行してみます。

$ docker run --rm --platform linux/amd64 ubuntu uname -m
x86_64

無事に、linux/amd64用(表示ではx86_64となっています)のDockerコンテナーをプルして実行することが出来ています。

念のために、DockerコンテナーのArchitectureを見てもamd64となっています。

$ docker inspect --format='{{.Architecture}}' ubuntu
amd64

RHEL互換としてRaspberry Piで動かすことのできるAlmaLinux、Rocky Linuxですが、やはりRaspberry Pi OSと比べるとかなり違っている点があります。今回は、EPELでも入手することの出来なかったパッケージをFedoraのダウンロードサイトから直接入手することでインストールしてみました。

参考: 2023/03/29 Raspberry Piでlinux/amd64のDockerコンテナーを動かす
    2022/01/07 DockerのマルチCPUアーキテクチャー対応

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!
目次