コンテナとは(全体像)
コンテナは、アプリを動かす環境を、軽くひとまとめにして持ち運べるようにするしくみのこと。OSの土台(カーネル)を共有して動くので、とても軽い。
身近にたとえると、マンションとシェアハウスの違いだ。仮想マシン(VM)はマンションで、各部屋がキッチンも風呂もまるごと持つ(OSをまるごと持つ)ので独立だが重い。コンテナはシェアハウスで、キッチンや風呂(OSのカーネル)をみんなで共有し、個室(アプリ)だけ分ける。だから軽くて速い。
押さえるのは、コンテナはOSのカーネルを共有する軽量な仮想化だということ。VMとは別のしくみだ。
詳しく:VMとの違いとDocker・K8sの役割だけ覚えれば戦える
ここが記事の心臓部。まずコンテナとVMを比べましょう。
コンテナとVMの違い
| 方式 | OSの持ち方 | 重さ | 起動 |
|---|---|---|---|
| VM(仮想マシン) | OSをまるごと持つ | 重い(GB単位) | 数秒 |
| コンテナ | OS(カーネル)を共有 | 軽い(MB単位) | とても速い |
VMは部屋ごとにOSをまるごと持つので独立性が高いが重い。コンテナはOSのカーネルを共有するので、サイズが小さく、起動も速い。「コンテナ=完全なOSを持つ」というのは誤りで、ホストとカーネルを共有しています。
次に、DockerとKubernetes。名前が並んで出てくるので混同しやすいですが、役割がまったく違います。
DockerとKubernetesの役割
| 道具 | 役割 | たとえ |
|---|---|---|
| Docker | コンテナを作って動かすエンジン | 1軒の家を建てて住む |
| Kubernetes(K8s) | たくさんのコンテナをまとめて運用する | 多くの家を運営する管理会社 |
Dockerはコンテナを1つずつ作って動かす道具で、設計図(Dockerfile)からイメージを作り、コンテナを起動します。Kubernetes(K8s)は、たくさんのコンテナを大規模に運用する指揮者で、自動復旧や台数の自動調整(スケーリング)をしてくれます。「Docker=Kubernetes」は誤りで、エンジンと指揮者という別の層です。
K8sの最小単位はPodで、1つ以上のコンテナをまとめたものです。
わかりやすく言い換えると
要するに、シェアハウスのたとえで覚えるとラクです。
①コンテナ … シェアハウス(カーネルを共有・軽い・速い)。VMはマンション(まるごと持つ・重い)
②Docker … 1軒を建てて住む道具(コンテナを作って動かす)
③Kubernetes … 多くの家を運営する管理会社(大量のコンテナをまとめて運用・最小単位はPod)
つまり、「コンテナは共有で軽い」「Dockerはエンジン・K8sは指揮者」、この2点を押さえれば迷いません。
試験のツボ
🔴 一番出る:コンテナとVMの違い
①コンテナ = OS(カーネル)を共有・軽い・起動が速い
②VM = OSをまるごと持つ・重い・起動は数秒
🔴 次に出る:DockerとK8sの役割分担
①Docker = コンテナを作って動かすエンジン
②Kubernetes(K8s) = たくさんのコンテナをまとめて運用する指揮者
🟡 押さえると安定:K8sのPod
①PodはコンテナをまとめたK8sの最小単位(1つ以上のコンテナ)
②K8sは自動復旧やスケーリング(台数の自動調整)を行う
よくある間違い
①「コンテナは完全なOSを持つ」→ ✗ コンテナはホストとOS(カーネル)を共有する軽量な仮想化。まるごと持つのはVM。
②「DockerとKubernetesは同じもの」→ ✗ Dockerはコンテナを動かすエンジン、K8sはたくさんのコンテナをまとめる指揮者。役割が違う。
③「コンテナはVMより重く起動も遅い」→ ✗ コンテナはカーネル共有で軽く、起動はVMより速い。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(コンテナとVM)
コンテナと仮想マシン(VM)に関する次の記述のうち、正しいものはどれか。
- コンテナはOSのカーネルを共有して軽く起動も速く、VMはOSをまるごと持ち重い方式だ
- コンテナはOSをまるごと持つ重い方式で、VMはカーネルを共有する軽い方式とされている
- コンテナもVMもまったく同じしくみで、重さや起動の速さに違いはないものとされているのだ
- コンテナもVMも紙に印刷する装置のことであり、仮想化とは無関係なものとされているものだ
解答は 1 ですよ。
コンテナはOSのカーネルを共有して軽く起動も速く、VMはOSをまるごと持ち重い方式ですね。シェアハウスとマンションの違いです。
選択肢2のコンテナとVMが逆、選択肢3の「同じしくみ」、選択肢4の「印刷装置」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | コンテナは共有で軽い・VMはまるごと持つ |
| 2 | ✗ | コンテナとVMの説明が逆 |
| 3 | ✗ | 重さも起動の速さも違う |
| 4 | ✗ | 印刷装置ではない |
オリジナル問題2(DockerとK8s)
DockerとKubernetes(K8s)に関する次の記述のうち、正しいものはどれか。
- DockerもK8sもまったく同じ道具で、役割や使う場面に違いはないものとされているものだ
- Dockerはたくさんのコンテナをまとめる指揮者で、K8sは1つを動かすエンジンとされている
- Dockerはコンテナを作って動かすエンジン、K8sはたくさんのコンテナをまとめる指揮者だ
- DockerもK8sもハードウェアの一種で、コンテナの運用には使えないものとされているものだ
解答は 3 ですよ。
Dockerはコンテナを作って動かすエンジン、K8sはたくさんのコンテナをまとめる指揮者ですね。役割がはっきり違います。
選択肢1の「同じ道具」、選択肢2のDockerとK8sが逆、選択肢4の「ハードウェア」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 役割が違う |
| 2 | ✗ | DockerとK8sの説明が逆 |
| 3 | ✓ | Dockerはエンジン・K8sは指揮者 |
| 4 | ✗ | ソフトウェアの技術 |
オリジナル問題3(K8sのPod)
KubernetesのPodに関する次の記述のうち、正しいものはどれか。
- Podは紙に印刷する装置のことで、コンテナの運用とは無関係なものとされているものだ
- Podは1つ以上のコンテナをまとめたKubernetesの最小単位で、運用の基本だ
- Podはハードウェアそのものを指す言葉で、ソフトウェアは含まないものとされているのだ
- Podは仮想マシンをまるごと持つ重い方式の別名で、起動に数分かかるものとされている
解答は 2 ですよ。
Podは1つ以上のコンテナをまとめたKubernetesの最小単位ですね。K8sはこのPodを単位に、自動復旧やスケーリングを行います。
選択肢1の「印刷する装置」、選択肢3の「ハードウェアそのもの」、選択肢4の「VMの別名」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 印刷装置ではない |
| 2 | ✓ | Podはコンテナをまとめた最小単位 |
| 3 | ✗ | ソフトウェアの概念 |
| 4 | ✗ | VMの別名ではない |
まとめ
押さえどころ
- 🔴 コンテナとVM = コンテナはOS(カーネル)を共有して軽く起動が速い、VMはOSをまるごと持ち重い。
- 🔴 DockerとK8s = Dockerはコンテナを作って動かすエンジン、Kubernetes(K8s)はたくさんのコンテナをまとめる指揮者。
- 🟡 K8sのPod = 1つ以上のコンテナをまとめたK8sの最小単位。自動復旧やスケーリングの基本。
次に学ぶ
- 仮想化(ハイパーバイザ) ── コンテナと対になる仮想マシン(VM)のしくみ。ハイパーバイザのType 1とType 2。
- OS(オペレーティングシステム) ── コンテナが共有するカーネルを含む、OSの構成と役割。
執筆: SikakuQuest編集部