違いを解説君

あるゆる物事の"違い"をわかりやすく解説する情報マガジン

コンピューター

ITの違い

【コンテナ】KubernetesとDockerの違いをわかりやすく解説!

近年の仮想化技術として、『Kubernetes』と『Docker』の2つのキーワードをよく耳にしますね。

どちらも、『コンテナ』型仮想化を実現する上で非常に重要な技術です。

では、『Kubernetes』『Docker』とは、どんな技術なのでしょうか?

 

はなこ
最近、『Kubernetes』と『Docker』って言葉をよく聞くわよね。
どちらも『コンテナ』型仮想化を構築するための機能を意味しているよ。
たろう
はなこ
それぞれ、どんな役割を持っているか分かる?
そこまでは僕も知らないんだ。

いつか、勉強しなくちゃとは思っているんだけどね。

たろう
はなこ
それなら、これを機会にちょっと調べてみましょうよ。

 

今回は、『Kubernetes』と『Docker』の違いについて解説します。

これを読めば、『コンテナ』型仮想化技術について理解することができますよ。

スポンサーリンク

『コンテナ』型仮想化技術とは?

『Kubernetes』と『Docker』の違いについて解説する前に、『コンテナ』型仮想化技術がどんなものか、簡単に見ておきましょう。

 

仮想化技術自体は、昔からありました。

その誕生は、1999年の『VMware Workstation』になります。

この仮想化技術では、

ハードウェア上に『仮想マシン(Virtual Machine:VM)』を構築し、その上で様々なOSを起動させて利用する

という形式が使われていました。

それに対して、2013年頃に新たなタイプの仮想化技術が誕生します。

それが『Docker』という『コンテナ』型仮想化技術です。

『コンテナ』型仮想化技術では、OS上に仮想化のためのエンジンが動作し、アプリケーションの実行環境を仮想化する点が、従来のVM型仮想化と異なります。

仮想化技術の比較

仮想化技術の比較

上の図は、従来のVM型仮想化と新しい『コンテナ』型仮想化の違いを表したものです。

VM型仮想化の場合、仮想マシン上に複数のOSをインストールして動作させることができます。

OSは異なるものでもよいので、例えばWindowsとLinuxを共存させることも可能です。

しかし、OSからインストールして動作させるため、メモリやディスクなど、その分のリソースが必要になります。

『コンテナ』型仮想化は、OSは共通であり、実行環境が複数存在するイメージです。

そのため、利用できるOSは1つに限られますが、OSが共通になるため、

リソースの消費がVM側に比べて少ない

というメリットがあります。

 

VM型仮想化の例として『vagrant』と、『コンテナ』型仮想化代表の『Docker』を比較した記事も合わせて参照してみて下さい。

関連記事
matrix
vagrantとdockerの違いをわかりやすく解説!機能と使い分け方を紹介

仮想化技術について、どの程度知っていますか?   はなこ最近、会社でも仮想化技術を活用しようという話になってね。 いくつか試してみようと思っているんだけど、『vagrant』と『docker ...

続きを見る

 

『Kubernetes』と『Docker』の違い

仮想環境

それでは、『Kubernetes』と『Docker』の違いについて見てみましょう。

『Kubernetes』と『Docker』の違い

  • 『Kubernetes』は、『コンテナ』を効率よく連携させる管理ツールであり、『Docker』は、『コンテナ』を生成・稼働・削除するエンジンである。
  • 『コンテナ』自体は『Docker』だけあれば動作させることができる

 

『Kubernetes』は、『コンテナ』を運用するためのエンジンではなく、

それを効率よく連携させるための管理ツールの役割

を持っています。

『Kubernetes』の主な機能は次の通りです。

  • サービスの実行に必要な複数の『コンテナ』をまとめて配置する。
  • サービスの負荷に応じて、『コンテナ』を自動的に増減する。
  • 『コンテナ』を自動的にビルドする。
  • 『コンテナ』のバージョン管理とロールバック(前のバージョンに戻す機能)。
  • 複数のクラウド間での運用。
  • リソースの監視と制限の機能。

複数の『クラウド』を実行させなければならない場合、それらを1つずつ手作業で配置するのは手間ですし、ミスの原因にもなりますね。

これをまとめて配置できる機能を『Kubernetes』は持っているのです。

また、負荷に応じて『コンテナ』を増減させることも、自動でできるのは非常にありがたいですよね。

他にも、『コンテナ』そのもののバージョン管理を行ったり、さらには複数のクラウド間での運用をサポートしたりと、非常に多機能な管理ツールになります。

 

『Docker』は、

『コンテナ』を動作させるためのエンジン

であり、『コンテナ』型仮想化を実現する上では必要不可欠なものです。

『Docker』が、他の『コンテナ』型仮想化と比べて優れている点は、次の2つが挙げられます。

  • 『コンテナ』を複数の『イメージ』から生成できる。
  • 複数のOSに対応している。

『イメージ』とは、『コンテナ』を動作させるために必要な環境を一式揃えたファイルです。

通常、1つの『コンテナ』に対しては1つの『イメージ』が使われます。

しかし、『Docker』の場合は、複数の『イメージ』を重ね合わせて『コンテナ』を生成することが可能です。

 

例えば、Webサーバ-用の『イメージ』とメールサーバー用の『イメージ』がある場合、この2つのイメージを重ね合わせて、Webサーバー・メールサーバーの機能を兼ね備えた『コンテナ』を生成することができます。

さらに、Ubuntu用のライブラリが入った『イメージ』と、RedHat用のライブラリが入った『イメージ』を重ね合わせて、どちらの環境に対応したアプリケーションも動作させられる『コンテナ』を構築することまでできるのです。

これは非常にうれしい機能ではないでしょうか。

 

『コンテナ』型仮想化技術は、Linuxのカーネル機能を利用して実現しています。

そのため、本来ならWindowsやMacOSなどで動作させることはできませんが、VM型仮想化技術を組み合わせることで、Linux以外のOSでも『Docker』を実行させる環境が提供されています。

また、最近ではLinux以外のOSでネイティブに動作する『Docker』も開発されており、一部のOSでは仮想マシンを介さずに直接『Docker』を動作させることも可能です。

 

はなこ
『Kubernetes』と『Docker』は、セットにして利用すると非常に便利だということかしら。
そのようだね。

それにしても、技術の進歩というのはすごいものだね。

たろう

スポンサーリンク

まとめ

今回の違いのポイントについて、まとめていきましょう。

ポイント

  • 『Kubernetes』は、『コンテナ』を効率よく連携させる管理ツールであり、『Docker』は、『コンテナ』を生成・稼働・削除するエンジンである。
  • 『コンテナ』自体は『Docker』だけあれば動作させることができる

『Kubernetes』も『Docker』もオープンソースであり、誰でも無償で利用することが可能です。

興味があれば、一度試してみて下さい。

関連記事

-ITの違い

Copyright © 違いを解説君 , All Rights Reserved.