マルチアーキテクチャイメージの準備
このステップでは、マルチアーキテクチャイメージを準備します。マルチアーキテクチャイメージを使用すると、amd64
や arm64
など、異なるアーキテクチャで実行できるイメージを構築してプッシュすることができます。これは、クラウドサーバー、エッジデバイス、ローカルマシンなど、さまざまな環境にアプリケーションをデプロイする際に便利です。
まず、Docker の実験的機能を有効にする必要があります。これにより、マルチアーキテクチャイメージを構築するために必要な buildx
コマンドを使用できるようになります。これは、Docker 設定ファイルを作成または変更することで行えます。
nano
を使用して Docker 設定ファイルを開きます。
nano ~/.docker/config.json
ファイルが存在しない場合、nano
が作成します。以下の内容をファイルに追加します。ファイルが既に存在する場合は、メインの JSON オブジェクト内に "experimental": "enabled"
行を追加します。
{
"experimental": "enabled"
}
Ctrl + X
を押し、次に Y
を押し、最後に Enter
を押してファイルを保存します。
次に、複数のアーキテクチャをサポートする新しいビルダーインスタンスを作成する必要があります。ビルダーインスタンスは、ビルドプロセスを管理する Docker コンポーネントです。
mybuilder
という名前の新しいビルダーインスタンスを作成します。
docker buildx create --name mybuilder --use
このコマンドは、mybuilder
という名前の新しいビルダーインスタンスを作成し、それを後続のビルド操作のデフォルトビルダーに設定します。出力には、ビルダーが作成され、使用されていることが表示されるはずです。
では、簡単なマルチアーキテクチャイメージを構築しましょう。Alpine Linux をベースにしたイメージを作成する基本的な Dockerfile
を使用します。
プロジェクト用のディレクトリを作成し、そこに移動します。
mkdir ~/project/multiarch-demo
cd ~/project/multiarch-demo
このディレクトリに Dockerfile
を作成します。
nano Dockerfile
Dockerfile
に以下の内容を追加します。
FROM alpine:latest
CMD ["echo", "Hello from multi-architecture image!"]
Ctrl + X
を押し、次に Y
を押し、最後に Enter
を押して Dockerfile
を保存します。
では、linux/amd64
と linux/arm64
の両方のアーキテクチャ用のイメージを構築し、ダミーのレジストリにプッシュしましょう。レジストリのプレースホルダーとして localhost:5000
を使用します。実際のシナリオでは、これを実際のレジストリアドレスに置き換えます。
マルチアーキテクチャイメージを構築してプッシュします。
docker buildx build --platform linux/amd64,linux/arm64 -t localhost:5000/multiarch-demo:latest --push .
このコマンドは、指定されたプラットフォーム (linux/amd64
と linux/arm64
) 用のイメージを構築し、localhost:5000/multiarch-demo:latest
としてタグ付けし、localhost:5000
レジストリにプッシュします。出力には、各アーキテクチャのビルドプロセスとプッシュ操作が表示されます。