Skip to content

Instantly share code, notes, and snippets.

@yamaneko1212
Last active June 25, 2024 02:56
Show Gist options
  • Save yamaneko1212/11f1a8747a4def51d0a2ca0580a7bebc to your computer and use it in GitHub Desktop.
Save yamaneko1212/11f1a8747a4def51d0a2ca0580a7bebc to your computer and use it in GitHub Desktop.
M1 Macでx86_64のコンテナイメージをビルドして実行する.

M1 Macでx86_64のDockerコンテナイメージをビルドして実行する.

M1 MacBookAirでamd64(x86_64)のコンテナイメージをビルドして実行する方法を検討しました. 現状Experimentalな機能を使用しているので,プロダクションでの使用は注意してください.

検証環境

コンテナを実行する

platformオプションを指定すればよい. ただし,コンテナイメージが指定したプラットフォームに対応している必要がある. 対応しているかはDockerHubを参照のこと.

$ docker run --platform=linux/amd64 python:3.9-slim-buster uname -a
Linux c5259b863504 4.19.104-linuxkit #1 SMP PREEMPT Sat Feb 15 00:49:47 UTC 2020 x86_64 GNU/Linux

コンテナをビルドする

DockerfileのFROMplatformを指定する.

FROM --platform=linux/amd64 python:3.9-slim-buster
...

あとはいつも通り.

$ docker build .

または,buildxを使用する.この方法だとコマンドライン引数からプラットフォームを指定できる.

$ docker buildx build --platform=linux/amd64 .

docker-composeのサービスを開始する

docker-compose.ymlのサービスの設定でplatformを指定する.

version: '3.8'
services:
  db:
    container_name: my-db
    image: mysql:5.7
    platform: linux/amd64
  app-server:
    container_name: my-app-server
    platform: linux/amd64
    image: <url or hash>

あとはいつも通り.

$ docker-compose up

待通りに動作しない操作

docker-compose buildを実行する

理由は不明だが,docker-compose buildservicesplatformを考慮してビルドが行われなかった.マニュアルにはbuildも動くと書いてあるが,これは別の設定が必要かバグかもしれない.

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment