こんにちは。エクセルソフトの田淵です。
2017/9/9 時点での情報です。
2017/09/11 追記:色々と乱暴に書いてしまったので価格とリンクを修正しました。後、混乱していた Web App on Linux と Web App for Containers について追記しました。日本語のキャプションが間違いだそうで、正式には「Web App for Containers」で良いみたいです!
現在 jazug 7周年総会 のもくもく部屋でもくもくしています。
@shibayan 先生に Web App for Containers(日本語UIでは Web App on Linux)と Azure Container Instance について教えてもらいましたので共有します。
まずはそれぞれのサービスについておさらい
App Service on Linux とは
一応こっちも簡単に説明。
いわゆるこのアイコンです。いつものやつ。これの作成時に OS で Linux を選ぶと App Service on Linux の Web App と呼ばれているものになると想像。(なんだかとてもややこしいですw
つまり、Web アプリケーションを Linux 上で Web App として動かせるものです(のはず)。今まで Windows 上の Web App で動いていたランタイムは .NET Framework で PHP と Java と Python が使えるだけでしたが、App Service on Linux は Web App を作成する時に「OS」から Linux (プレビュー)
を選ぶと使え、
ランタイムとして、Node.js の 4.4〜8.1、PHP 5.6/7.0、.Net Core 1.0/1.1、Ruby 2.3 が使えるようです。
さらに、この Web App は Docker で動いていて、これらのランタイムが使えるのは「ビルトイン」の Docker イメージのようです。
これは作成済みの App Service on Linux の Web App のプロパティですが、「Docker コンテナー」の項目があり、ビルトインが選択されています。
Web App for Containers(日本語UIでは Web App on Linux になっているのでさらにややこしい)とは
普通に Web App on Linux を新規作成する時には Docker Hub などの Docker イメージをソースとしては選べないのですが、新規作成時に選べるようにしたテンプレートが、Web App for Containers(日本語UIでは Web App on Linux)だと思われます。
この紫のコンテナーのアイコンから Web App を作成すると、作成時に Docker コンテナイメージを指定できるため、事実上どんなランタイムの Web アプリケーションでも Docker イメージさえ作れば、Web App としてスケールさせたり https を利用したりできるっぽいですね。
感覚的には、Azure Container Service で Swarm や Kubernetes などのオーケストレーションを用意する代わりに、Web App の仕組みでスケールできるぜ!って感じかなぁと思っています。(詳しい方は教えてください)
Web App on Linux の詳細は、Azure App Service の新機能 – Web App on Linux (プレビュー) – MSDN オンライン チームブログ をご覧ください。
Azure Container Instance とは
Azure Container Instances は Hypervisor レベルでの分離を備えた次世代のコンテナ実行環境 - しばやん雑記 をご覧ください。
やってみよう
では実際に作ってみましょう。今回は https://hub.docker.com/r/ytabuchi/realm/ のイメージを使用しました。Dockerfile は こちら です。
両方 Microsoft Azure のサービスなので、Azure の通常のアカウント、評価アカウント、Dev Essential、BizSpark、MSDN など、Azure のクレジットが使えるサブスクリプションを用意してください。Dev Essential は、開発者向けに1ヶ月3,000円分の無料枠が使える素晴らしいサービスなので、お持ちでない方はぜひ申し込んでみてください。
Web App for Containers
Web App の実行イメージとして Docker イメージをそのまま使えるというものです。Web App のインスタンスとなるので、Web App の機能、URL や https やスケールなど各種機能を使えます。ただし、Free のプランは存在せず、月額 5,000円くらいが最低掛かります。
作り方は、Azure のポータルから、「コンテナー>Web App on Linux(英語UIの場合は Web App for Containers)」を選択し、アプリ名、リソースグループ、プランを決めたら、後は「コンテナーの構成」から、Docker Hub や Azure Container Registry のパスを指定するだけです。
今回使用した Realm Mobile Platform のイメージは 440MB ほどあるので、内部的に docker pull
してくるのに少し時間が掛かりましたが、イメージはキャッシュされるようなので、次回からは早くなりそうです。
無事実行できました!
では今日の本命、Azure Container Instance をみてみましょう。
Azure Container Instance
Azure ポータルから「コンテナー>Azure Container Instances (preview)」を選択します。
コンテナ名、Docker Hub イメージのパス(Azure ポータルからは Docker Hub からしか選べないみたい? CLI 環境ではもっと色々できるらしいです。)、リソースグループなどを選びます。現時点では場所が「米国西部、米国東部、ヨーロッパ西部」です。
コア数、メモリ、「Public IP address」(Yes にしましょう)とポートを決めます。複数ポートを公開する場合などは CLI でやるとできるみたいです。今回は 9080 ポートを Dockerfile で EXPOSE
してあるので、9080 を指定しました。
バリデーションがパスすると、OK ボタンが押せるようになります。
たったこれだけ。4クリックで Docker イメージが起動してしまいました!!!
それだけではありません。驚くべきはその 価格 です。
課金対象 | 価格 |
---|---|
コンテナインスタンス作成 | 一個作るあたり 0.26円 |
コンテナインスタンス期間 | メモリ: 1GB(1秒)あたり 0.001275円 コア: 1コア(1秒)あたり 0.001275円 |
意味わからないですね。上記の価格計算ページの価格サンプルでは
- 1コア、1GB のコンテナインスタンスを1日1回30日間作成。各インスタンスは5分間(300秒)起動した。
合計額:30.60円 - 1コア、2GBのコンテナインスタンスを1日50回30日間作成。各インスタンスは2分30秒(150秒)起動した。
合計額:1,243.13円
と記載されていましたw 安いww
試験環境やとりあえず Docker を試してみたい方は、Azure Container Instance はすごくおすすめだなと感じました。
ぜひみなさん使ってみてください〜(^^)
以上です。