Docker & Kubernetes 入門 #1
はじめに
このシリーズは Docker & Kubernetes を聞いたことはあるが触ったことはない、興味があって触ってみたいという人向けに記述しています。
Docker の前にJava EEコンテナ
昔昔 Java の世界では、Java EE の仕様に則って記載されているアプリケーションはどの Java EE アプリケーションサーバーでも動作できるという理想郷が語られていました。※Java EE は 2019 年現在 Jakarta EE に名前を変えています。
実際には Java EE サーバーごとの独自仕様(差別化)により、WebLogic サーバー向けに作ったアプリはそのまま WebSphere で動作する、なんてそんなことは稀でした。
Dockerとは
時は流れて 2019 年、Docker で作成したアプリケーションは Docker さえインストールされていればどんな環境でも動作します。まるで Java EE の再来のようです。しかも、Dockerで作成したアプリケーションは Java EE のように Java に限りません。様々なプログラミング言語で記載されたものだって動かすことが可能なのです。
VM との比較
よく、Docker は VM と比較されます。VM はOSの層から仮想化されるため、もし、VM で動作させるアプリケーションを考えている場合は OS からインストールして GuestOS を作成する必要があります。
対して Docker の場合、仮想化するのは主にミドルウェアから上の層になります。例えば、Node.js + JavaScript アプリケーションや、nginx + html ファイルなどです。ミドルウェアの部分はなくても構いません。ただのシェルスクリプトなどでも動作します。
Hypervisor のケースでは OS から起動するためそれなりに重いのですが、Docker はアプリケーションの層だけなので非常に軽量です。
CPU や Memory を大量に積み込み、IT 部門が LoB のデスクトップ環境をVDI(Virtual Desktop Infrastructure) として集積するようなケースがHypervisor のケースでは多いですが、Docker はそのようなケースは想定していません。あくまで一つのマシンで軽量のアプリケーションプロセスを動作させる目的で使用されます。
Dockerはどんなケースで利用できるか
Docker は上に載せるものが軽量なので、自分のラップトップで簡単に試すことができます。例えば、MySQL や Postgress の簡単な動作を確認したいときや、自作のアプリケーションをテストしたいときなどに利用できます。使ったら簡単に消すことができます。
次回
次回は Docker を実際に使用してみます。