- 会員限定
- 2020/11/12 掲載
Windowsコンテナをわかりやすく解説、Linuxと比べて何か優れているのか?
山市良のマイクロソフトEYE
AzureのDocker関連サービスはLinuxが先行
Microsoft Azureの「App Service」は、WindowsまたはLinuxのアプリ実行環境を提供するPaaS(サービスとしてのプラットフォーム)型のクラウドサービスです。アプリのためのさまざまなランタイム環境が用意されているのですが、Docker対応のLinuxまたはWindowsコンテナをデプロイして実行することも可能です。このコンテナ対応のサービスを「Web App for Containers」とも呼ぶことがあります。Dockerの技術は、Linuxプラットフォーム向けに登場し、発展してきたものです。Windows Server 2016およびWindows 10バージョン1607からはWindowsにも正式に対応しましたが、Dockerのコンテナ技術はLinuxが大きく先行しています。App ServiceがLinuxコンテナに正式に対応したのは3年前の2017年9月です。
一方、Windowsコンテナ対応は長いことプレビューという扱いで、2020年9月末にようやく正式対応になりました。10月からはWindowsコンテナ向けの新料金プランの提供が開始され(プレビュー期間中の50%割引は終了)、東日本を含む多くのリージョンでWindowsコンテナのデプロイが可能になっています。
Microsoft AzureのDockerコンテナ関連のサービスとしてはこの他にも「Azure Container Instances(ACI)」や「Azure Kubernetes Service(AKS)」などがありますが、まずLinuxコンテナに対応し、その後、Windowsコンテナのプレビュー対応、正式対応という流れは同様です。
Windowsコンテナ、最大の課題はその大きすぎるサイズ
マイクロソフトはDockerと協力して、WindowsコンテナのサポートをDockerのコードに統合し、Windows Server 2016で正式に対応しました。Windows Server 2016のライセンスには、「Docker Enterprise」の使用権が含まれます(※「Docker Enterprise」は、米国時間2020年11月12日リリースのバージョンから「Mirantis Container Runtime」に改称されました)。Windowsコンテナ対応は無料の「Docker Desktop Community」にも実装され、Windows 10上でLinuxコンテナ(DockerエンジンはHyper-VまたはWindows Subsystem for Linux(WSL) 2のLinux環境が提供)とWindowsコンテナの環境を切り替えて利用することができます(ただし、HomeエディションはWSL2ベースのLinuxコンテナのみ対応)。
Dockerのコンテナ技術は、ホストのカーネルを共有しながら、分離されたコンテナ環境をアプリに提供するのが特徴です。LinuxコンテナのアプリはLinuxホストのLinuxカーネル上で動くプロセス、WindowsコンテナのアプリはWindows ServerまたはWindows 10のカーネルで動くプロセスです。Windowsコンテナのほうには、OSバージョン間の下位互換性と厳格な分離環境を提供する、「Hyper-V分離モード」(Hyper-Vコンテナ)というものもありますが、オーバーヘッドが大きくなるのが難点です。
Windowsコンテナ登場時からの最大の課題は、イメージサイズの大きさでした。WindowsコンテナのベースOSイメージとしては、Server Coreインストールベースの「Windows Server Core」と、極限まで削り落としたWindows ServerであるNano Serverベースの「Nano Server」が提供されていますが、Windows Server 2016ベースの展開サイズは前者が11GB以上、後者が1GB以上でした。
その後、サイズの最適化が図られ、Windows Server 2019/Windows Server, version 1809ベースのものは「Windows Server Core」で半減、「Nano Server」で1/4程度までになっています。それでもLinuxのベースOSイメージに比べると大きさが目立ちます。
大きなイメージサイズは、イメージの取得やビルド、管理、デプロイの際に、大きな時間的ロスを生み出します。LinuxベースのLinuxコンテナやNano ServerベースのWindowsコンテナの場合、簡単なものであれば十数秒でイメージを取得、展開、実行が可能であり、コンテナの利点を感じることができるでしょう。
しかし、Windows Server Coreの場合はそうはいきません。ベースOSイメージやカスタムイメージの取得だけでも10分で完了すれば早いほうです。最初に紹介したApp Serviceですが、Windowsコンテナ向けのいくつかの主要なベースOSイメージ(servercoreやservercore/iisなど)はあらかじめキャッシュ済みになっているため(キャッシュ済みのイメージについては、以下のURLにある一覧を参照)、リソースの作成からアプリの開始まで1分以内で完了します。
しかし、カスタムイメージ、たとえばWindowsコンテナのクイックスタートで指定されているASP.NETサンプルをデプロイすると、キャッシュされていないイメージの取得に多くの時間をとられ、デプロイ開始からアプリが起動するまで実に6分もの時間がかかりました。“クイック”なところはまったく実感できません。
Configure a custom container for Azure App Service
https://docs.microsoft.com/en-us/azure/app-service/configure-custom-container?pivots=container-windows#change-the-docker-image-of-a-custom-container
【次ページ】同じことを実現できるならLinuxコンテナが断然有利
関連コンテンツ
関連コンテンツ
PR
PR
PR
今すぐビジネス+IT会員にご登録ください。
すべて無料!今日から使える、仕事に役立つ情報満載!
-
ここでしか見られない
2万本超のオリジナル記事・動画・資料が見放題!
-
完全無料
登録料・月額料なし、完全無料で使い放題!
-
トレンドを聞いて学ぶ
年間1000本超の厳選セミナーに参加し放題!
-
興味関心のみ厳選
トピック(タグ)をフォローして自動収集!
投稿したコメントを
削除しますか?
あなたの投稿コメント編集
通報
報告が完了しました
必要な会員情報が不足しています。
必要な会員情報をすべてご登録いただくまでは、以下のサービスがご利用いただけません。
-
記事閲覧数の制限なし
-
[お気に入り]ボタンでの記事取り置き
-
タグフォロー
-
おすすめコンテンツの表示
詳細情報を入力して
会員限定機能を使いこなしましょう!
「」さんのブロックを解除しますか?
ブロックを解除するとお互いにフォローすることができるようになります。
ブロック
さんはあなたをフォローしたりあなたのコメントにいいねできなくなります。また、さんからの通知は表示されなくなります。
さんをブロックしますか?
ブロック
ブロックが完了しました
ブロック解除
ブロック解除が完了しました