Docker に関する用語
ヒント
このコンテンツは eBook の「コンテナー化された .NET アプリケーションの .NET マイクロサービス アーキテクチャ」からの抜粋です。.NET Docs で閲覧できるほか、PDF として無料ダウンロードすると、オンラインで閲覧できます。
このセクションでは、Docker を深く掘り下げて検討する前に、理解しておく必要がある用語と定義を一覧表示します。 その他の定義については、Docker によって提供されている広範囲にわたる用語集を参照してください。
コンテナー イメージ:コンテナーを作成するために必要なすべての依存関係と情報を含むパッケージです。 イメージには、すべての依存関係 (フレームワークなど) に加えて、コンテナー ランタイムによって使用される展開および実行の構成が含まれています。 通常、イメージはコンテナーのファイルシステムを形成するために相互に積み重ねられたレイヤーである複数の基本イメージから派生します。 イメージは一旦作成されると変更できません。
Dockerfile:Docker イメージをビルドする方法の手順が含まれるテキスト ファイルです。 これはバッチ スクリプトに似ています。1 行目にはまずベース イメージがあり、必要なプログラムのインストール、ファイルのコピーなどの指示が目的の作業環境になるまで続きます。
ビルド: Dockerfile によって提供される情報とコンテキストに加えて、イメージがビルドされるフォルダー内の追加のファイルに基づいてコンテナー イメージをビルドするアクションです。 イメージは、次の Docker コマンドを使用してビルドできます。
docker build
コンテナー:Docker イメージのインスタンスです。 コンテナーは、単一のアプリケーション、プロセス、またはサービスの実行を表します。 Docker イメージのコンテンツ、実行環境、および標準的な命令セットで構成されます。 サービスをスケーリングする場合は、同じイメージから複数のコンテナーのインスタンスを作成します。 または、バッチ ジョブで同じイメージから複数のコンテナーを作成し、各インスタンスにそれぞれ異なるパラメーターを渡します。
ボリューム:コンテナーが使用できる書き込み可能なファイル システムを提供します。 イメージは読み取り専用ですが、ほとんどのプログラムはファイルシステムに書き込む必要があるため、プログラムから書き込み可能なファイルシステムにアクセスできるように、ボリュームでは書き込み可能なレイヤーをコンテナー イメージの上に追加します。 プログラムは、階層化されたファイルシステムにアクセスしていることを認識しません。通常どおりの単なるファイルシステムです。 ボリュームはホスト システムに存在し、Docker によって管理されます。
タグ:各種イメージまたは同じイメージの各種バージョン (バージョン番号または対象となる環境に応じて異なる) を識別できるように、イメージに適用できるマークまたはラベルです。
マルチステージ ビルド:Docker 17.05 以降の機能です。最終イメージのサイズを縮小するために役立ちます。 たとえば、SDK が含まれる大きな基本イメージをコンパイルとパブリッシュに使用し、その後、小さなランタイム専用基本イメージを使用してアプリケーションをホストできます。
リポジトリ:関連する Docker イメージのコレクションであり、イメージのバージョンを示すタグでラベル付けされています。 一部のリポジトリには、特定のイメージのバリアントが複数含まれています。たとえば、SDK を含むイメージ (重い) やランタイムのみを含むイメージ (軽い) などが該当します。そのようなバリアントは、タグでマーク付けすることができます。 単一のリポジトリには、Linux イメージや Windows イメージなどのプラットフォーム バリアントを含めることができます。
レジストリ:リポジトリへのアクセス権を提供するサービスです。 ほとんどのパブリック イメージの既定のレジストリは Docker Hub です (Docker によって組織として所有されている)。 レジストリには、通常、複数のチームからのリポジトリが含まれています。 企業は、多くの場合、自社で作成したイメージを格納および管理するためのプライベート レジストリを持っています。 Azure Container Registry は別の例となります。
マルチアーキテクチャ イメージ: Docker が実行されているプラットフォームに応じ、適切なイメージの選択を簡略化するマルチアーキテクチャ (またはマルチプラットフォーム) 用の Docker 機能です。 たとえば、Dockerfile がレジストリから基本イメージ FROM mcr.microsoft.com/dotnet/sdk:8.0 を要求すると、実際には、Docker が実行されているオペレーティング システムとバージョンに応じて、8.0-nanoserver-ltsc2022、8.0-nanoserver-1809、または 8.0-bullseye-slim が取得されます。
Docker Hub:イメージをアップロードし、それらを操作するパブリック レジストリです。 Docker Hub は、Docker イメージ ホスティング、パブリックまたはプライベート レジストリ、ビルド トリガーおよび Web フック、さらに GitHub および Bitbucket との統合を提供します。
Azure コンテナー レジストリ:Azure 内で Docker イメージとそのコンポーネントを操作するためのパブリック リソースです。 これは、Azure で利用しているデプロイに近く、アクセスに対する制御権を付与するレジストリです。これにより、Azure Active Directory のグループとアクセス許可が使用できるようになります。
Docker Trusted Registry (DTR) :組織のデータ センターやネットワーク内で有効になるようにオンプレミスにインストール可能な Docker レジストリ サービス (Docker からの) です。 企業内で管理する必要があるプライベート イメージにおいて便利です。 Docker Trusted Registry は Docker Datacenter 製品の一部として含められています。
Docker Desktop: コンテナーをローカルにビルド、実行、テストするための、Windows および macOS 用の開発ツールです。 Docker Desktop for Windows は、Linux コンテナーと Windows コンテナーの両方に開発環境を提供します。 Windows 上の Linux Docker ホストは、Hyper-V 仮想マシンをベースにしています。 Windows コンテナーのホストは、Windows に直接基づいています。 Docker Desktop for Mac は、Apple Hypervisor フレームワークと xhyve ハイパーバイザー (macOS X 上で Linux Docker ホスト仮想マシンを提供する) に基づいています。 Docker Desktop for Windows と Docker Desktop for Mac は、Oracle VirtualBox に基づいた Docker Toolbox に置き換わるものです。
Compose:複数コンテナーのアプリケーションを定義および実行するためのメタデータを持つコマンドライン ツールと YAML ファイル形式です。 複数のイメージに基づく単一のアプリケーションを定義するには、環境に応じて値をオーバーライドできる 1 つまたは複数の .yml ファイルを使用します。 定義を作成したら、Docker ホスト上でイメージごとにコンテナーを作成する単一コマンド (docker-compose up) を使用して複数コンテナーのアプリケーション全体を展開することができます。
クラスター:クラスター内の複数のホストに分散されたサービスの複数のインスタンスに対応できるように、単一の仮想 Docker ホストであるかのように公開された Docker ホストのコレクションです。 Docker クラスターは、Kubernetes、Azure Service Fabric、Docker Swarm、Mesosphere DC/OS を使用して作成できます。
Orchestrator:クラスターと Docker ホストの管理を簡略化するツールです。 Orchestrator を使用すると、そのイメージ、コンテナー、およびホストをコマンドライン インターフェイス (CLI) またはグラフィカル UI を介して管理することができます。 コンテナー ネットワーク、構成、負荷分散、サービス検出、高可用性、Docker ホストの構成などを管理することができます。 オーケストレーターは、ノードのコレクション全体にわたりワークロードの実行、配布、スケーリング、修復を担当します。 通常、オーケストレーター製品は、市場の他のオファリングの中でも、Kubernetes や Azure Service Fabric などのクラスター インフラストラクチャを提供する同じ製品です。
.NET