Windows Server 2016のコンテナー:知っておくべきこと

1月にComputerworld向けに書いた、Windows Server 2016 Technical Preview 4のレビューで、Dockerスタイルのコンテナー(ベータ版内に存在)のサポートに追加されたHyper-VコンテナーのWindowsServerの新しいサポートについて言及しました。前回のベータマイルストーンリリース以降の製品)。

ただし、2つのコンテナオプションが存在するため、多くの疑問が生じています。Dockerコンテナーと新しいHyper-Vコンテナーの違いは何ですか?どのシナリオで、一方のコンテナソリューションをもう一方よりも使用しますか?これらのそれぞれを展開する個別の方法はありますか?

Microsoftは、これら2つのコンテナーオプションを文書化するという素晴らしい仕事をしていません。コンテナー自体は、WindowsServerプラットフォームにとって新しいものです。これらの2つの要素を考慮して、Windows Server 2016が現在利用可能なリリースでプレビュー形式で提供する、またはソフトウェアのリリースから製造(RTM)の日付の前に、おそらく2016年の後半。

概要概要

現時点でWindowsServer 2016に存在するコンテナーには、WindowsServerコンテナーとHyper-Vコンテナーの2種類があります。どちらもWindowsServerのみをサポートしています。たとえば、LinuxやUnixを組み合わせることはできません。

私のような怠惰な管理者のために、重要な質問を前もって邪魔にならないようにしましょう。2つのコンテナタイプの一方は、もう一方よりも展開が難しいですか?答えは断固としてノーです。

[参考資料:最初の外観:Hyper-Vコンテナーを備えたVMでVMを実行する]

コンテナーの種類は実行方法が異なり、ハイパーバイザーに対する分離と信頼のレベルも異なります。ただし、基本的に、これは物理マシンの所有者(ホスト所有者)が使用するコンテナーのタイプについて展開時の決定であり、ウィザードで正しいラジオボタンを確認するのと同じくらい簡単です。 。作成時に2つから選択するだけです。この決定は、Windows Server 2016(オペレーティングシステム自体(ハイパーバイザー、これらすべての下部にあり、シリコンと物理的なアイアン上で実行))が各コンテナー内のワークロードを分離して実行する方法に影響します。

どちらのコンテナオプションも同じ量の作業であることがわかったので、2つをインテリジェントに決定するにはどうすればよいですか?基本的に、それは信頼に帰着します。コンテナー内で実行されているコードを信頼する場合は、Windows Server(従来のDockerスタイル)コンテナーを選択します。コードを信頼できない場合、コードを検証できない場合、または組織内の内部開発者からのものではない場合は、Hyper-Vコンテナーが最適です。各オプションについて詳しく見ていきましょう。

WindowsServerコンテナー

Windows Serverコンテナーは、実際にはDockerオープンソースコンテナープロジェクトの一部にすぎないため、Dockerスタイルのコンテナーについて考えると、WindowsServerコンテナーについて考えることになります。これらのコンテナは本質的に新しいタイプの仮想マシンであり、従来の仮想マシンよりも分離が少ない点があります。つまり、多くの場合、ホストで実行されているすべてのコンテナに共通するものが共有されているためです。これらの共有アイテムには、オペレーティングシステムファイル、ディレクトリ、および実行中のサービスがあります。これは、効率を高めるために行われます。ホスト上で3つの異なるコンテナーを実行していて、すべてゲストと同じバージョンのWindows Serverを使用している場合、常にC:\ Windowsディレクトリのコピーが1つだけ必要になるためです。

この共有により、ホスト上で実行される可能性のある特定のアプリケーションからコンテナーが分離されますが、オーバーヘッドが削減され、コンテナーがより軽量になります。この共有により、サーバーごとのヘッドルームが増えます。これは、従来の仮想マシンを実行する場合とは対照的です。従来の仮想マシンは、より分離されており、何も共有しないため、重複が多くなる傾向があります。また、この共有を利用するために、ホストとゲストがすべて同じオペレーティングシステムを実行している場合は、通常、WindowsServerコンテナーを使用します。その結果、Windows Server2016ホストで実行されているUbuntuServerでコンテナーを実行することはできません。 (このタイプのワークロードには、従来の仮想マシンを使用します。コンテナーはこれには適していません。2008年からWindowsでサポートされているVMを使用するだけです。)

現在、Windows Serverコンテナでサポートされている2つのコンテナイメージオペレーティングシステムは、Server Core(グラフィカルユーザーインターフェイスのないWindows)とWindows Nano Serverで、小規模なマイクロサービス指向の役割に適した根本的にリファクタリングされたマイクロサーバーです。(マイクロサービスについてはもう少し詳しく説明します。)

では、Dockerはこれらすべてにどのように適合しますか?Dockerは、コンテナーを管理するためのAPIとエンジンの「管理レイヤー」を提供します。これは、Docker自体がオープンソースであり、広く使用されているため、すぐに業界標準になりました。インターネット上の誰でも使用できるDockerHubは、すべてDockerスタイルのコンテナー内で実行されるアプリケーションの真のマーケットプレイススタイルのリポジトリです。

Dockerは、開発者がコードの実際の操作に近づき、コードの実行に必要な環境のコンテナー全体を構築するために使用できるメンタルフレームワークも提供します。開発者は基本的にコンテナイメージを作成します。コンテナイメージは非常に簡単に運用に送られ、基本的にそのホストのゲストとして実行されます。更新とコード修正は、同じ方法ですばやく簡単に処理できます。

これらのコンテナイメージはそれぞれ、アプリケーション全体のごく一部で機能する場合もあります。これにより、ソリューションがコンポーネント化され、マイクロサービス指向の環境での作業が容易になります。全体像の観点から、コンテナーを使用すると、開発者が環境内で正確に機能する優れたコードを作成するための説明責任が高まります。開発者は、開発マシンで完全に機能するコードを作成できなくなりますが、本番ソフトウェアにデプロイするとフォールオーバーします。これらは同一であるため、コードは両方の場所で機能する必要があります。これにより、運用とITの間の摩擦も減少します。ITは、元のサーバー環境と、特定の構成を期待しているが、期待に合わせて本番環境を変更する能力や論理的根拠を欠いている開発者を抱えています。

これらのDockerスタイルのWindowsServerコンテナーは、Docker Hubから信頼できるアプリケーションをダウンロードしたか、内部開発者または契約開発者が信頼できるコードを実行するコンテナーを提供したか、ある程度の信頼を意味します。信頼できるコードが含まれているコンテナー内のアプリケーションには、WindowsServerコンテナーが推奨され適切です。オペレーティングシステムファイルの共有と投影は、信頼できるコードにとって問題にはなりません。

しかし、完全に信頼されていないコードやアプリで、もう少しセキュリティを強化し、分離を強化する必要がある場合はどうなるでしょうか。

Hyper-Vコンテナー

これは、従来の仮想マシンからの分離と抽象化のモデルを、DockerスタイルのWindows Serverコンテナーの柔軟性、イメージ、および簡単な再展開形式と、DockerAPIおよび管理ツールと組み合わせたHyper-Vコンテナーを検討し始めるときです。前のセクションで説明しました。

MicrosoftAzureのCTOであるMarkRussinovichは、昨年のブログエントリで次のように述べています。Hyper-Vコンテナーは、「従来の仮想化に関連する保証でアプリケーションを分離しますが、Windows Serverコンテナーの使いやすさ、イメージ形式、および管理モデルを含みます。 DockerEngineのサポート。」ここでの違いは、分離のレベルです。Hyper-Vコンテナーは、オペレーティングシステムのファイル、プロセス、およびサービスをホストと直接共有しません。むしろ、Windows Serverは、各小さなコンテナーイメージを非常にオーバーヘッドの少ない仮想マシンにラップします。これにより、DockerスタイルのWindowsServerコンテナーにはない抽象化と信頼の境界が実現されます。

ただし、この仮想マシンは、すべての目的と目的で、管理者に対して透過的です。 Windows Serverを実行するコンテナーイメージ自体は、実際にはコンテナーイメージであり、通常の束縛されていないシリコン上で実行されていないことを理解しているため、その認識から生じるOSの最適化を利用できます。ただし、これらのコンテナーイメージはより分離されていますが、WindowsServerコンテナーと同じように展開されます。引き続きDockerAPIを使用します。引き続きDockerクライアントを使用します。別のチェックボックスをオンにするだけですが、コンテナイメージ自体は、それらを実行するために使用する分離モデルに関係なく、同じ方法で構築および配信されます。

このアプローチの欠点:オーバーヘッドが増えます。追加の分離により、より多くのコードとプロセスが複製されます。 Hyper-Vコンテナーの軽量仮想マシンラッパーは小さいものの、コンテナーイメージの実行コストに実際に「税金」がかかるという事実もあります。そのため、DockerスタイルのWindows Serverコンテナーでいっぱいの強力なホストを詰め込むことはできますが、Hyper-Vコンテナーは特定の少数のコンテナーに制限され、それ以外はすべてハードウェア的に同等です。

繰り返しますが、これらのコンテナイメージはWindowsServerのみをサポートします。分離はありますが、コンテナイメージとホストオペレーティングシステムの間には共通性があります。したがって、コンテナイメージがLinux、Unix、BSD、またはその他の代替オペレーティングシステムの別のフレーバーを実行している場合、これらの新しいWindows Server2016機能はどれも重要ではありません。

結論:サードパーティのコード、マーケットプレイスコード、または組織のどの部分からも完全に信頼されていないコードは、Hyper-Vコンテナーで実行する必要があります。これらは、マルチテナントパブリッククラウドや他の同様の環境にも最適です。容量を失うだけで、より孤立しているというセキュリティ上の利点が得られます。

Dockerコンテナ

ブランディングが常にテクノロジーの中で最も難しい部分であることを証明するために、Dockerコンテナーを紹介します。上記で、WindowsServerコンテナーはDockerオープンソースプロジェクトの一部であると述べました。 Dockerコンテナーは、WindowsServerコンテナーとは異なります。 Windows Serverコンテナーは、Dockerの基盤となるすべてのテクノロジを使用できますが、Dockerコンテナーを管理するための既存のDockerツールセットは(少なくともこのリリースでは)WindowsServerコンテナーでは機能しません。また、Windows Serverのコンテナー管理ツール(現時点では、一連のPowerShellコマンド)は、Dockerコンテナー自体で価値のあることを行うことはできません。

Dockerコンテナーは独自のものであり、Windows Serverコンテナーは共有する機能においてDockerコンテナーのように機能しますが、分離することができます。そのため、DockerスタイルのWindowsServerコンテナーと呼んでいます。。これは将来、特にサービスパックまたはWindows Serverの次のリリースで変更される可能性がありますが、現時点では、これら3つのコンテナータイプはすべて類似している場合でも、異なる概念のままです。現在、WindowsServerでサポートされているのは2つだけです。

テクノロジーが今日どこにあるか

現在、Windows Server2016でのコンテナーサポートは非​​常に進行中です。コンテナには多くの可動部分があります。ホストとオペレーティングシステムファイルへの依存関係の削除、および特定のバージョンとパッチレベル。適切な分離を実現し、コードがそのセキュリティと信頼の境界を破ることができないようにする。開発者が好みの統合開発環境(IDE)でコンテナーを操作し、アプリケーションをコンテナーに直接「エクスポート」できるようにするツールと自動化を使用して、開発者のストーリーを正しくします。コンテナがパブリッククラウド内をシームレスに上下に移動できることを確認します。もっと。

これらすべての場合において、解決すべき致命的なエラーやバグがまだあります。コンテナーがショップ内のサービス提供のロードマップにとって重要である場合は、今すぐWindows ServerコンテナーとHyper-Vコンテナーの機能のテストを開始し、特にコンテナーを有効にして管理するために使用できるPowerShellコマンドを確認することをお勧めします。 Windows Server2016ホスト上。

ただし、コンテナが優れたオプションであるが、組織にとって必須ではない場合は、テクニカルプレビュー4ビットを使用した最も基本的な探索以外の試みを控えることをお勧めします。まだ多くの疣贅があります-前述の致命的なエラーやバグを含めて-何が起こっているのかをまとまりのある感覚で理解するには。

コンテナのサポートは、Windowsプラットフォームへのエキサイティングな追加となります。書かれ、語られるべきその物語の多くが残っています。

このストーリー「WindowsServer2016のコンテナー:知っておくべきこと」は、もともとComputerworldによって公開されました。