docker buildx create コマンドでビルダーを管理する方法

DockerDockerBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、docker buildx createコマンドを使用して Docker ビルダーを効果的に管理する方法を学びます。新しいビルダーインスタンスの作成、既存のビルダーへのノード追加、ビルダーやノードへのカスタム名指定、ビルドノードでサポートされるプラットフォームの設定、新しく作成したビルダーへの自動切り替えといった重要な手順を網羅します。この実験を終える頃には、マルチアーキテクチャや分散ビルドのための様々なビルダー設定を構成し活用する方法について、確固たる理解を得られるでしょう。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") subgraph Lab Skills docker/ls -.-> lab-555046{{"docker buildx create コマンドでビルダーを管理する方法"}} docker/rm -.-> lab-555046{{"docker buildx create コマンドでビルダーを管理する方法"}} docker/inspect -.-> lab-555046{{"docker buildx create コマンドでビルダーを管理する方法"}} docker/create -.-> lab-555046{{"docker buildx create コマンドでビルダーを管理する方法"}} end

新しいビルダーインスタンスの作成

このステップでは、docker buildx createコマンドを使用して新しいビルダーインスタンスを作成する方法を学びます。ビルダーインスタンスは、複数のビルドノードを管理する Docker オブジェクトです。各ノードは、異なるアーキテクチャや環境を表すことができます。

新しいビルダーを作成する前に、システム上に存在する既存のビルダーを確認しましょう。docker buildx lsコマンドを使用して確認できます。

docker buildx ls

通常はdefaultという名前のデフォルトビルダーインスタンスが表示されるはずです。

それでは、新しいビルダーインスタンスを作成しましょう。この新しいビルダーにはmybuilderという名前を付けます。

docker buildx create --name mybuilder

このコマンドはmybuilderという名前の新しいビルダーインスタンスを作成します。デフォルトでは、この新しいビルダーにはまだノードが関連付けられていません。ノードの追加は次のステップで行います。

新しいビルダーを作成した後、再度ビルダーをリスト表示して新しく作成されたものを確認できます。

docker buildx ls

これでdefaultビルダーとmybuilderビルダーの両方が表示されるはずです。mybuilderビルダーは、まだアクティブなノードを持っていないため、非アクティブとして表示されます。

既存ビルダーへの新規ノード追加

前のステップでは、mybuilderという名前の新しいビルダーインスタンスを作成しました。現在、このビルダーにはビルドノードがありません。このステップでは、既存のビルダーに新しいノードを追加します。

ビルドノードは、基本的にビルドプロセスが実行される Docker エンドポイントです。デフォルトでは、ノードを指定せずに新しいビルダーを作成すると、アクティブなノードなしで作成されます。

mybuilderビルダーに新しいノードを追加するには、再びdocker buildx createコマンドを使用しますが、今回は--appendフラグを使用してノードを追加するビルダーを指定します。mybuilderビルダーにノードを追加します。

docker buildx create --name mybuilder --append

このコマンドはmybuilderビルダーに新しいノードを追加します。デフォルトでは、名前を指定せずにノードを追加すると、Docker Buildx が名前を自動生成します。

更新されたmybuilderインスタンスと新しいノードを確認するため、再度ビルダーをリスト表示しましょう。

docker buildx ls

これでmybuilderの下にノードが表示されるはずです。ノードには生成された名前が付けられ、実行状態 (running) になっているでしょう。

ビルダーとノードの名前指定

前のステップでは、mybuilderという名前のビルダーを作成し、そこにノードを追加しました。ノードには自動的に生成された名前が割り当てられていました。このステップでは、作成時にビルダーとノードの両方に名前を指定する方法を学びます。

まず、前のステップで作成したmybuilderビルダーを削除して、新たに始めましょう。

docker buildx rm mybuilder

次に、新しいビルダーインスタンスを作成し、その名前をcustombuilderと指定します。また、このビルダー内の初期ノードの名前をnode1と指定します。ビルダーには--nameフラグを、ノードには--nodeフラグを使用して指定できます。

docker buildx create --name custombuilder --node node1

このコマンドは、custombuilderという名前の新しいビルダーインスタンスと、その中のnode1という名前の初期ノードを作成します。

名前を確認するためにビルダーをリスト表示しましょう。

docker buildx ls

これでcustombuilderが表示され、その下にnode1という名前のノードが表示されるはずです。これにより、ビルダーとノードの整理と識別をより詳細に制御できるようになります。

ノードがサポートするプラットフォームの設定

このステップでは、ビルドノードがサポートするプラットフォームを指定する方法を学びます。これはマルチアーキテクチャイメージを構築する上で重要です。デフォルトでは、ノードは実行されているホストのアーキテクチャのみをサポートします。しかし Buildx を使用すると、QEMU などのエミュレーションを使って追加のプラットフォームをサポートするようにノードを設定できます。

まず、前のステップで作成したcustombuilderを検査して、そのノードがサポートするプラットフォームを確認しましょう。

docker buildx inspect custombuilder

出力の"Platforms"フィールドを確認してください。LabEx VM のネイティブアーキテクチャ(例:linux/amd64)が表示されるはずです。

次に、custombuilder内のnode1を更新して追加のプラットフォームをサポートさせます。docker buildx createコマンドに--appendフラグと--platformフラグを使用します。ここではlinux/arm64linux/riscv64のサポートを追加します。

docker buildx create --name custombuilder --append --node node1 --platform linux/arm64,linux/riscv64

既存のビルダー名とノード名に対して--appendを使用している点に注意してください。このコマンドはcustombuilder内の既存ノードnode1を更新し、指定されたプラットフォームを含めるようにします。

再度ビルダーを検査して、node1の更新されたプラットフォームを確認しましょう。

docker buildx inspect custombuilder

node1の"Platforms"フィールドには、linux/amd64linux/arm64linux/riscv64が含まれるようになります。これにより、このノードはこれらのアーキテクチャ向けのイメージを構築できるようになります。

新規作成したビルダーへの自動切り替え

この最終ステップでは、新しく作成したビルダーインスタンスの使用に自動的に切り替える方法を学びます。複数のビルダーがある場合、Docker Buildx にどのビルダーをビルド操作に使用するかを指定する必要があります。

デフォルトでは、Docker Buildx はdefaultビルダーを使用します。現在アクティブなビルダーを確認するには、docker buildx lsの出力を確認してください。アクティブなビルダーには名前の横にアスタリスク (*) が表示されます。

docker buildx ls

作成したcustombuilderに切り替えるには、docker buildx useコマンドの後にビルダー名を指定します。

docker buildx use custombuilder

このコマンドはcustombuilderを現在のアクティブビルダーとして設定します。これ以降のdocker buildx buildコマンドは、custombuilder内に設定されたノードを使用するようになります。

再度ビルダーをリスト表示して、custombuilderがアクティブビルダーになったことを確認しましょう。

docker buildx ls

custombuilderの横にアスタリスク (*) が表示され、これがアクティブビルダーであることがわかります。

新しいビルダーインスタンスの作成、ノードの追加、名前の指定、ノードのサポートプラットフォーム設定、そしてこの新しいビルダーへの切り替えをすべて正常に完了しました。

まとめ

この実験では、docker buildx createコマンドを使用して Docker ビルダーを管理する方法を学びました。まず、mybuilderという名前の新しいビルダーインスタンスを作成し、独立したビルド環境を初期化する方法を実践しました。次に、既存のビルダーに新しいビルドノードを追加する方法を学び、mybuilderインスタンスにビルドエンドポイントを効果的に追加しました。

さらに、ビルダーとそのノードにカスタム名を指定して整理と明確化を行う方法をカバーしました。また、特定のビルドノードがサポートするプラットフォーム(アーキテクチャ)を定義し、ターゲットを絞ったビルドを可能にする方法も学びました。最後に、新しく作成したビルダーに自動的に切り替え、それ以降のビルド操作でアクティブなビルダーとして使用する練習を行いました。