【Docker入門】(0) コンテナ仮想化とは
昨今注目されているDockerは、コンテナ仮想化を使用しアプリケーションの開発・実行環境を構築、運用するためのプラットフォームです。アプリケーションの実行に必要なものを1つにまとめ、パッケージ(イメージ)として管理することで、開発の時間の短縮や可搬性を上げることができます。
まずDockerという技術を学んで行く前に、その基本概念である「コンテナ仮想化」という概念についての理解を深めていきます。
仮想化技術とは - ITリソースの抽象化 -
仮想化とはCPU、メモリ、ハードディスク、ネットワーク等などのシステム構成要素(ITリソース)を抽象化し、物理的な実態とは異なるが実質的に本物と同じ機能を実現するソフトウェア技術のことである。
仮想化によって可能になることは「分割」「集約」「模倣」があります。
仮想化技術の使用例 - システム資源の仮想化 -
- サーバー仮想化 — サーバに関わるシステム資源を仮想化
- デスクトップ仮想化 — PCやOSに縛られずデスクトップ環境を利用
- クライアント仮想化 — 1台のPCで異なるOSを同時に操作する
- ネットワーク仮想化 — 1つのネットワークを複数のネットワークとして使用
- ストレージ仮想化 — 1つのストレージを複数のストレージとして使用
また、従来の仮想化技術には ホストOS型 と ハイパーバイザー型 があります

サーバ仮想化 - 3つのメリット -
1.ソフトウェア定義
物理的に作業をすることなく、Webアプリの操作やコマンド入力によって資源の調達や変更を行うことが可能となる
2.物理マシンの集約
使用機械の台数を削減することが可能になる
3.ライブマイグレーション
仮想マシンをOSやアプリケーションを停止させることなく別の物理サーバへ移動させることが可能
コンテナ仮想化とは - サーバ仮想化を簡単に -
これまでのサーバー仮想化では仮想マシンやゲストのOSがメモリやサーバなどのITリソースを使用し過ぎてしまうなどという弊害もあり、それを避けるために作られた技術が コンテナ仮想化 です。
コンテナ仮想化では、コンテナエンジンの上に 「論理的な仮想区画 = コンテナ」 を作り、アプリケーションを動作させるのに必要なライブラリやアプリケーションなどを1つにまとめ、隔離されたアプリケーションの実行環境のようにに使うことができるようにしたものです。

コンテナ仮想化のメリット・デメリット
コンテナ仮想化技術には多くのメリットがあり開発環境の構築などを容易にしますが、いくつかのデメリットも存在しています。
メリット | デメリット |
---|---|
負荷が小さく、高速で動く | ベースのコンテナのOSは変更不可 |
本番移行の手間と時間が大幅に削減できる | コンテナ内で別々のOSを個別に使用できない |
ほぼ全てのシステム環境で使用できる | 別コンテナにおける負荷の影響を受けやすい |
次回、以降の記事では実際にDockerについて触れていこうと思います