コンテナとは?
コンテナとは、「アプリケーションの動作環境を仮想構築する技術」です。
コンテナには、ホストとなるOSとともに、アプリケーションやライブラリなどをまとめることができ、
コンテナ自体をチームで共有することができます。
そうすることで、同じ動作環境をゼロから構築するといった無駄な作業を省けるというメリットがあります。
仮想マシンとの比較
仮想化ソフトウェアとコンテナは似ていますが、最大の違いは、コンテナは「1つの単位としてシステムから分離できる」という点です。
仮想化ソフトウェアは、1つの仮想環境に、アプリケーションやライブラリなどの、すべてのリソースを構築していく必要があり、
毎回OSまで作るというリソースが無駄になっています。
異なるOS環境を使いたい場合は問題ないのですが、実際の開発現場ではOSは同じにしたい場合の方が多いので、ここが課題となっていました。
コンテナの利点
コンテナは、「1つの単位としてシステムから分離できる」ため、
仮想マシンのように複数のOS(ホストOSやゲストOS)が実行しているシステムを1つにまとめて管理できます。
OS周辺の環境は共通利用しながら、アプリケーションを動かすための「CPU」や「メモリ」はコンテナ単位で管理できるため、
リソースを無駄に使うことがなく、効率化されました。
コンテナの問題点
上記のように効率化をもたらしたコンテナですが、別ホストで運用する際に問題が発生しました。
コンテナはホストOS毎に独立した環境を構築するため、別ホストで運用・連携する場合には管理が複雑化するといったものです。
この問題を解決するために生まれたのがKubernetesです。
dockerとは?
Dockerは、コンテナを単一ノードで実行するソフトウェアのことです。
表:メリット・デメリット
Kubernetesとは?
Kubernetesとは、コンテナの運用管理と自動化を行うために設計されたオープンソースソフトウェアのことです。
KubernetesはDockerをはじめとするコンテナを操作・管理します。
コンテナは各アプリケーションを実行するものですが、コンテナ自体を管理することはできません。
また、別サーバーと連携するといったことができないため、複数ホストでコンテナを運用する際は管理が複雑になります。
Kubernetesは、こういった課題を解決するために生まれました。
この「複数のホストでコンテナを運用する際に、ネットワークやストレージなどの連携管理をする仕組み」を、
「コンテナオーケストレーション」といいます。
表:メリット・デメリット
Kubernetesとdockerの違いは?
Dockerについてすでに学んでいる方なら、「KubernetesとDockerは何が違う?」と思うはずです。
KubernetesもDockerもコンテナを用いてアプリケーションを実行するソフトウェアという点は同じです。
そんな両者の大きな違いは主に下記の点です。
- 実行される場所
- 利用目的
実行される場所
Kubernetesはクラスタで実行される
Dockerは単一ノードで実行される。
「クラスタ」とは、コンテナの配置や削除を行うときに指示を出す部分
「ノード」とは、クラスタを構成している各サーバーを指します。
利用目的
Kubernetesの利用目的は各コンテナを管理することです。
Docker の目的はアプリケーションを各コンテナに分離することです。