inductor's blog

nothing but self note :)

Docker終焉は別にしないと思うけど、知っておいたほうがいい知識の補足を書く

Docker一強の終焉にあたり、押さえるべきContainer事情 を読んで漠然とDockerが終わるって思った人、素直に手をあげてください。別にDockerは終わりません。なんかむしろWASMとかんばるぞって息巻いてて可愛いので頑張って欲しいと個人的には考えています。

その昔、Kubernetes 1.20からDockerが非推奨になる理由 - inductor's blog を書いたら炎上しました。最初の記事の書き方が良くなかったという反省はあるにせよ、世間一般で「Dockerは開発環境で使うやつ」という認識があまりにも広がりすぎているというのが良くわかる勉強の機会になりました。

逆を言うと、みなさんがこれらの記事を読む時には、Dockerという言葉に含まれる意味に注意して読んでいただきたいと思っています。Dockerには大きく分けて以下の意味が含まれると僕は考えています。

  1. Dockerイメージを作ったり動かしたりする開発者のためのDesktop tool
  2. Dockerコンテナを実行するためのDocker server(ECSとかKubernetesとか含む)
  3. その他、Docker Hubやイメージスキャンなど、Docker社が提供する仕組み

ttnt_1013さんの元記事ではこれがごっちゃになっているのがわかりにくい原因になっている気がします。僕が昔書いたDocker非推奨の話はほとんどが2だけの文脈で、1と3は別にこれまで通り使えばいいよって話です。正直今もそれ自体は大きく変わってはいないでしょう。強いて言えばDocker社のエンプラ向けライセンスの制限やDocker Hubのレートリミットなどを理由として、Rancher DesktopやLima、あるいはレジストリもGHCRなどに切り替えた勢力はいるとは思います。別にだからと言ってDockerを人類が使わなくなるわけじゃないし、皆さんが使っているCI環境では今後もDocker CE上でビルドが行われ続けるんじゃないでしょうか。

ちなみに、「Dockerの脆弱性や消費リソースなどの問題」が露呈するケースっていうのは僕は特にこれといって思いつかないので、記事で言及されていたことに違和感があります。これまでコンテナ関係の脆弱性で最も騒がれた大きなものといえばほとんどがrunCレベルの脆弱性で、それはもうDocker使おうがContainerdだろうが選択肢なく更新を強要されるレベルの話でしたし、KubernetesがDockerを使うことをやめた一番の理由はインターフェースの統一が最後まで結局政治的にいかなかったことだと思っています。DockerがCRIを自分で生やしていたら別にKubernetes側も積極的にサポートを切るつもりはなかったでしょう。そのへんは少し標準化の経過を追ってみると理解が深まりやすいような気もします。

DockerとKubernetesのこれまでの関係性について知りたい人は、このスライドを読んでみてください。不明点は僕に質問いつでも気軽にしてください。

speakerdeck.com

短いですが、思うところがあったのでちょっとした補足でした。