LoginSignup
77
74

More than 1 year has passed since last update.

M1 MacによるDocker開発環境構築エラー

Last updated at Posted at 2021-10-19

前提環境

  • macOS BigSur v11.6
  • MacBook Pro(Apple M1)
  • docker compose v3.7

概要

  • M1 MacBook 環境でdockerの起動を行なったところno matching manifest for linux/arm64/v8 in the manifest list entries が発生した
  • 原因はdockerのimageがまだARMプロセッサに対応していないことだった
  • dockerのデフォルト設定では起動したPC環境を踏襲した仮想環境を構築してしまう。
  • つまり、M1 MacBookの環境で作られる仮想環境はARMで動くことになってしまう。

解決策

  • dockerのplatform設定にて、linux/amd64を明示的に指定する
  • これによりintelx86-64プロセッサの環境で動くこととなる

現象

  • 実案件とは全く違うqiita用の記述ですが、docker-compose.ymlにてmysql環境を構築する記述を作成しました。
  • 下記定義をM1 MacBookでビルドすると、仮想環境もARMプロセッサとして構築されます。
version: '3.7'
services:
  test_mysql:
    image: mysql:5.7
    container_name: mysql
    environment:
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: password
      TZ: 'Asia/Tokyo'
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    ports:
      - 3306:3306
  • こちらのファイルでdocker compose up実行すると下記のようなエラーが発生します。
  • これはどうやら、mysql5.7のdockerイメージがARMプロセッサに対応していないためのようです。
no matching manifest for linux/arm64/v8 in the manifest list entries

対応

  • 下記のようにplatform: 'linux/amd64'という定義を追加しただけです。
  • これによりPCの環境によらず、仮想環境ではintelx86-64でビルドすることができます。
  • この記述でdocker compose upをすると、正常に起動できるはずです。
version: '3.7'
services:
  test_mysql:
    platform: 'linux/amd64'
    image: mysql:5.7
    container_name: mysql
    environment:
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: password
      TZ: 'Asia/Tokyo'
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    ports:
      - 3306:3306

余談

  • 今回はdokcer-compose.ymlの場合でしたが、Dockerfileを使った仮想環境構築でも同様の事象が発生します。
  • その場合はdocker build --platform linux/amd64というようにオプションをつけてビルドすることで明示的にプロセッサの指定を行うことができます。
77
74
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
77
74