🔍

docker build時に no match for platform in manifest: not found エラー

に公開

概要

Macにて、CentOS 6のdockerイメージをdocker-compose up --build -dで実行したところ、下記のエラーが表示されました。

% docker-compose up --build -d
Compose can now delegate builds to bake for better performance.
 To do so, set COMPOSE_BAKE=true.
[+] Building 1.8s (2/2) FINISHED                                                                                                  docker:colima
 => [apache-centos6 internal] load build definition from Dockerfile                                                                        0.0s
 => => transferring dockerfile: 1.31kB                                                                                                     0.0s
 => ERROR [apache-centos6 internal] load metadata for docker.io/library/centos:centos6.10                                                  1.7s
------
 > [apache-centos6 internal] load metadata for docker.io/library/centos:centos6.10:
------
failed to solve: centos:centos6.10: failed to resolve source metadata for docker.io/library/centos:centos6.10: no match for platform in manifest: not found
%

環境

  • OS: Mac M3
  • docker(colimaで実行)
    • colima: 0.8.1
    • docker: 28.1.1
    • docker-compose: 2.36.0

原因

https://www.docker.com/ja-jp/blog/faster-multi-platform-builds-dockerfile-cross-compilation-guide/

既定では、Buildx で実行されるビルドは、コンピューターに一致するアーキテクチャのイメージをビルドします。

Mac M3でdocker buildしたため、M3のCPUアーキテクチャであるARMで実行されたことが原因でした。
そのため、docker build時にplatformオプションで利用したいCPUアーキテクチャを指定する必要がありました。

解決策

docker-compose.ymlファイルにて、platform: linux/x86_64の一文を追記しました。

services:
  apache-centos6:
   platform: linux/x86_64

Discussion