Skip to content

マルチプラットフォーム

⚡ 必要条件 nerdctl >= 0.13

nerdctl は QEMU を使用して非ネイティブのコンテナイメージを実行できます。 たとえば、Intel上のARMやその逆も同様です。

準備: QEMU を /proc/sys/fs/binfmt_misc に登録する

$ sudo systemctl start containerd

$ sudo nerdctl run --privileged --rm tonistiigi/binfmt --install all

$ ls -1 /proc/sys/fs/binfmt_misc/qemu*
/proc/sys/fs/binfmt_misc/qemu-aarch64
/proc/sys/fs/binfmt_misc/qemu-arm
/proc/sys/fs/binfmt_misc/qemu-mips64
/proc/sys/fs/binfmt_misc/qemu-mips64el
/proc/sys/fs/binfmt_misc/qemu-ppc64le
/proc/sys/fs/binfmt_misc/qemu-riscv64
/proc/sys/fs/binfmt_misc/qemu-s390x

tonistiigi/binfmt コンテナは --privileged と ルートフルモード (sudo) で実行する必要があります。

このコンテナはデーモンではなく、QEMU を /proc/sys/fs/binfmt_misc に登録した直後に終了します。 ls -1 /proc/sys/fs/binfmt_misc/qemu* を実行して登録状況を確認します。

https://github.com/tonistiigi/binfmt も参照してください。

使用法

Pull & Run

$ nerdctl pull --platform=arm64,s390x alpine

$ nerdctl run --rm --platform=arm64 alpine uname -a
Linux e6227935cf12 5.13.0-19-generic #19-Ubuntu SMP Thu Oct 7 21:58:00 UTC 2021 aarch64 Linux

$ nerdctl run --rm --platform=s390x alpine uname -a
Linux b39da08fbdbf 5.13.0-19-generic #19-Ubuntu SMP Thu Oct 7 21:58:00 UTC 2021 s390x Linux

Build & Push

$ nerdctl build --platform=amd64,arm64 --output type=image,name=example.com/foo:latest,push=true .

または

$ nerdctl build --platform=amd64,arm64 -t example.com/foo:latest .
$ nerdctl push --all-platforms example.com/foo:latest

Compose

Nerdctl Composeを参照してください。