Dockerとは
一言で言うと、サーバー仮想化技術です。
予備知識
- ハードウェア
システム基盤を構成する物理的な要素。
サーバー機器本体、電源装置など。 - OS
ハードウェアやネットワーク機器を制御するための基本ソフトウェア。- ホストOS
パソコンやサーバーそのものにインストールされている、仮想環境の土台となるOS - ゲストOS
ホストOSの上で動く仮想的なOS
- ホストOS
厳密には違いますが、上記のようなイメージをしていれば大丈夫です。
サーバー仮想化技術
これらは、どの部分を仮想化するかで異なります。
1. ホスト型
2. ハイパーバイザー型
3. コンテナ型 ←Dockerはこれ
ホスト型サーバー仮想化
ホストOSに仮想化ソフトウェアをインストールし、その上でゲストOSが動く。
* Oracle VM VirtualBox
* VMware Workstation Player
ハイパーバイザー型サーバー仮想化
ハードウェア上に仮想化を行う。
環境ごとに別のOSが動作する。ホストOS、ゲストOSという形に分かれていない。
コンテナ型サーバー仮想化
ホスト型とは異なり、ゲストOSを作るわけではなくホストOSそのものを分割し、それを一つの単位(コンテナ)とする。
ホストOSをしっかり分割して、シェアしているイメージ。
シェアを制御するのは、ホストOS上にインストールされたコンテナ管理ソフト。
JVMと同じようなイメージを持つといいかもしれない。
- 同じシステムリソースを利用するため、無駄が少ない
- 実際には同じリソースを利用しているが、別々のものを使っているように見せている
- 軽量、高速
- 可搬性
用語
- Dockerfile
イメージを生成するための設計書 - Dockerイメージ
コンテナを生成するための雛形 - Dockerコンテナ
Dockerイメージから作られた実体
何ができるのか
- どんなところでも同じ(サーバー)環境を作ることができる
- 同じアプリなのに、環境が変わったせいで動かなくなるということがない
- 同じ環境をたくさんコピーできる
- 誰かが設定した環境を共有し、他の人も簡単に同じ環境が作れる
- 設定した環境を手軽に破棄できる(ホストOSの状態を汚さない)
- 様々な種類のOSのDockerイメージが配布されている
- 一つのパソコン上に、サーバーを複数立てることができる