/var/log/jsoizo

メモ帳 技術とか趣味とか

Docker実践LT 2015-10-14

行ってきた。勉強会発表デビュー戦。

connpass.com

発表について

割と戦える領域のトピックだったし、デビュー戦の割には喋れたんじゃないのと思う。

当日朝までdrone.io(v0.3)の docker buildプラグインでハマリ、結局うまく行かず。Docker in Dockerでやることにした。個人的にはDocker in Dockerってあまりかっこいいと思ってなくて(※ ここでいうDocker in Dockerとはネストしている状態のことを指す)、子をprivilegeモードで起動しつつ子は親ホストのsocketを叩くみたいになっている方が美しいと考える派である。なので若干の悔しさがあるが、それは未来頑張るとして、一旦はやりたかったことがやれたから良かったかなと。

drone自体は結構いいツールで、Dockerを前提にしたイマドキのCIって感じ。発表でも喋ったが次期バージョンアップで大分洗練されて出来ることが増える。gitterでも盛んにディスカッションされているし、OSSなCIの中では一番いいと思っている。ガンガン使ってPRでも出したいくらい(golang分かんねけど)。会社のやつはこの週末の内にv0.4にあげてみようと思う。

他の人の発表について

自分のことで頭いっぱいで他の人の話はあまり聞けてないから覚えていることをメモレベルで。

  • Dockerを開発環境に導入した話
    • 私の環境と同じ。結局docker-machineさえありゃええねん
    • composeは便利よね。F81ではdocker runを叩くshを作ってやってるけど、汚くなってくるからYAMLファイルをgitで管理するのが美しいし、そうしたい。
  • AWS Elastic BeanstalkでDockerを動かせた
    • Beanstalkの画面扱いづらそうだなぁ…
    • BeanstalkとEC2 Container Engineどっちがいいんだろって思った
    • Beanstalkのほうがよりやれることが少ないという理解
  • Build your APK beyond Docker
    • x86Androidエミュレータをリモートで操作する話
    • Dockerはプロトコル
    • Dockerコンテナって形で抽象化されていればどこでっていう場所の問題が無くなる良さはあるよね。所謂冪等性。
    • write once run run anywhere的な
  • 非アプリエンジニアによる 【初級】kitematic hack
    • kinematicを初めて聞いた
    • kinematic : docker-machineのGUI, dockerhubだけしか対応していない
    • Electron
    • このhackではマイクラコンテナを非表示にするってのをやってたが、dockerhub以外の所からpull出来うようにhackも出来そう
  • Docker ライフサイクルイベントフック
    • docker rm $(docker ps -a -q) を本番で叩くのは雑。 F81では結構やってる…
    • や、CloudFormationでサーバ建てるのに時間がかかりすぎるのが悪いんや。と言い訳しておこう
    • dockerのAPI直接叩いたことなかったしやってみようかな
    • docker-pluginsは楽そう
    • sbt-musicalみたく、dockerでビルド中に音楽を流すとか思いついた
  • DockerでGUIアプリケーションを動かす
  • 毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
    • 2000個はやべーな...
    • Side CIではGitHubのPRにフックしてコードを静的チェックしている
    • 突然死はごくたまに遭遇したことあるけど、いっぺんに来るとかこえーな…
    • ゾンビ化コンテナはcronで定期的に消している
    • この辺の運用は会社によって違いそうなので本番運用系で各社どうしているのか聞いてみたい
    • devicemapperつかってるとディスク足りてるのに足らないって出る
    • drone検証している時、devicemapper遅い疑惑あったし、使わないほうがいいかもね
      • CentOSでdockerいれるとデフォルトでdevicemapper
      • Ubuntuだとaufs
      • droneって起動時にベースイメージからCI用のイメージ作って実行してるんだけど、その処理速度がUbuntu > CentOSだった
      • dockerのバージョンは同じなのでFS問題かと
      • 次回のネタとして天下一FS武闘会でもいいかもしれない
    • CoreOSだとoverlayfs, aufsよりはいいと聞いたことある。違いがよく分かってない
  • docker swarm 触ってみた
    • 気になるネタなのに自分の1つ前のセッションだったから全く記憶に無い
    • swarmのデモ.立ち上げてクラスタにjoinしたりleaveしたり
    • spark動かす時の基盤に出来ないかな?って思ったけど"swarm使わないほうがいいよ。未だベータだし"と聞いてうっってなった
    • とはいえMesosもハマりそうで嫌だし...悩みのタネになりそう

まとめ

まわりレベル高いセッションあってビビった。 とは言えまったく歯がたたないレベルかというとそうでもなくて、とても良い刺激。 Dockerの運用は結構会社によって違いそうで、F81ならホストで男気sh実行みたいな感じだし、だれだったかはホストOSでは何もしないポリシーだった。この辺りはノウハウが未だ溜め途中だと思うので積極的にシェアしていくといいかもね。

外部勉強会で発表するのって、教育のジレンマで凄く学べる。マサカリ飛んできたら怖いしね。 発表する前は緊張するもんだが、喋り始めるとなんてこたぁ無いんで、ビビらず飛び込んでいけばいいと知った。

まだ次回作の予定はないようなので、引き継いで弊社開催にしてもいいなぁと思った次第。定期的に会ってコミュニティを育てていったほうが底上げになりそう。

蛇足

終わった後で飲みに行って、その場で私以外全員Railsの人だった。 結構思想違うなぁってのを感じた。良くも悪くも実装はフリーダムって感じ。フリーダムなんだけどRailsというレールには乗らなきゃdisられる。 Scala界隈とは逆だなぁと思うと同時に、LL言語からScala使いはじめる人はそのフリーダムな感じが嫌になって来るのかも。