Docker HubにPushしたイメージはTutumでクラウド上のVMに自動デプロイできるよ!!


# 2017/06現在、TutumはDocker社に買収され、Docker Cloudになっています。
https://cloud.docker.com/

http://qiita.com/kkitase/items/5b0868dbdd2879005a51

この記事を読むと、Docker Hubリポジトリに変更がpushされるたびに、Azure上のホストVMに新しいDockerイメージをデプロイできるようになります。

**Dockerリポジトリの変更を受け、TutumでDockerコンテナーをリデプロイ中**
![Docker HubからのHookでリデプロイ中のDockerコンテナー](https://qiita-image-store.s3.amazonaws.com/0/20175/449d65e4-6ad8-923f-0a3e-d496e34f1857.png "running.png")


-------


DevOpsしてみたくて、JenkinsからDocker HubへイメージのPushは出来た、だけどそのあとJenkinsからクラウド上のホストVMにDockerイメージをデプロイできない…
そんな状況だったので、DevOpsエヴァンジェリストの牛尾さん(@TsuyoshiUshio@github)に教えていただいたTutumというサービスを使ってみました。

**Tutum**
https://www.tutum.co/


Tutumで予めホストVMを立ち上げておき、Docker Hubにhookの設定をしておけば、イメージがDocker HubにPushされるたびに自動デプロイが行われます。

この記事ではAzureリソースに対する自動デプロイを設定します。
AWSに対するデプロイについては、以下の記事がありました。

**Dockerコンテナを手軽にデプロイしてくれるサービス「Tutum」を試してみた**
http://qiita.com/honeniq/items/a4b655e9a92d1fe84ffb



---


#Tutum is 何

TutumはDocker社が買収したDockerコンテナーを管理するクラウドサービスです。2015年11月現在βサービスで基本的な使い方は無料です。

**DockerがTutumを買収してコンテナアプリケーションの稼働管理サービスを充実**
http://jp.techcrunch.com/2015/10/22/20151021docker-acquires-cloud-startup-tutum-for-container-shipping-and-management/



#Tutumの利用を開始する

TutumはDocker Hubのアカウント情報を使ってログインできます。
アカウントはDocker Hubですが、パスワードは改めて決めます

https://www.tutum.co/

#TutumとAzureと連携する

Tutumにログイン後、Acount infoの「Cloud Providers」からAzureと認証を行います。
https://dashboard.tutum.co/account/

Azureの項目の「Add Credentials」ボタンを押下することで、入力画面が開きます
「Download〜〜」ボタンを押下することでAzureに登録するためのcerファイルをダウンロードできます。ボタンの下のサブスクリプションIDフィールドにAzure PASSのサブスクリプションを入力して「Save〜〜」を押下すればTutum側の連携は完了です。
![input_credentials](https://qiita-image-store.s3.amazonaws.com/0/20175/a12baffc-96ec-2c1c-7d3c-b9b8c1a86cc8.png "スクリーンショット 2015-11-30 17.55.39.png")

Azure側の連携とは上記でダウンロードしたcerファイルをAzureの旧ポータル画面の「設定」 ->「管理証明書」からアップロードすれば終わりです。
![azure_setting.png](https://qiita-image-store.s3.amazonaws.com/0/20175/7ed817ca-eca9-78f2-f414-3acd65e266d7.png "azure_setting.png")



ちなみにAzureプレビューポータルからAzure旧ポータルへの遷移の仕方は、右上のアカウント情報をクリックした際に出てくる「Azureポータル」ボタンです。プレビューポータルからcerファイルあげる場所、よくわからない…
![goPortal](https://qiita-image-store.s3.amazonaws.com/0/20175/0e6cd516-52aa-a12d-e3ab-1ec98af4767a.png "azure.png")



#TutumにNode(デプロイ用のホストVM)を作成する
認証が終わったらあとはデプロイの設定を行うだけです。ここで用語の説明をしておくと、TutumではホストVMをNode、デプロイするDockerイメージをServiceと呼びます。本格的に使う場合は、スケーリングなどの設定もできるようです。

Node管理画面
https://dashboard.tutum.co/node/launch/

画面左上の「Nodes」タブを押下したあと、「Launch new node cluster」ボタンから新しいNodesクラスターを作成します。適切な設定をしたあと右下の「Launch node cluster」を押下すればデプロイ用のVMが作成されます。 **注意する点としては、作成後のNodeのステータスが「Deploying」から「Deployed」になるまで利用できません。**



#TutumにService(Dockerコンテナー）を登録する
ServiceタブからデプロイしたいDocker hub上のコンテナーリポジトリを登録します。
Service管理画面(URLがコンテナー)
https://dashboard.tutum.co/container/list/

「Create Service」を押下すると、「Image selection」画面に遷移しますが、ここで、「Public repositories」タブを選択するとDocker Hubからデプロイするイメージを選択できます。
あとはポチポチしていくだけですが、Webアプリのコンテナーの場合、「Ports」の設定で「Published」にチェックを入れないと当然アクセスできません。
![ports](https://qiita-image-store.s3.amazonaws.com/0/20175/3fae75dd-181f-5499-d051-6ebdd4aff11f.png "publish.png")



#Docker HubにTutumのTrigger URLを登録する
ここまでくればもうほぼ完了です。作成したServiceを選択すると、画面中央に並ぶメニューから「Triggers」タブを開きます。
![設定画面](https://qiita-image-store.s3.amazonaws.com/0/20175/ca7ca0c0-0170-a000-2851-d427c7c370b6.png "trigger.png")

そこで適当な名前で「redeploy」タイプのTriggerを「Add」ボタンで作成すると、URLが生成されます。
![Trigger URL生成](https://qiita-image-store.s3.amazonaws.com/0/20175/3fd55743-b627-9018-eef3-dd6e26eea3e6.png "tr.png")

このURLをDocker HubのリポジトリにあるWebhooksタブに登録して完了です。
![WebHook](https://qiita-image-store.s3.amazonaws.com/0/20175/ceeeb701-d4a2-e6a9-28f0-8eee0c81427d.png "WebHook.png")




以上でDocker Hubリポジトリに変更があるたびに、TutumがAzureのホストVMに対して新しいDockerイメージをデプロイしてくれるようになりました！！

---



#参考


Dockerコンテナを手軽にデプロイしてくれるサービス「Tutum」を試してみた
http://qiita.com/honeniq/items/a4b655e9a92d1fe84ffb