Windows とコンテナー

コンテナーは、オンプレミスとクラウドでのさまざまな環境で Windows アプリと Linux アプリケーションをパッケージ化して実行するためのテクノロジです。 コンテナーは、アプリの開発、展開、管理を簡単にするための軽量な分離環境を提供します。 コンテナーはすぐに起動して停止するため、変更要求に迅速に対応する必要があるアプリに最適です。 コンテナーの軽量な性質も、インフラストラクチャの密度と使用率を向上させるのに便利なツールです。

クラウドまたはオンプレミスでコンテナーを実行する方法を示すグラフィック。ほぼすべての言語で記述されたモノリシックアプリまたはマイクロサービスをサポートしています。

Microsoft コンテナーエコシステム

Microsoft には、コンテナーでアプリを開発して展開するためのツールとプラットフォームが数多く用意されています。

  • Windows 10 で windows ベースのコンテナーまたは Linux ベースのコンテナーを実行し、 Docker デスクトップを使用して開発およびテストを行い、windows に組み込まれているコンテナー機能を使用します。 Windows Server でネイティブにコンテナーを実行することもできます。

  • Docker、Docker の作成、Kubernetes、ヘルム、その他の便利な機能を備えたVisual studiovisual studio コードでの強力なコンテナーのサポートを使用して、 Windows ベースのコンテナーの開発、テスト、公開、展開を行います。各種.

  • 他のユーザーが使用するために、アプリをコンテナーイメージとして公開されるように公開します。または、組織の開発と展開のためのプライベートAzure container レジストリに、Visual Studio と visual studio コード内から直接プッシュおよびプルします。.

  • Azure またはその他のクラウドのスケールでコンテナーを展開します。

    • Azure Container レジストリなどのコンテナーレジストリからアプリ (コンテナーイメージ) を取得し、 Azure Kubernetes Service (AKS)などのオーケストレータ (Windows ベースのアプリの場合はプレビュー) または azure サービスなどの orchestrator を使用して展開および管理します。 ファブリック
    • Azure Kubernetes Service は、コンテナー、数百、または数千のコンテナーなど、さまざまな方法で、Azure 仮想マシンにコンテナーを展開して管理します。 Azure 仮想マシンは、カスタマイズされた Windows Server イメージ (Windows ベースのアプリを展開している場合)、またはカスタマイズされた Ubuntu Linux イメージ (Linux ベースのアプリを展開している場合) のいずれかを実行します。
  • AKS エンジン(プレビュー版は Linux コンテナー)、または openshift を使ったAzure Stackで azure stack を使用して、オンプレミスのコンテナーを展開します。 Windows Server で Kubernetes をセットアップすることもできます (「 windows の Kubernetes」を参照してください)。また、windowsコンテナーを RedHat Openshift コンテナープラットフォームでも実行できるように取り組んでいます。

コンテナーのしくみ

コンテナーは、ホストオペレーティングシステム上でアプリケーションを実行するための、分離された簡易サイロです。 コンテナーは、次の図に示すように、ホストオペレーティングシステムのカーネル (オペレーティングシステムの埋め込み機能とも呼ばれます) の上に構築されます。

コンテナーがカーネル上でどのように動作するかを示すアーキテクチャ図

コンテナーは、ホストオペレーティングシステムのカーネルを共有していますが、コンテナーは unfettered アクセスを取得しません。 代わりに、コンテナーは分離を取得します。また、一部の状況では、システムの表示が仮想化されています。 たとえば、コンテナーはファイルシステムとレジストリの仮想化されたバージョンにアクセスできますが、変更はコンテナーにのみ影響し、停止すると破棄されます。 データを保存するために、コンテナーはAzure ディスクやファイル共有 ( azure Filesを含む) などの固定記憶域をマウントできます。

コンテナーはカーネルの上に構築されますが、カーネルでは、アプリで実行する必要があるすべての Api とサービスを提供するわけではありません。これらのほとんどは、カーネルの上でユーザーモードで実行されるシステムファイル (ライブラリ) によって提供されます。 コンテナーは、ホストのユーザーモード環境から分離されているため、コンテナーには、基本イメージと呼ばれるものにパッケージ化された、ユーザーモードシステムファイルの独自のコピーが必要です。 基本イメージは、コンテナーが構築されている基礎レイヤーとして機能し、カーネルによって提供されていないオペレーティングシステムサービスを提供します。 ただし、後では、コンテナの画像について詳しく説明します。

コンテナーと仮想マシン

コンテナーとは異なり、仮想マシン (Vm) では、次の図に示すように、独自のカーネルを含む完全なオペレーティングシステムを実行します。

Vm がホストオペレーティングシステムの横に完全なオペレーティングシステムを実行する方法を示すアーキテクチャ図

各コンテナーと仮想マシンはそれぞれの用途を持っています。実際には、コンテナーの多くの展開では、ハードウェア上で直接実行されるのではなく、仮想マシンをホストオペレーティングシステムとして使用します。特に、クラウドでコンテナーを実行している場合です。

これらの補完的なテクノロジの類似点と相違点について詳しくは、「コンテナーと仮想マシン」をご覧ください。

コンテナーイメージ

すべてのコンテナーは、コンテナイメージから作成されます。 コンテナーの画像は、ローカルコンピューターまたはリモートコンテナーレジストリに存在する一連のレイヤーに編成されたファイルのバンドルです。 コンテナーのイメージは、アプリをサポートするために必要なユーザーモードのオペレーティングシステムファイル、アプリ、アプリのランタイムまたは依存関係、およびアプリで適切に実行する必要があるその他の構成ファイルで構成されます。

Microsoft には、独自のコンテナーイメージを作成するための出発点として使用できる、いくつかの画像 (基本イメージ) が用意されています。

  • Windows -windows api とシステムサービスの完全なセット (-server の役割) が含まれています。
  • Windows Server Core -Windows server api のサブセット、つまり完全な .net framework を含む小さな画像。 また、ほとんどのサーバーの役割も含まれていますが、Fax サーバーではありません。
  • Nano Server -.Net Core api と一部のサーバーの役割をサポートする最小の Windows サーバーイメージ。
  • Windows 10 IoT Core -ARM または x86 プロセッサを搭載した、小規模インターネット用のハードウェアメーカーによって使用される windows のバージョン。

前に説明したように、コンテナーの画像は、一連のレイヤーで構成されています。 各レイヤーには、コンテナーの画像を表す一連のファイルが含まれています。 コンテナーのレイヤーの性質上、Windows コンテナーを構築するために常に基本イメージをターゲットにする必要はありません。 代わりに、目的のフレームワークを既に持っている別のイメージをターゲットにすることもできます。 たとえば、.net チームは .net core runtime を含む.net core イメージを公開します。 .NET core のインストールプロセスを複製する必要がなくなり、このコンテナーイメージのレイヤーを再利用することができます。 .NET core イメージ自体は、Nano Server に基づいて構築されます。

詳しくは、「コンテナーの基本イメージ」をご覧ください。

コンテナーユーザー

開発者のためのコンテナー

コンテナーを使うと、開発者はより高品質のアプリを迅速に構築および出荷することができます。 コンテナーでは、開発者は、環境に合わせて、数秒で展開されるコンテナーイメージを作成できます。 コンテナーは、チーム間でコードを共有するための簡単なメカニズムとして機能し、ホストのファイルシステムに影響を及ぼすことなく、開発環境をブートストラップします。

コンテナーには、ポータブルで汎用性があり、任意の言語で記述されたアプリを実行でき、Windows 10、バージョン1607以降、または Windows 2016 以降を実行しているコンピューターと互換性があります。 開発者は、自分のノート pc またはデスクトップでローカルにコンテナーを作成してテストし、その同じコンテナーイメージを会社のプライベートクラウド、パブリッククラウド、またはサービスプロバイダーに展開することができます。 コンテナーの自然なアジリティは、大規模な仮想化されたクラウド環境での先進のアプリ開発パターンをサポートしています。

IT プロフェッショナル向けのコンテナー

コンテナーを使うと、管理者は簡単に更新して維持することができ、ハードウェアリソースをより完全に活用できます。 IT プロフェッショナルは、コンテナーを使用して、開発、QA、および運用チーム向けに標準化された環境を提供できます。 コンテナーを使用することで、システム管理者はオペレーティングシステムのインストールと基盤となるインフラストラクチャの相違点を抽象化します。

コンテナーのオーケストレーション

オーケストレーションの基盤は、コンテナーベースの環境をセットアップするときに重要なインフラストラクチャです。 Docker と Windows を使って、いくつかのコンテナーを手動で管理することもできますが、多くの場合、アプリは、オーケストレーションの提供元である5、10、または数百のコンテナーを使用します。

コンテナーオーケストレーションは、スケーラビリティと運用環境でのコンテナーの管理を支援するために構築されました。 オーケストレーションは、次の機能を提供します。

  • 縮尺での展開
  • ワークロードのスケジュール設定
  • 正常性の監視
  • ノードに障害が発生した場合のフェールオーバー
  • 拡大縮小
  • ネットワーク
  • サービス検出
  • アプリのアップグレードの調整
  • クラスターノードのアフィニティ

Windows コンテナーで使うことができるさまざまなオーケストレーションがあります。Microsoft が提供するオプションを次に示します。

Windows でコンテナーを試す

Windows Server または Windows 10 のコンテナーの使用を開始するには、次の情報を参照してください。

シナリオに適した Azure サービスを決定する方法については、「 azure container services 」および「アプリケーションをホストするために使用する Azure サービスを選択する」を参照してください。