はじめに
この実験では、docker scout environment コマンドを使用して異なる Docker 環境を管理する方法を学びます。まず、既存の環境を一覧表示して、システム上で利用可能なコンテキストを理解します。
次に、特定の環境に関連付けられた Docker イメージを一覧表示する方法を調べます。これにより、そのコンテキスト内で利用可能なイメージを確認できます。最後に、特定のプラットフォーム用のイメージを特定の環境に記録する方法を学び、イメージを異なる環境に関連付けて、より良い整理と管理を行う方法を実証します。
既存の環境を一覧表示する
このステップでは、システム上の既存の Docker 環境を一覧表示する方法を学びます。Docker 環境を使用すると、異なる Docker インストールやコンテキストを管理できます。デフォルトでは、default 環境があります。
既存の Docker 環境を一覧表示するには、docker context ls コマンドを使用できます。このコマンドは、各環境に関する情報を含む表を表示します。情報には、環境の名前、説明、Docker エンドポイント、および現在のアクティブな環境かどうかが含まれます。
利用可能な環境を確認するために、コマンドを実行しましょう。~/project ディレクトリでターミナルを開きます。
docker context ls
次のような出力が表示されるはずです。
NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * Current DOCKER_HOST environment unix:///var/run/docker.sock n/a swarm
この出力では、NAME は環境の名前、DESCRIPTION は簡単な説明、DOCKER ENDPOINT は Docker が使用しているエンドポイント(この場合はデフォルトの Unix ソケット)、KUBERNETES ENDPOINT は Kubernetes 統合用(ここでは n/a)、ORCHESTRATOR は使用されているオーケストレーター(この場合は swarm)を示しています。default の横のアスタリスク (*) は、それが現在アクティブな環境であることを示しています。
環境を一覧表示する方法を理解することは、異なる Docker コンテキストを管理する最初のステップです。これは、リモートの Docker デーモンやクラウドプロバイダーを使用する際に役立ちます。
特定の環境に関連付けられたイメージを一覧表示する
このステップでは、特定の環境内で利用可能な Docker イメージを一覧表示する方法を学びます。Docker イメージはコンテナの構成要素であり、アプリケーションコード、ライブラリ、および依存関係が含まれています。
現在アクティブな環境(前のステップで見たように default)内のイメージを一覧表示するには、docker images コマンドを使用できます。このコマンドは、イメージのリポジトリ、タグ、イメージ ID、作成時間、およびサイズを含むイメージのリストを表示します。
イメージを一覧表示する前に、サンプルイメージを取得して、リストに表示するものを用意しましょう。Docker インストールのテストに使用される非常に小さいイメージである hello-world イメージを取得します。
docker pull hello-world
イメージが取得されてダウンロードされていることを示す出力が表示されるはずです。
Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
これでイメージが用意できました。docker images コマンドを使用して default 環境内のイメージを一覧表示しましょう。
docker images
次のような出力が表示され、先ほど取得した hello-world イメージが含まれているはずです。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest ... ... ago ...kB
この出力には、タグが latest の hello-world イメージ、その一意の IMAGE ID、作成日時 (CREATED)、およびサイズ (SIZE) が表示されています。
イメージを一覧表示することは Docker の基本的な操作であり、コンテナを作成するためにローカルで利用可能なイメージを確認できます。
特定のプラットフォームの環境にイメージを記録する
このステップでは、Docker が異なるプラットフォーム用のイメージをどのように扱い、それらとどのようにやり取りするかを探ります。ただし、特定のプラットフォーム用の環境にイメージを明示的に「記録」することは、思ったような標準的な Docker コマンドではありません。Docker イメージは多くの場合、マルチアーキテクチャです。つまり、1 つのイメージタグには、異なる CPU アーキテクチャ(amd64、arm64 など)用のバリアントが含まれることがあります。イメージを取得すると、Docker は自動的にシステムのアーキテクチャに適したバリアントを選択します。
特定のプラットフォーム用の環境にイメージを「記録」するという概念は、正しいイメージバリアントが利用可能または使用されることを確保することに関係しています。明示的に「記録」するわけではありませんが、ターゲットプラットフォームを指定してイメージを取得することができます。
特定のプラットフォーム用のイメージを取得する方法を実演しましょう。軽量な Linux ディストリビューションである alpine イメージを取得し、arm64 プラットフォームを指定します。LabEx の仮想マシンはおそらく amd64 ですが、Docker は他のアーキテクチャ用のイメージも取得して保存することができます。
まず、プラットフォームを指定せずに alpine イメージを取得し、デフォルトの動作を確認しましょう。
docker pull alpine
イメージが取得されていることを示す出力が表示されるはずです。
Using default tag: latest
latest: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
次に、再度イメージを一覧表示して、alpine イメージを確認しましょう。
docker images
リストに alpine が表示されます。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest ... ... ago ...kB
alpine latest ... ... ago ...MB
次に、--platform フラグを使用して、arm64 プラットフォーム用の alpine イメージを取得してみましょう。
docker pull --platform arm64 alpine
arm64 バリアントが取得されていることを示す出力が表示されます。
Using default tag: latest
latest: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
出力は似ているように見えるかもしれませんが、Docker は arm64 バリアントを取得しています。arm64 マシン上であれば、これがデフォルトになります。amd64 マシン上では、alpine:latest イメージの amd64(デフォルトの取得)と arm64 の両方のバリアントがローカルに保存されます。
docker images はデフォルトでは、一覧表示される各イメージバリアントのプラットフォームを明示的に表示しませんが、Docker は内部でそれらを管理しています。コンテナを実行すると、Docker はホストのアーキテクチャに適したイメージバリアントを使用します。
このステップでは、Docker がマルチアーキテクチャイメージをどのように扱い、--platform フラグを使用して異なるプラットフォーム用のイメージを明示的に取得できるかを実演しています。
まとめ
この実験では、docker scout environment コマンドを使用して Docker 環境を管理する方法を学びました。まず、docker context ls を使用してシステム上の既存の Docker 環境を一覧表示し、デフォルト環境とその詳細を確認しました。
次に、docker images コマンドを使用して、特定の環境に関連付けられた Docker イメージを一覧表示する方法を調べました。最後に、特定のプラットフォーム用の環境にイメージを記録する方法を学びましたが、この詳細な手順は提供された内容では完全には記載されていませんでした。



