俺とdockerとtdiaryとkubernetes
TRANSCRIPT
俺とDockerとtDiaryとKubernetes2014-12-20 kanazawa.rb PhalanXware 加藤真透
ProfileName ふぁらお加藤 / @PharaohKJ
Hobby PENTAX K-5 / subculture
Job & Works PhalanXware (Freelancer)
OCR system .com / .net
ISDB-T MFC / Linux C++
Social Game PHP / Java
3D Tool OpenGLES(Mali)
ERP+CRM AngularJS / Cordova
tDiary 2.1でましためでたい
だがしかしカテゴリ周りでエラー。 どうもRuby 1.9系でJSONライブラリの非互換性で動かない模様。 ※現状(2014-12-20現在)ではなおっている模様
もちろん俺のサーバはRuby1.9.3さくらVPS CentOS 6
Ruby 1.9系 (笑)ぐぬぬ
他のWebAppもRuby 2系要対応他にもいっぱい動いてて困った・・・。
共存する仕組みrbenv、rvm、gemならbundler、、、、。 いろいろあるけど、あきらかに現環境を保ってだと考慮する必要がある。
そうだ俺たちにはDockerがある
Dockerコンテナの管理ソフト
What is コンテナ「ハイパーバイザー型の仮想化」に対して、「コンテナー型の仮想化」
http://www.atmarkit.co.jp/ait/articles/1405/16/news032.html
超ウルトラハイパーデラックスざっくり言うとハイパーバイザー型 まず仮想マシンプロセスを動かす→その上にOSを入れる→その上でアプリを動かす
コンテナ型 OSも含めて全部一発でプロセス
作ったhttps://registry.hub.docker.com/u/pharaohkj/tdiary/
ubuntu base GFM-Style Ready tDiary version 4.1.0.20141126 Powered by Ruby version 2.1.5-p273
docker run -p 80:19292 pharaohkj/tdiary
Dockerfileで定義 しdocker runでインスタンスを作るみたいな感じ
そのコンテナにどうやって引数を渡すの?docker run時にいろいろ引数を設定して渡す。 例えば、ポートとか、ディスクとか、接続にいく外部サービスとか。 docker run -e “SERVICE_PORT=100” など
俺のtDiaryコマンドdocker run -p 10080:19292 -v /Users/pharaohkj/dockerwork/tdiary/data/tdata_gem:/var/www/data -t -i pharaohkj/tdiary
Dockerコンテナ上で動いている19292を俺のポート10080で設定し ディスクは~rdata_gemをコンテナ上のdataにマウントする
そもそもコンテナってプロセスぽいので1サービス、1コンテナという感じ
http + KVS + DB 3コンテナは普通いるよねJK的にはこの3コンテナはいるでしょ。
コンテナ相互の情報や依存、パラメータ、、、それぞれの起動時のパラメータや、動いているの思い出したりして 管理するの無理っす。キツイっす。
コンテナ運用をJSONで定義してAPIで叩けるつまり、どういうことなんです?
つまりそのJSONを管理すればコードで、 インフラを定義できる。
コンテナの型はDockerfileでコード化し インフラはKubernetesでコード化できる。
やったね。
2014-12-20 kanazawa.rb PhalanXware ふぁらお加藤
ご清聴ありがとうございました