Dockerは仮想化技術を使ったアプリケーションの実行環境を構築/運用するためのプラットフォーム
そもそも仮想化技術とは?
本番環境と同じ環境を開発環境として用意したいけど、現実的でない...
理由として、物理サーバーなどの物理的コストや開発環境のメンテナンスにかかる時間的コストが存在する。
仮想的にサーバを動かす(仮想化)ことができれば、物理的・時間的・金銭的コストを下げることができる。
さらに、仮想化ソフトウェアを使うことで仮想的にいくつものOSを動作させたり破棄したりすることができる。
3つの仮想化
- ホスト型仮想化
- ハードウェア上にベースとなるホストOSをインストールしホストOSに仮想化ソフトウェアをインストールし、仮想ソフトウェア上でゲストOSを動作させる。
- メリット =
- デメリット = 仮想化を行うために必要となるホストOSのスペック
- ハイパーバイザー型仮想化
- ハードウェア上に仮想化を専門に行う「ハイパーバイザー」を配置し、ハードウェアと仮想環境を制御する。
- メリット = ホストOSがなくハードウェアを直接制御するため、リソースを効率よく使用できる。
- デメリット = 仮想環境ごとにべつのOSが動くので、仮想環境の起動にかかるオーバーヘッドの大きさ
- コンテナ型仮想化
- ホストOS上にコンテナをつくり、コンテナごとに必要なものを閉じ込めて個別のサーバーを使っているかのようにする。
- メリット = 他の仮想化に比べると、軽量で高速
Dockerとは
- インフラ環境をコンテナとして管理し作成したコンテナのもとになる DockerImageをDockerHubを介して共有することができ、開発/テスト環境と本番環境では動かないといったリスクがさがる(移植性がある)
- さまざまな組織やシステムと連携して利用することができる(相互接続性がある)
Dockerの基本機能
- Dockerイメージを作る機能
Dockerイメージ = 実行環境で動くコンテナのもと
Dockerイメージは、Dockerfileから作ったり手動で作ったりすることができる
- Dokcerコンテナを作る機能
DockerはLinux上でコンテナ単位でサーバーを動かすことができる。
Dockerコマンドを利用してコンテナの操作を行う。
- Dockerイメージを公開/共有する機能