“攻めのIT”のため、Dockerの本質を見極め、より正しくDockerを理解しましょう。今回はいよいよ本題へ。Dockerのロゴアイコンやコンテナそのものの形状から「Dockerの本質」の基本をひもといていきます。
2000年、オープンソース界隈であるホットなニュースが飛び交いました。
chroot監獄を大幅に発展させた機能が、フリーOSで利用可能となったのです。その名も「FreeBSD Jail(フリー・ビーエスディ・ジェイル)」です。「あるディレクトリ配下をルートディレクトリに見せる」というファイルシステムを取り扱う概念に加え、さらにアプリのプロセスIDも監獄ごとに分離できるようになりました。
このFreeBSD Jailは、監獄の中からホストOS側を見ると、ホストOSの各種資源の一部分だけがあたかもすべての資源のように見せることができる画期的なものです。FreeBSD Jailはとても軽く、洗練されたアーキテクチャとして知られており、日本やロシアで根強い人気があるFreeBSDと呼ばれるBSD系のフリーOSにおける強力なOS空間の分離機能として発展し、2015年現在でも広く利用されています。
その後FreeBSD Jailは、VIMAGEと呼ぶネットワークに関する分離機能も追加されました。
2002年、Linuxカーネルにもファイルシステムの一部(マウントしている領域)を分離する機能が取り込まれました。一般的に、ファイルシステムのマウント、プロセス、ネットワークなどが分離された領域は、名前空間という言葉で表現されます。Linuxにおいて、この名前空間とセットで語られることの多いのが、CPU、メモリ、ディスク、ネットワークなどの物理資源の分離や制限を行うcgroups(control groups)です。
cgroupsは、分離されたそれらの名前空間に対して、物理資源の分離・制限を行うために利用されています。cgroupsは、2008年にLinuxカーネルに取り込まれました。この名前空間やcgroupsは、Dockerでも利用されている技術です。
2008年以降、Linuxで稼働するコンテナにより、複数の名前空間を同時に稼働させるといった利用方法が少しだけ日の目を見ました。しかし、時はすでに仮想化全盛時代。ハイパーバイザー型の仮想化ソフトウェアが急速に市場に浸透。WindowsやLinuxなどの複数の種類のOSを同時に稼働でき、しかも物理サーバを集約できるといったことから、瞬く間に世界中にハイパーバイザー型の仮想化ソフトウェアが広まりました。
Linuxコンテナは、この間も粛々と開発が進められていました。しかしハイパーバイザー型の仮想化ソフトウェアほど一般のビジネスユーザーに浸透することはありませんでした。
ですが2013年、とある企業がLinuxコンテナの技術をもとに画期的なソフトウェアを発表します。それが「Docker」です。
Copyright © ITmedia, Inc. All Rights Reserved.