Engineer in Tokyo

Rebuild.fm #83 のメモ

rebuild.fmの今回のゲストはCoreOS Meetup Tokyo@deeetさんでした。最近、CoreOS Meetup が話題になっていて、僕もCoreOS Meetup Tokyo #1で発表することになっているから、今回の rebuild.fm に興味深く聴きました。

僕が気になっていたのがこんな感じです。

Appc は一つのコンテナに複数のプロセスを実行できる

これは確かに Appc と Docker の大きな哲学的な違いだね。複数のプロセスが同じマシンでともに動くというデザインパターンが多いのが複数の関係の強いプロセスをともに動かせるユースケースだと思います。これは確かにそうで、1周間で20億のコンテナを立ち上げるGoogleでは確かにこうパターンをよく使っている。けど、僕はどっちかというとDockerのコンテナとプロセスが1対1のパターンのほうが正しいと思っている。

なぜかというと、一つのコンテナに複数プロセスを入れるとそのプロセス郡に一つのcgroups/namespaceに含まれるため、細かくリソースを管理することができない。プロセスがともに動いているとしても、リソースを取り合ってしまう可能性が出てくる。

じゃ、こういうパターンがよくあるんだけど、どうやって解決するのか? Kubernetes ではこの問題を解決するために Pod という概念があります。 Pod は同じマシンで、ボリュームを共用するコンテナ郡。このコンテナはともに動いていて、ともにクラスターにスケジュールされている。これで、一緒に動くプロセスを定義できるし、柔軟にリソース管理ができるので、Podのモデルが一番いいんじゃないかなと思っています。

Docker レジストリについて

プライベートイメージに載っけられるDockerリポジトリがほしいけど、DockerHubにプロプライエタリ認証をかぶってほしくないのが確かにそうだ。Pythonパッケージもそうで、PyPiに載せたくないパッケージを自分用のリポジトリにアップして、アプリをデプロイするときにそのリポジトリからパッケージを落とすようにする開発者が多い。プロトコールが糞だったけど、自分用のOSS PyPiサーバーがいっぱいある。 Google Cloud を使っている方は、Google Container Registryを使うといいと思うけど、Google Cloud使ってない方は、やっぱり自分用のDockerレジストリを立てるといいんじゃないかなと思いました。

OSSプロジェクトと会社名は別にするべき

宮川さんはDockerが会社なのか、コンテナエンジンなのか、dockerサーバーなのか、レジストリなのかわかりづらいと言っていて、ElasticSearchって会社がElasticに会社名を変えたみたいにDockerも会社名を別にしたほうがいいのでは?と言ってました。僕もわからなくもないと思ったんですが、ちょうど最近、反対の声を聴いて 面白かった。この記事では会社名を変更して、フォーカスを広げるようになるとOSSプロジェクトがどんどん更新されなくなっちゃうと恐れている。この考え方もわからなくもないなと思ったので、コミュニティのリーダーシップはいろいろと難しいところあるよなと思った。

まとめ

今まで、あまり聴かなかったけど、今回の rebuild.fm は面白かったので、これからもっと頑張って聴いてみようと思う。日本語でこの質のあるコンテンツはなかなか珍しいと思うので、ポッドキャストじゃなくてもいいので、こういうのが増えるといいなと思った。