はじめに
M1 Macを使っていると、たまに「あれ、Dockerファイルを作成する時どこにplatformを定義するんだっけ??」とわからなくなることがあるので、忘れないようにこちらにまとめておきます。
今回はイメージごとにどのplatformを選択できるのか、Dockerファイルの指定方法、docker-composeを利用する場合の指定方法について記載します。
Platformの選択
ベースのイメージは基本DockerHubから取得される方が多いと思いますので、DockerHubを利用することを前提に話を進めます。
DockerHubでは、イメージが対応するアーキテクチャがに公開されています。
例えばpythonのイメージだと、以下のようにサポートされているアーキテクチャ一覧が確認できます。
ARM64やx86-64とあります。こちらを見ると対応するアーキテクチャがわかるので、
これを見てどのアーキテクチャが利用できるか事前に確認しておく必要があります。
Dockerfileでplatformを指定する
利用できるアーキテクチャがわかったら、実際にDockerファイルにplatformを指定します。
FROM
のinstructionに--platform
オプションをつけてアーキテクチャを指定することができます。
FROM --platform=linux/amd64 python:3.9.16
WORKDIR /app
# x86_64
CLIを利用する場合も同様です。
docker run -it --platform=linux/amd64 python:3.9.16
# x86_64
Docker Composeでplatformを指定する
DockerComposeの場合は、compose.yml
に以下のように指定します。
version: '3'
services:
mysql:
image: python:3.9.16
platform: linux/amd64
working_dir: /app
ports:
- 5000:5000
さいごに
今回はAppleSiliconのチップ(M1, M2)が搭載されたMacでDockerを利用する際にplatformの指定方法について紹介しました。
アーキテクチャは意外と忘れやすいので、利用前にサポートするアーキテクチャを調べておくことが重要かと思います。