🕶️

docker社についてのメモ

2021/07/14に公開

概要

docker及びdocker社について調べてみる。

dockerとは

Dockerは、コンテナ仮想化を用いてアプリケーションを開発・配置・実行するための
オープンソースソフトウェアあるいはオープンプラットフォームである。
概要はwikipediaが十分詳しい。
https://ja.wikipedia.org/wiki/Docker

コンテナ型仮想化

dockerのコア技術がこの仮想化技術である。
ホスト型、ハイパーバイザ型の仮想化と異なり
仮想OSを必要とせず、OSは実際のホストサーバのOSを利用する点が特徴と言える。

メリット

仮想OSを構築する必要がないため、軽量な仮装環境を実現できる。
別環境への移植が容易。

デメリット

依存するホストOSはLinuxに既定されるため、基本的にはLinux上でしか動かせない。
また、ホストOSにカーネルレベルの変更が発生した場合はコンテナもその影響を受ける。
 →完全に独立した仮想化ではない
 →とは言えカーネルレベルの変更など発生することは稀な気がするので、
あまりこの点のデメリットを感じることは少ないかもしれない。

運営

dockerはdocker社が開発したOSSであり、コミュニティエディションは無償で公開されている。
過去にはdocker社によるエンタープライズエディションもあったが、
現在はdocker社から別会社のMirantis社に事業売却されている。
Mirantis

エンタープライズエディションって?

dockerがサポートするプラットフォームがコミュニティエディションと異なる。
Redhat Linux やOracle Linuxなど有償のLinuxプラットフォームもサポート対象となる。
対応プラットフォームの違いは以下を見ると参考になる。
docker公式

docker社のビジネスモデル

過去にはコンテナオーケストレーション製品や
dockerのエンタープライズエディションで収益をあげようとしていたが、
うまく収益化できずに、エンタープライズエディションに至っては前述のように売却した。
現在はデベロッパー向けのツールに注力している。
つまりは、docker hubの有料版などで収益をあげていきたいのだと解釈。

Kubernetesとの関係

そもそもKubernetes内部のコンテナランタイムエンジンにdockerを利用している点からも
Kubernetesはdockerありきの構成と言えなくもない。
しかし、dockerランタイムの非推奨化が発表された。

Docker support in the kubelet is now deprecated and will be removed in a future release. The kubelet uses a module called "dockershim" which implements CRI support for Docker and it has seen maintenance issues in the Kubernetes community. We encourage you to evaluate moving to a container runtime that is a full-fledged implementation of CRI (v1alpha1 or v1 compliant) as they become available.

これは今までのようにDockerランタイムをそのまま使う
(Kubernetesではdockershimという機能で実現)のではなく
dockerの必要な機能のみを利用するように構成を変更したというだけの話。
containerdというのがその機能だが、
これはCRIランタイムと呼ばれ、
コンテナ管理の共通技術仕様に基づいて作られた機能で、dockerの機能の一部。
この変更により、docker以外のCRIランタイムも利用できるように
Kubernetesの仕組みを汎用化された。
dockerのcontainerd以外のCRIランタイムがKubernetesで利用できるようになり、
Kubernetesのdockerへの依存度が低下したことにより、
Kubernetes利用者側の構成選択肢が増えた結果となる。
今までと同様にdockerも利用できる。

Discussion