コンテナとは(全体像)
コンテナとは、アプリを動かすのに必要なものをひとまとめにした、軽量な「箱」のことだ。OSのレベルで動く、軽い仮想化技術といえる。
ここでカギになるのが、仮想マシン(VM)との違い。住まいでたとえると分かりやすい。
- 仮想マシン(VM) … 一軒家。土地・建物・水道などをすべて独立して持つ(=それぞれが完全なOSを持つので、重い)。
- コンテナ … 同じ建物の中の区画。共用部(=OSのカーネル)を共有するので、軽くて、すばやく用意できる。
ここで一番のポイント。コンテナと仮想マシンは別ものだ。仮想マシンはそれぞれ完全なOSを持つ(重い)、コンテナはOSのカーネルを共有する(軽い)。「コンテナイコール仮想マシン」と思い込むと誤りになる。
詳しく:DockerとKubernetesの役割
ここが心臓部。ポイントを表で押さえよう。
コンテナ・Docker・Kubernetes
| 項目 | やさしい意味 |
|---|---|
| コンテナ | OSのカーネルを共有する、軽量な箱 |
| 仮想マシンとの違い | VMは完全OS(重い)、コンテナは軽量 |
| Docker | コンテナを動かす、代表的なソフト |
| Kubernetes(K8s) | たくさんのコンテナをまとめて管理するしくみ |
DockerとKubernetesは、役割が違う。Dockerは、コンテナを作って動かすソフト(エンジン)。Kubernetes(K8s)は、たくさんのコンテナを、自動で配置・拡大・復旧して管理するしくみ(オーケストレーション)だ。
ここで一番のポイント。DockerとKubernetesは、役割が違う。「DockerとKubernetesは同じもの」と思い込むと誤りになる。これらは、クラウドで動く小さな部品(マイクロサービス)の基盤として広く使われている。
わかりやすく言い換えると
身近なたとえで整理しよう。
コンテナは、「同じ建物の区画を借りて、軽くすばやく住むイメージ」。一軒家(仮想マシン)より、ずっと身軽だ。
仮想マシンとの違いは、「仮想マシンは完全なOSを持って重い、コンテナはカーネルを共有して軽い」こと。要するに、コンテナは軽くて速い。
DockerとKubernetesの違いは、「Dockerはコンテナを動かす道具、Kubernetesはたくさんのコンテナを管理する管理人」こと。つまり、役割が分かれている。
試験のツボ
🔴 一番出る:コンテナの正体
①OSのカーネルを共有する、軽量な仮想化技術
②アプリに必要なものをひとまとめにした、軽い箱
🔴 次に出る:仮想マシンとの違い
①仮想マシン(VM)は完全なOSを持つ(重い)
②コンテナはOSのカーネルを共有する(軽くて速い)
🟡 押さえると安定:DockerとKubernetes
①Docker=コンテナを動かすソフト(エンジン)
②Kubernetes(K8s)=たくさんのコンテナを管理するしくみ
よくある間違い
①「コンテナと仮想マシンは、まったく同じものだ」→ ✗ 仮想マシンは完全なOSを持つ(重い)、コンテナはOSのカーネルを共有する(軽い)。
②「DockerとKubernetesは、同じものだ」→ ✗ Dockerはコンテナを動かすソフト、Kubernetesはたくさんのコンテナを管理するしくみ。役割が違う。
③「コンテナは、仮想マシンより重くて起動が遅い」→ ✗ 逆で、コンテナはOSのカーネルを共有するので、軽くて起動が速い。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(コンテナの正体)
コンテナに関する次の記述のうち、最も適切なものはどれか。
- OSのカーネルを共有して動く、軽量な仮想化技術のことである
- 社員の出退勤を記録して、毎月の給与を計算するためのしくみだ
- 取引先へ毎月の請求書を郵送する、決まった事務作業のことを指す
- 完成したシステムを宣伝して、より多く売るための広告活動である
解答は 1 だよ!
コンテナは、OSのカーネルを共有して動く、軽量な仮想化技術なんだよ!同じ建物の区画を借りるイメージで、軽くて速いんだね!
選択肢2は給与計算、選択肢3は請求書の事務、選択肢4は広告で、どれも違うよ!
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | OSカーネルを共有する軽量な仮想化で正しい |
| 2 | ✗ | 給与計算のしくみではない |
| 3 | ✗ | 請求書の事務の話 |
| 4 | ✗ | 広告活動ではない |
オリジナル問題2(仮想マシンとの違い)
コンテナと仮想マシンの違いに関する次の記述のうち、最も適切なものはどれか。
- 社員の給与を計算するときだけ、違いが出るとされているものである
- 取引先への請求書の枚数しだいで、違いが決まるとされているのだ
- 仮想マシンは完全なOSで重い、コンテナは軽くて速いものである
- コンテナも仮想マシンも、まったく同じものだとされているのである
解答は 3 だよ!
仮想マシンは完全なOSで重い、コンテナは軽くて速いんだよ!コンテナはOSのカーネルを共有するからなんだね!
選択肢1の給与、選択肢2の請求書、選択肢4の「まったく同じ」は、いずれも違うよ!
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算で違いが出るのではない |
| 2 | ✗ | 請求書の枚数で決まるのではない |
| 3 | ✓ | VMは重い・コンテナは軽いで正しい |
| 4 | ✗ | コンテナとVMは違う |
オリジナル問題3(DockerとKubernetes)
DockerとKubernetesに関する次の記述のうち、最も適切なものはどれか。
- 社員の給与を計算するときだけ、使われるものだとされている
- 取引先へ請求書を郵送するときだけ、使われるものだとされる
- DockerもKubernetesも、まったく同じものだとされているのだ
- Dockerはコンテナを動かすソフト、K8sは多数を管理するしくみ
解答は 4 だよ!
Dockerはコンテナを動かすソフト、K8s(Kubernetes)は多数のコンテナを管理するしくみなんだよ!役割が違うんだね!
選択肢1の給与、選択肢2の請求書、選択肢3の「まったく同じ」は、いずれも違うよ!
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算のときだけではない |
| 2 | ✗ | 請求書のときだけではない |
| 3 | ✗ | DockerとK8sは役割が違う |
| 4 | ✓ | Docker=動かす・K8s=管理で正しい |
まとめ
押さえどころ
- 🔴 コンテナ = OSのカーネルを共有して動く、軽量な仮想化技術。アプリに必要なものをひとまとめにした箱。
- 🔴 仮想マシンとの違い = 仮想マシン(VM)は完全なOSを持つ(重い)、コンテナはOSのカーネルを共有する(軽くて速い)。
- 🟡 DockerとKubernetes = Dockerはコンテナを動かすソフト、Kubernetes(K8s)はたくさんのコンテナを管理するしくみ。役割が違う。
次に学ぶ
- 仮想化(ハイパーバイザ) ── 1台に複数の仮想マシンを作る技術。コンテナは、より軽量な仮想化。
- マイクロサービス ── アプリを小さな部品に分けて作る考え方。コンテナと組み合わせて使われる。
執筆: SikakuQuest編集部