kei0425tan’s blog

技術的なことを主に

Dockerについて

2014/10月の課会資料

Dockerについて

Dockerとはコンテナ型仮想化のひとつ。→ 対義語は完全仮想化(VM
完全仮想化のメリット
仮想マシン毎に完全に分離された環境になるため異なるOSでも動作が可能。(場合によってはCPUレベルで異なるマシンも動作可能!)
・慣れ親しんだOSで動作するため操作が簡単。
完全仮想化のデメリット
・リソースを大量に消費する。(メモリやディスクなど)
・起動が遅い。
・管理が大変。(バックアップなど)

そもそもVMを使う用途としては以下に分類されます。
(1)異なるOSの起動
MacWindowsを使うためのparallelsWindowsLinuxを使うWMWareなど。
(2)異なる用途を行うために同じOSを複数起動
→ ウェブサーバ、DBサーバ。開発用、テスト用、検証用など
→ ライブラリのバージョンや相性?などの問題で環境を分離したいため。

(1)の用途としては、完全仮想化か実機の利用しかありませんが、(2)の用途の場合実はOSのコアな部分が共通なので完全仮想化の場合は無駄になってしまいます。
そこでOSのコアな部分は同じものを利用して、それ以外を仮想化するのがコンテナ型仮想化になります。
※それ以外:ファイルシステム、ユーザ管理、プロセス管理、ネットワークなど。

実はコンテナ型仮想化は従来からある技術で(chroot,FreeBSD jail,openVZ,LCXなど)Dockerから新しくできたものではありません。しかしなぜDockerが流行っているのかというと、DockerHubの存在が大きいです。これはDockerの設定を共有できる機能でこれを利用すると簡単に仮想環境が作成できます。