LoginSignup
46
29

More than 5 years have passed since last update.

自作 Docker イメージを Web App for Containers と Azure Container Instance で動かしてみた

Last updated at Posted at 2017-09-09

こんにちは。エクセルソフトの田淵です。

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 とは

一応こっちも簡単に説明。

スクリーンショット 2017-09-11 14.21.11.png

いわゆるこのアイコンです。いつものやつ。これの作成時に 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 (プレビュー) を選ぶと使え、

スクリーンショット 2017-09-11 11.10.23.png

ランタイムとして、Node.js の 4.4〜8.1、PHP 5.6/7.0、.Net Core 1.0/1.1、Ruby 2.3 が使えるようです。

スクリーンショット 2017-09-11 11.10.45.png

さらに、この Web App は Docker で動いていて、これらのランタイムが使えるのは「ビルトイン」の Docker イメージのようです。

スクリーンショット 2017-09-11 11.44.07.png

これは作成済みの 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)だと思われます。

スクリーンショット 2017-09-11 13.34.51.png

スクリーンショット 2017-09-11 13.37.00.png

この紫のコンテナーのアイコンから 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円くらいが最低掛かります。

スクリーンショット 2017-09-11 10.13.02.png

作り方は、Azure のポータルから、「コンテナー>Web App on Linux(英語UIの場合は Web App for Containers)」を選択し、アプリ名、リソースグループ、プランを決めたら、後は「コンテナーの構成」から、Docker Hub や Azure Container Registry のパスを指定するだけです。

スクリーンショット 2017-09-09 15.46.01.png

今回使用した Realm Mobile Platform のイメージは 440MB ほどあるので、内部的に docker pull してくるのに少し時間が掛かりましたが、イメージはキャッシュされるようなので、次回からは早くなりそうです。

無事実行できました!

スクリーンショット 2017-09-09 15.52.37.png

では今日の本命、Azure Container Instance をみてみましょう。

Azure Container Instance

Azure ポータルから「コンテナー>Azure Container Instances (preview)」を選択します。

スクリーンショット 2017-09-09 17.16.01.png

コンテナ名、Docker Hub イメージのパス(Azure ポータルからは Docker Hub からしか選べないみたい? CLI 環境ではもっと色々できるらしいです。)、リソースグループなどを選びます。現時点では場所が「米国西部、米国東部、ヨーロッパ西部」です。

スクリーンショット 2017-09-09 16.23.50.png

コア数、メモリ、「Public IP address」(Yes にしましょう)とポートを決めます。複数ポートを公開する場合などは CLI でやるとできるみたいです。今回は 9080 ポートを Dockerfile で EXPOSE してあるので、9080 を指定しました。

スクリーンショット 2017-09-09 16.23.34.png

バリデーションがパスすると、OK ボタンが押せるようになります。

スクリーンショット 2017-09-09 16.24.11.png

たったこれだけ。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 はすごくおすすめだなと感じました。

ぜひみなさん使ってみてください〜(^^)

以上です。

46
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
29