「仮想化」「コンテナ」の基礎知識
📚 参考書籍 図解即戦力 仮想化&コンテナがこれ1冊でしっかりわかる教科書 (五十嵐 貴之, 薄田 達哉)
各章の内容
章 | テーマ |
---|---|
1章 | 仮想化の基礎知識 |
2章 | 仮想化のしくみと技術 |
3章 | コンテナ技術の基礎知識 |
4章 | コンテナ型仮想化ソフトウェア「Docker」 |
5章 | コンテナオーケストレーションツール 「Kubernets」 |
6章 | クラウドのコンテナサービス |
1. どんな人におすすめか
下記の概要やメリット、デメリットについて学びたい人
- 仮想化技術
- コンテナ
- Docker
- kubernetes
- 主なクラウドのコンテナサービス
💡 下記のような知識と関わりが強いので、並行して勉強すると良さそうです。
- コンピュータ基礎知識 (基本情報技術試験の内容)
- ネットワークなどの基礎知識
- クラウドなどの基礎知識
- 主なクラウドサービスの概要 (AWS / GCP / Azureなど)
2. 仮想化の基礎知識
1. 仮想化とは
物理的なサーバー上に仮想的なサーバーを構築する技術です。
- 1つの物理サーバー → 複数の仮想サーバー
- サーバー統合による「効率化・コスト削減・柔軟性」
- 複数の物理サーバー → 1つの仮想サーバー
- リソース集約による「高可用性・高性能・拡張性」
2. 仮想化のメリット
- バックアップが容易で、障害時に以前の状態に戻せる
- 柔軟に環境を構築可能
種類 | 例 |
---|---|
物理サーバーOS | Windows 10 Pro |
仮想サーバーOS | CentOS / Ubuntu / Windows Server |
⚠️ 3. 仮想化のデメリット
- 物理サーバーの不具合には対応できない
- 物理サーバーよりコストが高くなる場合がある
4. 仮想化の種類
- サーバー仮想化:1台のサーバーを分割して複数用途に利用
- ネットワーク仮想化:仮想的にネットワークを作り分ける
- ストレージ仮想化:バラバラのストレージをまとめて見せる
- デスクトップ仮想化:PC環境をサーバー上に置き、リモートで利用
💬 コメント:上記は実際にサービスを使ってみないと難しいなと思いました。
3. 仮想化のしくみと技術
1. サーバー仮想化の3つの種類
- ホストOS型仮想化
- ハイパーバイザー型仮想化
- コンテナ型仮想化
2. 「ホストOS型仮想化」と「ハイパーバイザー型仮想化」の違い
主な違いは 「ホストOS」の有無です。
種類 | 概要 | メリット | デメリット |
---|---|---|---|
ホストOS型仮想化 | ホストOS上で仮想サーバーを動作 | 導入コストが低い、操作がわかりやすい | ホストOSが間にあるため性能は低め |
ハイパーバイザー型仮想化 | ハイパーバイザー型仮想化ソフトウェア上で仮想サーバーを動作 | オーバーヘッドが少なく高速、拡張性・安定性が高い | 導入・運用コストが高い、知識が必要 |
3. 現在の主流:コンテナ型仮想化
-
コンテナ型仮想化
「コンテナ」と「実行環境」をまとめて隔離し、アプリケーション単位で仮想化する技術です。
「ホストOS型」「ハイパーバイザー型」「コンテナ型」の違い
種類 | 概要 | カーネルの扱い |
---|---|---|
ホストOS型 | 仮想サーバの中に仮想マシンやゲストOSをインストール | ゲストOSごとにカーネルを共有 |
ハイパーバイザー型 | 仮想サーバの中に仮想マシンやゲストOSをインストール | ゲストOSごとにカーネルを共有 |
コンテナ型 | コンテナを作成し、アプリケーションを導入 | ホストOSのカーネルを共有 |
⚠️ 注意点
Docker等で同一の環境構築をした場合でも、カーネルのバージョンや機能によって、コンテナ内のアプリの挙動が変わる可能性があります
4. クラウドのサーバー仮想化 (代表的なサービス)
- Amazon EC2 (AWS)
- Google Compute Engine (GCP)
- Virtual Machines (Azure)
5. ネットワーク仮想化
物理構成とは異なる論理的なネットワーク構成を表現する技術です。
ネットワーク仮想化の技術(詳細は別途まとめ予定)
- VLAN
- オーバーレイネットワーク
- VPN
- SDN
- OpenFlow
- NFV
- SD-WAN
4.コンテナ技術の基礎知識
1. コンテナ技術のポイント
- 「仮想マシン」や「ゲストOS」を必要としないため、手軽に仮想サーバーを構築できる
- 「ファイルシステム」が独立しており、ホストOS内にインストールした他アプリやファイルの影響を受けない
- 可能な限り、データはコンテナに含めない(永続化は外部ストレージやDBを利用するのが基本)
2. DevOpsとコンテナ技術
- DevOps:開発者(Dev)と運用者(Ops)が協力してサービスを提供する手法
- コンテナは可搬性(ポータビリティ)が高く、開発と運用のスムーズな連携を実現
DevOpsの主なプロセス
DEV(開発者側) | OPS(運用者側) |
---|---|
計画(Plan) | リリース(Release) |
実装 (Code) | デプロイ (Deploy) |
ビルド (Build) | 運用 (Operate) |
テスト (Test) | 監視 (Monitor) |
3. マイクロサービス
- マイクロサービス:複数の小さなサービスを組み合わせて大きなサービスを提供する設計手法
- コンテナ技術は複数のコンテナを連携させて1つの大きなサービスを構築できるため、マイクロサービスとの相性が非常に良い
- 大規模なマイクロサービスでは コンテナオーケストレーションツール(例:Kubernetes) が必要になる
💬 コメント:
「Kubernetes」の発音は人によって異なります。
自分は「クーバネイティス」と読んでいましたが、「クバネティス」「クバネテス」「クーベネティス」など諸説あるそうです。
4. コンテナとサーバーレスの比較
サーバーレスの特徴
- 主にクラウドで提供されるサービス
- 最小単位は Function(機能)
- リクエストがあるときだけ起動し、処理が終わると終了する
- サーバーは事業者が管理しており、開発者が意識する必要はない(ただしサーバーは存在している)
コンテナとサーバーレスの違い
技術 | 単位 | 特徴 |
---|---|---|
コンテナ | アプリケーション | 自由度・可搬性が高い |
サーバーレス | Function(機能) | サーバー管理不要、未使用時のコストが発生しない |
まとめ
今回の書籍で特に重要だと感じたのは、
4章「コンテナ型仮想化ソフトウェア Docker」 と
5章「コンテナオーケストレーションツール Kubernetes」 です。
この2章だけを読んでも理解は可能ですが、前提知識として
- 本記事で扱った 1〜3章の内容
- コンピュータ / ネットワーク / クラウドの基礎知識
を押さえておくと、よりスムーズに理解できます。
なお、今回詳細を扱わなかった 「ネットワーク仮想化の技術」 や、4章・5章の内容については、別記事で改めてまとめる予定です。興味のある方はぜひそちらもチェックしてみてください!
株式会社シンシア
株式会社xincereでは、実務未経験のエンジニアの方や学生エンジニアインターンを採用し一緒に働いています。
※ シンシアにおける働き方の様子はこちら
シンシアでは、年間100人程度の実務未経験の方が応募し技術面接を受けます。
その経験を通し、実務未経験者の方にぜひ身につけて欲しい技術力(文法)をここでは紹介していきます。