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バージョン38
のaarch64
用のパッケージを見るとqemu-user-static
として多くのアーキテクチャー用のものが用意されています。
そこで、これらを一式ダウンロードしてからインストールします。Fedoraのバージョンが38
でqemu-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アーキテクチャー対応