[和訳] アプリをWindows 2003からクラウド上のDocker Enterpriseに乗り換える方法 #docker
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は How to Get Your Apps off Windows 2003 and Into the Cloud with Docker Enterprise (2018/7/24) の和訳です。
膨大な数の企業が、データセンターのWindows Server 2003および2008でアプリを運用し続けています。彼らは現代的で安全でサポートのあるプラットフォームへ移行したいと考えています。それにより、今日はあるデータセンターで実行しているアプリを明日はあらゆるクラウドで実行できるという柔軟性を持つことができます。Dockerはその柔軟性を提供しているので、コードを変更することなくアプリをDockerに移行できるのです。
最近のウェビナーではこの点に焦点を当てて、Windows Server 2003上で現在実行しているいくつかのアプリを、Docker Windowsコンテナとしてパッケージ化して実行する方法をご覧いただきました。コードを変更せずにアプリを移行するすべての手順をご覧いただいた後、Azureで実行しているWindows Server 2016 VMのDocker EEで実行しました。
ウェビナーのすべての録画をこちらでご覧頂けます。60分を少し超える長さです:
このウェビナーでは、Docker EEが提供する可搬性をご覧いただけます。移行するアプリケーションは、従来のWebテクノロジーである、静的HTML、古典的ASP、ASP.NETが混在しているウェブフォームです。デモでご紹介したアプリやDockerfileは こちら のGitHubからご利用いただけます。それらは15年経ったようなアプリですが、コードを変更せずにDockerコンテナで実行可能です。
可搬性は、Dockerへの移行の話の最初の部分に過ぎません。コンテナによって密度を高めると、より少ないインフラでより多くのアプリを実行することで、Windowsのライセンス使用料を大幅に削減できるのです。最新バージョンのWindowsで実行するセキュリティが得られ、安全なソフトウェアサプライチェーンである新しいセキュリティワークフローが得られるのです。これについては、今後のウェビナーでご説明します。
ウェビナーでの質問
ウェビナーは観客の皆さんから本当に素晴らしい質問を頂いた質疑応答で終了しました。すべてに答える時間がありませんでしたので、ここで詳しく回答をご覧いただこうとおもいます。
Q: Windows上でDockerを実行すると本当にコンテナ化がおこなわれているのですか? それともAPI経由で通信しているのですか?
本当です! Docker社とMicrosoft社は、Windowsカーネルにコンテナサポートを追加した、2016年9月のWindows Server 2016リリースを協力して開発しました。IISウェブサイトを提供するDocker Windowsコンテナを実行すると、ホストWindowsサーバー上でw3wp.exeワーカープロセスの実行が確認できます。これはプロセスレベルでの分離です。
Q: DockerのWindowsコンテナからAzureストレージに読み書きできますか?
できます。Docker はアプリを実行する新しい方法です、しかしアプリが内部で行うことは何であれ、Dockerコンテナ内に置かれている場合と同じです。Docker EEで実行するDocker Windowsコンテナは、ホストサーバーと同じネットワークアクセスを持っているため、クラウドVMまたはデータセンターからAzureストレージに到達可能です。
Q: どのMicrosoftベースサーバーと機能を使っているか知る方法はありますか?(例えば、Server CoreとNano、ASP、.NETなど)これについて私のアプリを詳細に知る必要があるのでしょうか?アプリに不慣れなため、ウェビナーの方法でDockerに移行したいと思っています。Windowsアプリに対してこれを識別する簡単な方法はありますか?
まずは、Windows Server Core (完全なWindows Server 2016体験からUIを省いたもの)とNano Server(64ビットアプリと特定のアプリケーションランタイムしかサポートしていないもの)のどちらかに決定することです。
アプリがどのランタイムを使用しているか分かっているなら、.NETフレームワークまたは.NET Core用にMicrosoft社が作成したイメージを使用し構築することができるでしょう。それ以外の場合は、現在のデプロイ手順を丸写ししてDockerfileを作成してください。詳細は、How to Dockerize Windows Applicationsのブログ記事を参照してください。
Q: RDPを介してExcelを実行できるVMをデプロイしたいとします。これはWindows Server Coreで動作しますか?
しません。Server CoreコンテナイメージにWindows UIがありません。Docker はWebサーバー、REST API、データベース、コンソールアプリケーションなどのグラフィカルなUIがないアプリケーションをサーバーで実行するためのものです。Microsoft社は最近、GUIアプリケーションをサポートする新しいWindows Dockerイメージを発表しました。ただし、それがRDPをサポートするようになるかどうかは不透明です。
Q: WinFormとWPFアプリケーションについて教えていただけますか?
Windows GUIサブシステムをコンテナでサポートしていないため、現在Dockerコンテナには適していません。Dockerを使用してこれらのアプリを構築し配置することはできます。しかしコンテナでWindowsクライアントアプリを実行することはできません。
Q: 古いスタイルの設定(XML)を新しい環境変数に変更する方法を詳しく教えていただけますか。古いアプリケーションを変更する必要がありますか?または、ENV変数からXMLを構築する中間アプリが必要ですか?
最良の選択肢は、.NET設定モデルをそのまま使用し、XMLファイルを使用することです。それならばアプリを変更する必要はありません。開発用のデフォルト設定ファイルをDockerイメージにパッケージ化することができます。それによって開発者は余分な設定をせずにコンテナを実行するだけでアプリを実行できます。さらに、本番用のXMLファイルをDockerのconfigオブジェクトとしてクラスタに保存し、実行時にコンテナに適用することができます。ITプロフェッショナルのための.NETアプリのモダナイズで、これをすべて網羅しているビデオシリーズをご確認ください。
Windows Dockerコンテナの詳細については、次を参照してください: