IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

クラウド時代のオープンソース実践活用

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第55回 ご存知ですか? DockerとコンテナーとKubernetesの役割分担 (中井悦司) 2014年11月

はじめに

 先週は、「PaaSコンファレンス 2014」というイベントで講演を行いました。「Docker is NOT Container.(Dockerはコンテナーに非ず)」というちょっと挑発的なタイトルですが、内容としては、PaaSを実現する内部の仕組みとして生まれたDockerの生い立ちから、「Dockerが実現を目指す世界」を中心にお話をしました(*1)。

 最近は、Kubernetes(クーバネティス)など新たな管理ツールも登場して、Dockerの位置づけが分かりにくくなっているようですので、今回は、このあたりを整理してみたいと思います。

Docker is NOT Container?!

 ところで、先ほどの講演タイトルの意図は、みなさん理解していただけたでしょうか? Dockerは、内部的にLinuxコンテナーを利用していることから、Dockerの解説というと、どうしてもコンテナー技術の解説にかたよりがちになります。そのため、世の中では、Dockerとコンテナー技術を混同している方も少なくないようです。ここでは、コンテナーは、あくまで、「Dockerが目指す世界」を実現する道具というだけで、コンテナーそのものがDockerの目的ではない事を示すために、このようなタイトルにしました。ちなみに、「Dockerが目指す世界」については、ちょうど、今週発売のSoftware Design誌に記事を執筆していますので、そちらも参考にしてください(*2)。

 ここでは、まずは、Dockerが提供する基本機能をおさらいしておきましょう。図1にあるように、Dockerが提供するのは、アプリケーションの実行環境を「Dockerイメージ」としてイメージ化する機能、そして、Dockerイメージから実際にアプリケーションを起動する実行環境を提供するという機能です。この「実行環境のイメージ化」こそが、Dockerの中心となる機能です。

fig01

図1 Dockerが提供する基本機能

 そして、この機能を実現する基礎技術として選ばれたのが、Linuxコンテナーです。理屈の上では、仮想マシン技術を用いても同じことは実現できたかも知れません。しかしながら、ゲストOSの実行を目的とした仮想マシンよりは、特定アプリケーションの実行に特化したコンテナーの方が取り扱いが簡単になるというメリットがあります。

 ただし、繰り返しになりますが、コンテナーの管理そのものがDockerの目的ではありません。今後、Linuxコンテナーの他にもアプリケーション環境のイメージ化に適した技術が登場すれば、Dockerは、そのような技術にも対応していく可能性は十分に考えられます。

Dockerに関わるコンポーネント

 それでは、冒頭で触れた、Dockerに関わるコンポーネントの整理を行っておきましょう(図2)。ここまでの説明から分かるように、Linuxコンテナーは、サーバー/仮想マシンのOS上でアプリケーションを実行する基盤を提供します。Dockerはそれを利用して、「Dockerイメージ」という形式で、実行環境の作成・配備を行います。

 この時、仮想マシン上のコンテナーでDockerを利用するという選択肢がある点にも注意してください。「コンテナーは仮想マシンよりも性能がよく、ベアメタルの性能をそのまま引き出せる」という宣伝文句を聞くこともあり、仮想マシン上でコンテナーを利用しても意味がないと考える方もいるかも知れません。もちろん、ベアメタルの性能をそのまま活用することが目的であれば、その通りなのですが、Dockerの主目的はそこではありません。実行環境のイメージ化というメリットを享受するという点では、仮想マシン上でDockerを使用することにも十分に意味があります。

fig02

図2 Dockerに関わるコンポーネントの整理

 ここまでが、Dockerの役割になりますが、現在、Dockerが管理できるリソースは、1台のサーバー(仮想マシン)に限られています。複数のサーバーを束ねて、コンテナーを起動するサーバーを自動選択するような機能は提供されていません。そこで、この部分の機能を担うのが、Kubernetesになります。Kubernetesは、まだ開発途上のため、最終的な機能セットには未確定の部分もありますが、複数サーバーに対するコンテナーの自動配置や、サーバー停止時にコンテナーを再配置するHA機能、サーバー間でコンテナーが通信するための仮想ネットワーク機能などが実現すると予想されます。

 そして世の中には、Kubernetesの上に、ユーザーインターフェース、Dockerイメージ作成のワークフロー、モニタリングなどの機能を追加して、DockerをベースとしたPaaS(Platform as a Service)環境を実現しようと考える人もいるようです(*3)。これまでのPaaS環境は、アプリケーションの実行環境が決め打ちで、実行環境のカスタマイズが難しいという課題がありました。Dockerイメージを利用することで、実行環境のカスタマイズが容易になり、さらに完成したイメージをPaaS環境から持ちだして、他のDockerサーバーでも利用できるようになるというメリットがありそうです。

次回予告

 最近なぜかまた、systemdの解説の依頼が増えてきました。systemdについては、本コラムでも何度か取り上げていますが、次回は、特にjournaldのログ管理機能について解説したいと思います。地味な部分ではありますが、さまざまなサービスのログを一元管理できる便利な機能ですので、ぜひ使いこなしてください。

参考資料

(*1) 「"Docker is NOT Container."~ Dockerとコンテナ技術、PaaSの関係を理解する

(*2) 「Software Design 2014年12月号 第1特集・第1章:Dockerが目指す世界とその基礎技術

(*3) 「OpenShift V3 Deep Dive Tutorial | The Next Generation of PaaS

 

++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
 CTC教育サービス Linuxのページ
 http://www.school.ctc-g.co.jp/linux/
 

Linux研修トレーニングならCTC教育サービス


 

筆者書籍紹介

Software Design plusシリーズ
「独習Linux専科」サーバ構築/運用/管理
  ――あなたに伝えたい技と知恵と鉄則

本物の基礎を学ぶ!新定番のLinux独習書

中井悦司 著
B5変形判/384ページ
定価3,129円(本体2,980円)
ISBN 978-4-7741-5937-9
詳しくはこちら(出版社WEBサイト)
「独習Linux専科」サーバ構築/運用/管理

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes