2017年2月7日火曜日

さくらさんのコンテナホスティングサービス Arukas を使ってみた

概要

タイトルの通り使ってみました
dockerhub で公開されている sinatra アプリを動かしてみます
執筆時点ではまだ無料で 3 コンテナまで動作させられるようです

環境

  • CentOS 7.3 (64bit)
    • Docker 1.12.6
  • Arukas 2017/02/07 時点

ユーザ登録

https://app.arukas.io/sign_up からサインアップしましょう
メールアドレスがあれば登録できます
Github アカウントでも登録できるようです

API キーの取得

ログインした状態で https://app.arukas.io/settings/api-keys にアクセスすると API キーが取得できるのであらかじめメモしておきましょう
あとで使用します

コンテナを立ち上げる

少し準備が必要なのでそれについて触れておきます

とその前に

Arukas の場合、ECS のようにコンテナホストを作成したりクラスタの設定をする作業がありません
おそらくアカウントに紐付いてバックエンドで自動でコンテナホストが作成されているのだと思います
なので、いきなりコンテナを立ち上げることができます

で、このコンテナを立ち上げる方法がコンパネか専用の CLI があるのですがコンパネは簡単なので今回は CLI から行いたいと思います
で、この CLI が少し特殊でローカルの環境でコンテナを立ち上げてそのコンテナ上で Arukas に対して CLI を実行する感じになります
Arukas ではこの CLI の仕組みを「Dockernized CLI」と呼んでいました

なので CLI を使って Arukas 上にコンテナを立ち上げる場合はまずローカルで docker が動作する環境を作る必要があります
今回は環境に記載の通り CentOS7 + docker の環境を事前に構築しています

立ち上げる

では前置き長くなりましたがコンテナを立ち上げてみましょう

コマンドが長いですが以下で Arukas 上にコンテナが立ち上がります
初回実行の場合コンテナのデプロイまでに時間がかかるので待ちます (おそらく Arukas 上で docker pull などをしているためだと思います)

docker run --rm -e ARUKAS_JSON_API_TOKEN="api-key" -e ARUKAS_JSON_API_SECRET="api-secret" arukasio/arukas run --instances=1 --mem=512 --app-name="quickstart-ruby" --ports=4567:tcp arukasio/quickstart-ruby

api-key と api-secret の部分は事前に取得した API キーの情報に書き換えてください
何をしているかというと

1 dockerhub にある arukasio/arukas というイメージをローカルに持ってきてコンテナを立ち上げます
2 ローカルで立ち上げたコンテナに -e ARUKAS_JSON_API_TOKEN="api-key" -e ARUKAS_JSON_API_SECRET="api-secret" の環境変数の値を渡します
3 ローカルで立ち上げたコンテナに引数として run --instances=1 --mem=512 --app-name="quickstart-ruby" --ports=4567:tcp arukasio/quickstart-ruby を与えることで最後に指定した arukasio/quickstart-ruby というイメージを Arukas 上にデプロイします

ということをしています
3 で指定した run のオプションはいろいろと変更することができます
また run 以外のコマンドとして docker っぽい stop, start, rm, ps などが提供されています

コンテナを確認する

コンテナができたか確認するために ps を実行してみます

docker run --rm -e ARUKAS_JSON_API_TOKEN="api-key" -e ARUKAS_JSON_API_SECRET="api-secret" arukasio/arukas ps

以下のような感じで表示されると思います
(カラムとのインデントが合っていないのが若干気になりますが、、)

CONTAINER ID    IMAGE   COMMAND CREATED STATUS  NAME    ENDPOINT
299e8ca8-66a8-4acf-9014-baf028bc47ec    arukasio/quickstart-ruby                2017-02-07T09:03:41.624+09:00   running         angry-ptolemy-5159.arukascloud.io

動作確認

今回 Arukas 上で起動したアプリは sinatra ベースの Web アプリです
curl でアクセスしてみると Hello World が返ってくると思います

curl https://angry-ptolemy-5159.arukascloud.io/

起動したコンテナにはダイナミックに DNS が振られかつ https でアクセスできるので、その点は嬉しい点かなと思います

おまけ

コンテナを停止
起動したい場合は stop の部分を start にすれば OK です

docker run --rm -e ARUKAS_JSON_API_TOKEN="api-key" -e ARUKAS_JSON_API_SECRET="api-secret" arukasio/arukas stop 299e8ca8-66a8-4acf-9014-baf028bc47ec

コンテナを削除

docker run --rm -e ARUKAS_JSON_API_TOKEN="api-key" -e ARUKAS_JSON_API_SECRET="api-secret" arukasio/arukas rm 299e8ca8-66a8-4acf-9014-baf028bc47ec

最後に

Arukas を試してみました
おそらく Dockernized CLI 的なことをしてるのはセキュリティの観点からだと思います
コンテナに API キーを渡すことでその API キーを使ってコンテナを立ち上げるということがしたいので独自の CLI を作っているのだと思います
デフォルトの docker コマンドだとそういった認証機能がリポジトリ用にしか用意されていないので、そのせいだと思います

あと気になったところとしては以下がありました

  • プライベートリポジトリは提供していないのでイメージは必ず dockerhub で公開する必要がある
  • docker-compose には対応していないっぽい
  • 合わせて network, volume, swam は使えないっぽい
  • ドキュメントやコンパネは見やすい

あたりでしょうか
複数のコンテナを立ち上げることはできるようですが link は使えないようです

シンプルなサービスではあるのでホスティング的に使うには良いかもしれません

参考サイト

0 件のコメント:

コメントを投稿