Docker の詳細
Contoso の Windows Server 管理者は、Docker、Docker コンテナー、コンテナー ランタイム、およびこれらを Windows Server 上でどのように実行できるかを理解する必要があります。
Docker とコンテナー ランタイムの概要
Docker Inc. は、ソフトウェア開発用に標準化されたユニットにアプリ コードをパッケージ化する (コンテナー化ともいう) ための共通モデルを提供するオープンソース ツール、ソリューション、クラウドベースのサービスのコレクションをまとめた会社です。 この標準化されたユニットは、"Docker コンテナー" と呼ばれ、コード、ランタイム、システム ツール、システム ライブラリ、さらにサーバー上にインストールできるあらゆるものなど、実行に必要なものすべてを含む完全なファイル システムにラップされたソフトウェアです。
Docker コンテナーをサポートするために、2 つの基になるコンポーネントが存在します。これらは、通常、コンテナーを実行しているユーザーには非表示になるか、気付かれないものです。 これら 2 つのコンポーネントは、コンテナー ランタイムと、コンテナーをサポートする OS 機能です。 Windows Server では、Docker コンテナーをサポートする機能は単に "コンテナー" と呼ばれます。 この機能では、Host Compute Service (HCS) と呼ばれるコンポーネントと対話します。 HCS は、Windows Server 上の仮想化プラットフォームの調整を担当し、コンテナーと Hyper-V VM の両方をサポートする下位 API です。
コンテナーをスケジュールする OS 機能の上には、コンテナー ランタイムがあります。 コンテナー ランタイムは、CLI、UI、またはコンテナー オーケストレーターと基になる OS 機能の間に存在します。 ユーザーまたはコンテナー オーケストレーターから OS プラットフォーム機能にコマンドを変換するのは、コンテナー ランタイムのジョブです。 たとえば、Docker CLI に新しいコンテナーの実行を求めると、CLI はコンテナー ランタイムと対話します。これにより、コマンドが OS に理解できる方法で送信されます。 コンテナー ランタイムが存在するため、上記のレイヤーでは、OS でどのようにコマンドを受け取ることを想定しているかを認識する必要はありません。 ユーザーの観点からは、コンテナー ランタイムによって機能が異なるため、これは重要です。
Windows Server でコンテナーを実行するために使用できるコンテナー ランタイムは多数あります。 最も一般的なものは次のとおりです。
- Moby プロジェクト。 Moby は、Docker でその商用プロジェクトを構築するオープンソース プロジェクトです。 Windows Server では、Moby は、dockerd をコンテナー ランタイムとして活用するコミュニティでサポートされているプロジェクトです。 Moby は、Windows Server でのコンテナーのテストに最適です。 Moby をインストールすると、dockerd コンテナー ランタイムだけでなく、Windows Server 上のコンテナーと対話するための CLI も提供されます。
注意
Windows および Windows Server 上の dockerd では HCSv1 が使用されます。 Linux では、Moby はコンテナー ランタイムとして containerd を使用するように移行されました。 現在、Moby を Windows 上の containerD に移動し、より新しく改良された HCSv2 インターフェイスを利用する作業が行われています。
ContainerD。 ContainerD はオープンソースのコンテナー ランタイムであり、最近、Kubernetes 環境の優先コンテナー ランタイムとして確立されています。 ContainerD は運用環境で使用でき、Kubernetes 環境で実行されている場合の Windows Server 2022 の既定のコンテナー ランタイムです。 ContainerD をインストールすると、コンテナーと対話するための CLI は提供されません。 代わりに、CRICTL や NerdCTL などの他のオープンソースの CLI を使用できます。
Mirantes Container Runtime (MCR)。 MCR (正式には Docker Enterprise Edition (Docker EE)) では、Docker CE と同じ機能に加えて、エンタープライズ デプロイ用に特別に構築された追加機能が提供されます。 コンテナー オーケストレーターとして Docker Swarm を使用する場合は、MCR をお勧めします。 MCR をインストールすると、コンテナー ランタイムと、Docker や Moby と同じ CLI エクスペリエンスが提供されます。
Note
Docker Desktop for Windows という別のコンポーネントは、開発目的で Windows 10 と 11 で使用できます。
Windows Server 上でコンテナーを実行する
Windows Server でコンテナーを実行する前に、ご利用の環境で使用するコンテナー ランタイムを把握する必要があります。 コンテナー ランタイムによって、従う必要があるインストール プロセスが指示されます。 Windows Server のオプションと、それぞれをインストールする方法の詳細については、「コンテナー用に Windows Server ホストを準備する方法」を参照してください。
重要
コンテナーに Hyper-V 分離モードを使用する予定の場合は、ホスト サーバーに Hyper-V サーバー ロールもインストールする必要があります。 また、ホスト サーバー自体が VM である場合は、Hyper-V ロールをインストールする前に、入れ子になった仮想化を有効にする必要があります。 Windows 10 と 11 の既定では、Hyper-V 分離モードで Windows ベースのコンテナーが実行されるため、この既定のモードをサポートするために、Hyper-V 機能を Windows 10 と 11 のホスト環境にインストールする必要があります。
Docker Hub
コンテナーはコンテナー イメージに基づいて構築されており、これらのイメージは "リポジトリ" に格納することができます。 リポジトリは、コンテナー イメージを構築、格納、保護、共有できる場所として機能します。 Docker Hub は、Docker によって管理される Web ベースのオンライン ライブラリ サービスであり、次のことができます。
独自の Docker イメージをオンライン リポジトリに登録、格納、管理し、他のユーザーと共有する。
ソフトウェア ベンダー、オープンソース プロジェクト、およびその他のコミュニティ メンバーが提供する 100,000 個を超えるコンテナー イメージにアクセスする。
Microsoft Container Registry
Microsoft は、Microsoft Container Registry (MCR) (mcr.microsoft.com) を通じてコンテナー イメージを提供しています。 これは、Microsoft が提供するコンテナー イメージの公式ソースです。 Microsoft コンテナー イメージが検出された場所に関係なく、プル ソースは mcr.microsoft.com です。
注意
Azure Container Registry は、独自のコンテナー イメージ リポジトリを構築するために使用できる Azure サービスです。 このリポジトリを使用して、あらゆる種類のコンテナーのデプロイ用イメージを格納および管理することができます。