Docker Cloud 1.0登場へ。買収したTutumをリブランドしDocker Hub と統合
http://www.publickey1.jp/blog/16/docker_cloud_10.html
そういえば去年辺りにTutumを買収したというニュースがあったような… すっかり忘れていたというか、Tutumとしてはスタートしてたのを知りませんでした!何かに負けたような気持ちでとても悔しいのでとりあえず使ってみる事にしました!
※今回は使ってみた的な回なのでスクリーンショットが多めです。
なお、DockerCloudについての使用方法等については、普通のDockerの公式ドキュメントに「DockerCloud」という項目がありますのでそちらを確認すれば良いようです。
DockerCloud
https://cloud.docker.com/
Docker公式ドキュメント
https://docs.docker.com/
ドキュメントの方は後でじっくりと見る事にして、まずはDockerCloudにアクセスしてみましょう。画面の少し下の方を見ますと料金的な事が書いてあるようですので確認します。
どうやら1ノード1リポジトリまでは無料というのようです。実際に使う場合は1ノード1リポジトリでは足らないはずですので、まあお試しトライアルは無料ですよって事ですね。とりあえず何かに安心した所で右上のloginボタンでログインしてみます。
ログイン後のWelcome画面です。チュートリアルウイザード的な画面ですね 。とりあえずはこの流れでボタンをポチポチ押しつつ進めて行けば良いようです。
右下の辺りにツイッターとかフェイスブック的なノリで おじさんがHi! 等と親しげに話しかけてきております。友達承認するかどうかはこれから決めるのさ!的な思いを胸にとりあえず×ボタンを押下しておきましょう(=゚ω゚)っ ポチ
とりあえずおじさんは置いておきつつ、最初の「Link a cloud provider」を進めてみます。
簡単に言いますとバックエンドプロバイダとしてAWSやAzure等色々使えるので、使いたいプロバイダのIDとパスワード等の必要な情報を登録してリンクするんだ!という事ですね。とりあえず今回はAWSで試す事としましてAWSのIAMで作成したキー情報を入力しました。 なお、DockerCloud上から色々とAWSを操作する関係上、使用するIDには以下のようなロールを設定しておく必要があるようです。(設定し忘れて権限が足らない等の場合は、その都度右上の方に赤い吹き出しでその旨の通知が出るようです)
"Action": [
"ec2:*"
"iam:ListInstanceProfiles"
]
続きましてWelcome画面で言う所の「Deploy a node」に進みます。ここではクラスタとして使用するノードを設定するようです。
今回はAWSですので、配置するリージョンやインスタンスタイプやそのノードで起動するインスタンス数等を設定するようです。前述のようにPeoviderとしてAWSのキーを設定してある訳なのですが、VPCのIDとかは自動でAWSから取得してくるようです。すごい便利なのですけどちょっとだけ侵入されているような気分です。なお、あとでデプロイで使用するタグも指定出来るようです。
AWSのECSやDockerSwarmと似たような感じであるようなので、とりあえず感覚でポチポチと入れて右下の「Lounch node cluster」を押してしまいます。(=゚ω゚)っ ポチ
Deploy中となりました。

EC2の方にインスタンスを作りに行ってるのかなとEC2の方に確認に行きますと…
ちゃんとEC2インスタンスが作られています。ちなみに何のイメージを使っているのだろうと確認した所、MarketplaceではなくコミュニティAMIの方にそれ用のイメージが用意されていたようです。
中身のOSは何なのかとかは今の所謎です。セキュリティグループとかも勝手に作成されて適用されていますが、ほぼ全開放状態であるような… キーペアとかも勝手に作られているようで、便利なんですが、なんとなくちょっぴり怖かったりします。まあ、慣れたら気にしなくなるんだろうなとは思いますが、後で色々と調べなければいけない事は多そうです。
続きましてWelcome画面で言う所の「Create a service」に進みます。ここでは「サービス」の定義を行うようです。
オフィシャルなコンテナに関してはそのまま直接選べるようになっているようです。その他のリポジトリのコンテナも特に問題なく使用出来るようです。
せっかくですので本ブログの「ConsulのDockerコンテナを作成&公開してみました」の回で作成・紹介しました、consul-serverのコンテナを使用する事にします。
サービス定義の詳細設定等の画面に進みます。どのノードに展開するか決める為のタグ等もドロップダウンリストに自動的に入っているので楽ちんです。

ポート番号等はDockerfile内でEXPOSEしてあるポートが自動で一覧表示されているようです。ホストノードにマップしたいポートはここで選択しておく必要があるようです。
Autodeployなんて項目もあります。これはサービスの設定等を更新する必要があるのか、DockerHub上で新しくなったら勝手にやるのか、まだちょっと分かっていません。
後者だとすると、GithubからDockerHubの自動ビルド連携機能はDockerHubに元からありますので、その流れでデプロイまでしてくれるとなるとなかなか面白そうです。もっとも、自作コンテナ等でバグを混入した場合に無差別絨毯爆撃のように全コンテナをバグだらけにしてくれるのかもしれませんので注意がいりそうですが(=゚ω゚)
設定的にはまだ続きがあるようで、左下の 「Next: environment variables」を押下して環境変数の設定に入ります。
定義済みの環境変数に関してはわかりやすく一覧表示されているようで、変更等も見たまんまのイメージで直接変更出来るようです。
ちなみにconsul-serverコンテナは設定項目を環境変数で行えるようにというコンセプトで作っている為、設定出来る項目に関しては全て事前にENV定義していたりします。おかげ様でこの画面でボタンをポチポチするだけで全設定が行えてしまうようです。どうやら時代を先取りしすぎてしまったようです(=゚ω゚)y-~
※実際はCONSUL_ADVERTISE_ADDRの値を固定的に入れる必要がある等、そのままでは自動化が難しい部分もあります
とりあえず冗談はさておき、環境変数のCONSUL_DEVをtrueにして単独で動作するdevelモードで起動するように設定しつつ、左下の 「Next: volumes configuration」を押下してボリュームの設定等を行います。

volumeに関してもイメージに定義済みの物は自動で表示されているようです。分かりやすくて楽ちんです。最後に右下の「Create service」を押下してサービス定義の完了です。
定義されたサービスはこんな感じでサービス一覧に表示されます。
後は見たまま、サービスの画面でスタートボタンを押せばサービスが起動するようです。
ログとかもちゃんと見れていますね、素晴らしい(=ノ゚ω゚)ノ ベンリ!
とりあえず今回は初回の使ってみた的な回なのでここまでとしておこうかなと思います。今回の感想としましてはAWSのECSやdocker swarmと比較して、それらよりもかなり便利というか洗練されているような印象を持ちました。第一印象的には最近では珍しい位の好感触度です。
しかし、このデプロイソフトウェアという分野は罠だらけというか、今まで散々泣いて来た分野なので、実際に使って行けるのかどうか見るにはまだまだ色々調べなければならないかなという所です。
とりあえずは今後も定期的にチェックする対象にしておこうかなっと。(=゚ω゚)