Azure Docker VM Extensionを使う3つの理由

Posted on Nov 5, 2015

まずはじめに

先月からMicrosoftで働いてます。Azure担当のソリューションアーキテクトになりました。これからAzureネタが増えると思いますが、ひとつよろしくお願いします。Microsoftテクノロジーとオープンソースの間あたりを、積極的にこすっていく所存です。

もちろん、技術者個人として、中立的に、公開できるネタを書きます。

AzureはMicrosoftテクノロジーとオープンソースの交差点です。できないと思っていたことが、実はできたりします。いまだに「AzureでLinux動くのね、知らなかった」と言われたり。また、その逆もしかり。SDKが色々あるからできると思っていたら、制約があった、とか。

なので、小ネタであっても、実践的な情報には価値があります。今後、公式ドキュメントでカバーされなかったり、細かすぎて伝わりづらいなことを、書いていこうかと。

Azure Docker VM Extension を使う3つの理由

さて、今回は話題沸騰のDocker関連のネタ、Azure Docker VM Extensionについて。名前通り、Azure上でDockerをのせたVMを動かすときに便利な拡張機能です。

このDocker VM Extension、AzureのARMテンプレートによく登場します。なんとなくおすすめっぽいです。ですが「自分でDockerをインストールするのと何が違うのよ」という疑問も、あるかと思います。実際、よく聞かれます。

ずばり、答えはGithubのREADMEにまとまっています。この拡張機能のうれしさは、

  1. Docker EngineのStable最新版をインストールしてくれる
  2. Docker デーモンの起動オプションや認証まわりを設定できる (オプション)
  • ポートマッピング、認証まわり、Docker Registoryサーバの定義など
  1. Docker Composeのパラメータを渡すことができる (オプション)

以上です。2と3はJSONで記述できます。要するに、毎度山ほどオプションつけてdockerコマンド打つよりは、宣言的にDockerを楽に使えますよ、ということです。必須ではありません。また、山ほどあるDockerのオプションを隅々まで網羅しているわけではありません。カバー範囲は基本的なところです。

Dockerの環境構築、はじめはコマンドを打つことをおすすめします。オプションがいろいろあるので、その中身を理解することには意味があります。

ですが、一度理解したあとは、かったるいことこの上ないので、この手のツールはあったほうがいいですね。

Dockerは本家のみならずエコシステムも急激に変化しているので、まだ環境構築ツールのファイナルアンサーはないでしょう。どれを学ぶか悩ましいところです。ですが、この拡張は気軽に使えますし、依存性も低いので、おすすめです。

なお、このDocker拡張、ARM属性で言うpublisherは"Microsoft.Azure.Extensions"ですが、古い"MSOpenTech.Extensions"を指定しているARMテンプレートがまだあったりします。拡張のインストール時に「そんなのねぇよ」と怒られたら、疑ってみてください。伝統を重んじるUSのリージョンでは動いて、Japanで動かないテンプレートでは、MSOpenTechが指定されているかもしれません。