Docker for Windows & Web Apps for Containers 実践活用技法

先日、しれっと営業部門のクラウドソリューションアーキテクトに異動した話を書いたのですが、このロールは Azure の拡販に向けたプリセールスのミッションを担ってます。で、このロールでお仕事をしていると、やっぱり技術情報提供がまだまだ足りていないなと感じるところもあります。

その一つが Docker 関連の実践的な活用技法に関するもの。世の中を見ていると、Docker の情報は Linux OS 上で扱うものが多く(たぶんみなさん Mac 上で開発されてるんでしょう;)、Docker for Windows の情報が非常に少ない。あるいは Web アプリの Docker コンテナは Azure の Web Apps for Containers で簡単に動かせるにもかかわらず世の中からはガン無視されてたり(涙)。これはさすがにまずかろう、ということで、先日作った資料をまるごと一つ、ごそっと公開してみようかと思います。

Docker for Windows & Web Apps for Containers 実践活用技法 from Microsoft Corporation

この資料はタイトルの通り、アプリ開発の実践的な視点から Docker for Windows と動作環境である Web Apps for Containers を使ってみよう、というもので、Docker の基本的なところから解説しています。あくまで実践! ということで、一般的な Docker の本で書かれている内部的な話とかレイヤーの話とかはガン無視してます。まずこの資料などで Docker for Windows の使い方を理解してから、その筋の専門書を読んでいただくと理解が早いんじゃないかと思います。

この資料で解説している内容は、大きく 2 つあります。

① Docker for Windows を使って、Windows OS 上で Linux アプリを作る方法 image

Docker for Windows のよいところは、「開発は Windows OS の使い慣れたエディタで、実行・動作確認は Linux OS 上で」という構成が、Windows マシン 1 台で簡単に構成できるところです。意外にこの仕組みがきちんと説明されている資料がネット上でほとんど見当たらないこともあり、なかなか Docker for Windows が活用されていないのでは、という気がしています。資料では Java アプリを Windows 上で開発・デバッグし、最後に Linux OS 上で動作確認を取る、という流れで解説をしています。

② Docker コンテナを VSTS (Azure DevOps) 上で作成し、Web Apps for Containers で動作させる image

Docker コンテナを動かすクラウドサービスは、CaaS (Container as a Service) などと呼ばれますが、CaaS は IaaS と PaaS の中間に位置するようなソリューションです。すなわち、PaaS であれば OS・ミドルへのパッチ当ては全自動ですが、IaaS だと手動になってしまう。これを回避するには、上図のような CI/CD(自動ビルドと自動リリース)の仕組みを作成しておき、最新のパッチが当たった Docker イメージの作成・展開がワンクリックでできるようにしておくことが重要になります。このような仕組みは VSTS (Azure DevOps) と Azure Web Apps for Containers を使うと超簡単にできるのですが、意外にそのやり方が知られていません。このやり方について、資料後半で解説しています。

# 上記で利用している Java のサンプルコードについてはこちらにアップしておきました。実際に手を動かして学習したい方は演習用に利用してみてください。
# 環境構築方法などもろもろ基本的な部分については割愛しちゃってますので、その辺の前後作業についてはこの資料をベースに、Step-by-Step 化してくださる方が出てくることを祈っています(他力本願;)。

なお、本資料では解説していませんが、Java の Web アプリを動かすだけなら、純粋な PaaS 環境である Web Apps for Windows か Web Apps for Linux の方がオススメです。今回は、Linux Docker 上で動かすサンプルとして Java アプリしか持っていなかったので Java を例に取って解説しているのですが、シンプルな Java の Web アプリならコンテナのような大掛かりな仕掛けを作る必要もなく、単純に PaaS Web Apps で手軽に動かせるんですよね;。その辺の話についてはまた別の機会に書きたいと思います。

ではでは、なにはともあれ Docker for Windows と Azure を使って、素敵なコンテナライフを!

# ご意見・ご感想はこちらのコメントでも、あるいははてブでも大丈夫です(ブクマしておきました)。