Did Docker Win?

Cloud Build は随分と Docker 中心の製品である。 まずデフォルトのビルド成果物は Docker イメージという前提がある。そしてビルドに使うツールも Docker イメージとして提供されており、ユーザも自分のイメージを使ってビルドステップを足すことができる。

Cloud Functions は特に Docker は出てこないが Cloud Run や App Engine Flex は Docker である。そして言うまでもなく K8S/GKE は Docker イメージを動かす環境である。

など、GCP はなにかと Docker を要求してくる。GCP はコンテナ推しクラウドなのでややバイアスはあるが、とはいえ自分がボンヤリしている間に世の中の Docker 必須な雰囲気はずいぶん広まっていた。

4-5 年前, Docker の浸透度はここまでではなかった気がする。細々と競合っぽいやつが現れたり現れなかったり、どうなるのかと思っていた記憶がある。しかし気がつけば世の中のコンテナは Docker 一色。企業としての Docker のもうだめっぽい雰囲気との対照がすごい。

雑に調べた自分の理解によれば・・・

  • あるとき Docker が OCI という標準化団体をつくって container image のフォーマットを標準化するといいだし、そこに競合および同業者を巻き込むことに成功した。結果としてコンテナ業界にあった Docker ロックインへの不安が和らぎ adoption が進んだ。これは K8S が CNCF を作ったのと似たようなものである。
  • ついでに主要な競合であった CoreOS は RedHat に買収され, RedHat は IBM に買収され、現在の IBM はデファクトスタンダードに楯突いたりしない会社なので、結果として Docker やっつけるぞみたいなギラギラした人々がいなくなった。
  • クラスタ管理分野での K8S の勝利も Docker 普及の助けとなった。

というかんじで現代に至ったらしい。あってる?

しかし K8S が Docker に依存するとか俄には信じがたい・・・と思って調べると、彼らは Docker と自分の間に cri-o / CRI というレイヤを挟んでコンテナのバリエーションを吸収している。そして GKE は実際に Docker でないランタイムを使うオプションがある。しかし開発者はふつうに Docker でイメージを作って push できる。なぜなら GKE のランタイムは Docker がつくったイメージ、おそらくだいたい OCI 準拠、を実行できるから、ということらしい。あってる?

自分はそんなに Docker 好きじゃないし特に使いみちもなかったのでいつもコピペと SO だのみでだましだまし使ってきた。でもイメージフォーマットは定着したようだし開発者が手元で使うツールとしての docker コマンドも特に良い代替品が出て来る見込みは薄い。もうちょっと流暢に使えるよう労を割いてよさそう。

Docker 社が Microsoft か IBM あたりに買収されればもっと心穏やかになれるのだが。


追記

などと書いた矢先に社長が変わった: Steve Singh stepping down as Docker CEO | TechCrunch