次の方法で共有


コンテナーと Docker の概要

ヒント

このコンテンツは、.NET Docs で入手できる、またはオフラインで読み取ることができる無料のダウンロード可能な PDF として入手できる、コンテナー化された .NET アプリケーションの電子ブックである .NET マイクロサービス アーキテクチャからの抜粋です。

コンテナー化された .NET アプリケーションの .NET マイクロサービス アーキテクチャの電子ブックの表紙サムネイル。

コンテナリゼーションは、ソフトウェア開発のアプローチであり、アプリケーションまたはサービス、その依存関係、その構成 (展開マニフェスト ファイルとして抽象化) がコンテナー イメージとしてパッケージ化されます。 コンテナー化されたアプリケーションは、ユニットとしてテストし、コンテナー イメージ インスタンスとしてホスト オペレーティング システム (OS) にデプロイできます。

出荷コンテナーを使用すると、内部の貨物に関係なく、貨物を船、列車、またはトラックで輸送できるのと同様に、ソフトウェア コンテナーは、さまざまなコードと依存関係を含むことができるソフトウェア展開の標準ユニットとして機能します。 この方法でソフトウェアをコンテナー化すると、開発者や IT プロフェッショナルは、変更をほとんどまたはまったく行わず、複数の環境に展開できます。

コンテナーは、共有 OS 上でアプリケーションを相互に分離します。 コンテナー化されたアプリケーションは、コンテナー ホスト上で実行され、OS (Linux または Windows) で実行されます。 そのため、コンテナーのフットプリントは仮想マシン (VM) イメージよりも大幅に小さくなります。

図 2-1 に示すように、各コンテナーは Web アプリケーション全体またはサービスを実行できます。 この例では、Docker ホストはコンテナー ホストであり、App1、App2、Svc 1、Svc 2 はコンテナー化されたアプリケーションまたはサービスです。

VM またはサーバーで実行されている 4 つのコンテナーを示す図。

図 2-1 コンテナー ホストで実行されている複数のコンテナー

コンテナリゼーションのもう 1 つの利点はスケーラビリティです。 短期的なタスク用に新しいコンテナーを作成することで、すばやくスケールアウトできます。 アプリケーションの観点からは、イメージのインスタンス化 (コンテナーの作成) は、サービスや Web アプリなどのプロセスのインスタンス化に似ています。 ただし、信頼性を高めるために、複数のホスト サーバーで同じイメージの複数のインスタンスを実行する場合は、通常、各コンテナー (イメージ インスタンス) を異なる障害ドメイン内の異なるホスト サーバーまたは VM で実行する必要があります。

つまり、コンテナーは、アプリケーション ライフサイクル ワークフロー全体で分離、移植性、機敏性、スケーラビリティ、制御の利点を提供します。 最も重要な利点は、Dev と Ops の間で提供される環境の分離です。