Dockerに魅せられて


Dockerとの出会い

 Linuxを触り始めたころは、パソコン1台にLinuxを入れて、そのLinux内に直接ソフトウエアをインストールしていました。当然、各ソフトウエアの前提条件やら依存関係やらのしがらみが面倒でした。でも、そのしがらみをなんとかするというのも、技術を磨くためになると信じてLinuxと格闘してました。

 そんな中で出会ったのがvmwareでした。当時はたしかworkstationが無料提供されていた頃だったと思いますが、パソコンのハードディスクをパンパンにしながら、色んなパターンのサービスを構築して試しまくってました。

 パソコン1台1OSの頃よりは格段に面倒さは減ったのですが、1仮想マシン当たりのディクス容量はかなりのもんで、あと、パソコンの物理メモリの制限も重なり、不満は溜まりまくってました。

 そんな中、ネットでふっと見かけた「Docker」というキーワード。

 Dockerとは、コンテナ型の仮想化技術の1つです。他の仮想化技術としては、VMWareやVirtualBoxなどのハードウエア型の仮想化技術があります。

 ちょっと気になったので、色々調べてみました。

 カーネルは共有して、それ以外は各環境単位に持つことで仮想環境を実現?!

そんな中途半端な仮想もどきで物理サーバレベルの品質が出せるもんか

 ストレージもネットワークも各仮想単位に自由に構築可能?!

OS上で仮想っぽくプロセスを起動して、それにストレージとネットワークをそれっぽく見せてとかじゃ?

  各仮想環境は、リモートからイメージファイルをダウンロードして起動?!

む?仮想ごとにイメージファイルがあるんだ・・・。

 仮想環境内でシェルを起動しオペレーション可能。そこは通常のOS環境そのもの?!

ほほお?ちょっと試してみるかな・・・。

  大手ベンダgoogleが商用サービスを行っている?!

まじすか

  コンテナという概念は仕事がら聞いたことがある程度でしたが、Dockerというのは全く知らず、調べれば調べるほどどんどん深みにはまってしまい、気づけば休日はほぼDockerと戯れている状態になってしまいました。

 まさかコンテナがそんなことになっているとは。やはり食わず嫌いというのはいけませんね。

Dockerの好きなところ

 Dockerの何が良いのでしょうか。私的には主なものとして3点ほどあります。

 一つ目は、1つ1つの仮想環境がとても軽いという点です。

 これまでのホスト型やハーパーバイザ型の仮想では、各仮想環境ごとにカーネルを持つため、ホストマシン上のメモリやらストレージやらのオーバーヘッドがかなり大きいです。こればっかりはどうしようもないことだと思ってました。

 が、Dockerはカーネルを仮想環境間で共有するため、そのオーバーヘッドがとても小さいのです。このお陰で、仮想環境がいっぱい作れるし、起動/停止も驚くほど速いです。

 二つ目は、リードオンリーなイメージを使用して仮想環境を起動する点です。

 Dockerのイメージファイルを入手して、起動するだけで仮想環境が利用可能となりますが、その中でどんなに中身をいじり倒しても、仮想環境を再起動すると、起動したばかりの最初の状態に戻ります。

 もちろん、仮想環境内部のファイルを更新することは可能なのですが、その更新情報は、イメージの差分情報として別管理されているわけです。再起動すると、別管理されていた更新情報がさっぱりと破棄されるため、最初の状態に戻るということになります。

 とはいっても、折角更新した情報を取っておきたいということは絶対にあると思います。当然、更新情報を管理する方法は色々用意されています。

 三つ目は、仮想環境の中身をコード化できる点です。

 前に、イメージを使用して仮想環境を起動する、と書きました。でも、人が作ったイメージを使うばっかりじゃつまらない、自分でイメージを作りたい、カスタマイズしたい、と思うことは当然だと思います。

 Dockerを使って何かのサービス環境を作る場合、1つの例として、まずLinuxの最小インストール状態のイメージを入手します。これは各ディストリビューションのベンダが無償提供しています。

 次に、このイメージ上にサービスを構築していくわけですが、その際当然様々なコマンドを実行して構築すると思います。仮想環境の中身をコード化するというのは、この作業(イメージを入手してから各種コマンドを駆使してサービスを構築する)をテキストファイルに記述することを指します。

 このテキストファイルをDockerに読み込ませることで、いつでも同じ環境を短時間で構築することが可能となるわけです。

 これら以外にも、Dockerすごい、っていう点がまだまだあると思うのですが、またの機会とさせていただきます。

 今回は、私がDockerに魅せられた、ということについてでした。

 読んでいただいてありがとうございました。


 

 


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です