Bluemix で Cloud Foundry Docker Support を使ってみた


Bluemix の Cloud Foundry のベース部分は、Docker をサポートしていて、オプション指定でDockerコンテナを起動できる。[1] それじゃ、Bluemix だって同じコアを使っているんだし、"bx ic ..." で起動するIBMコンテナを利用しないでも、CFの機能で、Dockerコンテナを起動できるんじゃないの？ 　しかし、Bluemix のマニュアルには記載が無いし、ダメもと、とコマンドを投入したら、出来ちゃいました(笑) *マニュアルに記載が無いため、Cloud Foundry のコアのお陰で、たまたま動作しただけの非サポートの機能かもしれませんので、ご留意願います。*


DockerHub に登録されている コンテナ・イメージ cloudfoundry/test-app を Bluemixで起動したログです。


~~~
imac:bluemix-test maho$ bx cf push takara-doc -m 128M --docker-image cloudfoundry/test-app
'cf push takara-doc -m 128M --docker-image cloudfoundry/test-app' を起動しています...

takara9@gmail.com としてアプリ takara-doc を組織 takara9@gmail.com / スペース dev 内に作成しています...
OK

経路 takara-doc.mybluemix.net を作成しています...
OK

takara-doc.mybluemix.net を takara-doc にバインドしています...
OK



takara9@gmail.com として組織 takara9@gmail.com / スペース dev 内のアプリ takara-doc を開始しています...
Creating container
Successfully created container
Staging...
Staging process started ...
Staging process finished
Exit status 0
Staging Complete
Destroying container
Successfully destroyed container

1 個の中の 0 個のインスタンスが実行中です, 1 個が開始中です
1 個の中の 0 個のインスタンスが実行中です, 1 個が開始中です
1 個の中の 1 個のインスタンスが実行中です

アプリが開始されました


OK

アプリ takara-doc はコマンド `/test-app ` を使用して開始されました

takara9@gmail.com として組織 takara9@gmail.com / スペース dev 内のアプリ takara-doc の正常性と状況を表示しています...
OK

要求された状態: started
インスタンス: 1/1
使用: 128M x 1 インスタンス
URL: takara-doc.mybluemix.net
最終アップロード日時: Fri Aug 4 02:48:18 UTC 2017
スタック: cflinuxfs2
ビルドパック: unknown

     状態   開始日時                 CPU    メモリー        ディスク      詳細
#0   実行   2017-08-04 11:48:45 AM   0.0%   128M の中の 0   1G の中の 0
~~~


Bluemix ウェブ管理画面コピーです。ランタイムのビルドパックが、"noruntime" になっています（笑）
![スクリーンショット 2017-08-04 12.08.47.png](https://qiita-image-store.s3.amazonaws.com/0/42829/5e429aa3-e74b-4934-cf16-e703a99ac1e6.png "スクリーンショット 2017-08-04 12.08.47.png")


アプリURLをアクセスした画面です。 
![スクリーンショット 2017-08-04 12.10.33.png](https://qiita-image-store.s3.amazonaws.com/0/42829/72ddf7b9-0809-d005-749c-187d0a818739.png "スクリーンショット 2017-08-04 12.10.33.png")


下記、PUSH時のログで、17秒で完了しています。 Buildpack の様に、Detect, Compile, Release のステップが無いので、Buildpack より格段に早いです。

~~~
2017-08-04T12:12:48.94+0900 [APP/PROC/WEB/0] OUT test-app. Says Hello. on index: 0
2017-08-04T12:12:49.95+0900 [APP/PROC/WEB/0] OUT test-app. Says Hello. on index: 0
2017-08-04T12:12:50.47+0900 [API/8] OUT Updated app with guid 000423dc-a2f5-48fe-9ade-1da35dadab93 ({"name"=>"takara-doc", "memory"=>128, "diego"=>true, "docker_image"=>"cloudfoundry/test-app"})
2017-08-04T12:12:50.96+0900 [APP/PROC/WEB/0] OUT test-app. Says Hello. on index: 0
2017-08-04T12:12:51.83+0900 [API/5] OUT Updated app with guid 000423dc-a2f5-48fe-9ade-1da35dadab93 ({"state"=>"STOPPED"})
2017-08-04T12:12:51.86+0900 [CELL/0] OUT Exit status 0
2017-08-04T12:12:51.85+0900 [APP/PROC/WEB/0] OUT Exit status 143
2017-08-04T12:12:51.90+0900 [CELL/0] OUT Destroying container
2017-08-04T12:12:45.96+0900 [APP/PROC/WEB/0] OUT test-app. Says Hello. on index: 0
2017-08-04T12:12:54.02+0900 [API/0] OUT Updated app with guid 000423dc-a2f5-48fe-9ade-1da35dadab93 ({"state"=>"STARTED"})
2017-08-04T12:12:55.18+0900 [CELL/0] OUT Creating container
2017-08-04T12:12:53.86+0900 [CELL/0] OUT Successfully destroyed container
2017-08-04T12:13:05.85+0900 [CELL/0] OUT Starting health monitoring of container
2017-08-04T12:13:05.85+0900 [CELL/0] OUT Successfully created container
2017-08-04T12:13:06.27+0900 [APP/PROC/WEB/0] OUT {"timestamp":"1501816386.260451794","source":"test-app","message":"test-app.test-app.up","log_level":1,"data":{"port":"8080"}}
2017-08-04T12:13:06.27+0900 [APP/PROC/WEB/0] OUT {"timestamp":"1501816386.256762028","source":"test-app","message":"test-app.test-app.starting","log_level":1,"data":{"ports":["8080"]}}
2017-08-04T12:13:07.27+0900 [APP/PROC/WEB/0] OUT test-app. Says Hello. on index: 0
2017-08-04T12:13:08.17+0900 [CELL/0] OUT Container became healthy
2017-08-04T12:13:08.27+0900 [APP/PROC/WEB/0] OUT test-app. Says Hello. on index: 0
2017-08-04T12:13:09.28+0900 [APP/PROC/WEB/0] OUT test-app. Says Hello. on index: 0
~~~


# 参考資料
[1] Cloud Foundry Documentation Deploy an App with Docker https://docs.cloudfoundry.org/devguide/deploy-apps/push-docker.html