Instiq
第6章 · コンテナ·v1.0.0·更新 2026/7/7·読了目安 約11分

変更要約: 初版(主題2.06・副主題2.06.1〜2.06.2に対応)

6.1コンテナの仕組み

この節の要点

物理マシン・仮想マシン・コンテナの違いを整理し、コンテナがなぜ軽量かを支える2つのカーネル機能——名前空間(namespaces)cgroups——を学びます。コンテナファイルシステムイメージの関係(読み取り専用レイヤーと書き込み可能レイヤー)も押さえます。

2.05 で仮想マシンを学びました。コンテナはさらに軽量な仮想化の形態で、1台のホストカーネルを複数のアプリケーションで共有しながら、それぞれを独立したプロセス群のように見せます。仕組みを支えるのは特別なハードウェアではなく、Linux カーネルが持つ隔離・制限機能です。

6.1.1物理マシン・仮想マシン・コンテナの比較

  • 物理マシン=1台のハードウェアに1つの OS。リソースは占有できるが台数分の物理コストがかかる。
  • 仮想マシン=ハイパーバイザーがハードウェアを仮想化し、ゲストごとに独立したカーネルを持つ。隔離は強いが、ゲスト OS 分のオーバーヘッド(起動時間・メモリ・ディスク)が乗る。
  • コンテナ=ホストのカーネル共有し、プロセス単位で隔離する。ゲスト OS が無いため起動が数秒未満・メモリ消費も小さく、同一ホスト上で多数を動かせる。ただし異なるカーネルを持つゲスト(例:別 OS 種別)は動かせない。

6.1.2隔離を支えるカーネル機能

  • 名前空間(namespaces)=プロセスから見える世界を分割するカーネル機能。PID(プロセスID空間)・net(ネットワーク)・mnt(マウントポイント)・UTS(ホスト名)などの種類があり、コンテナ内のプロセスは自分専用の世界しか見えない。
  • cgroups(control groups)=プロセスグループに対してCPU・メモリなどのリソース使用量を制限・計測するカーネル機能。あるコンテナが他のコンテナのリソースを食い尽くすのを防ぐ。
  • 両者は役割が異なる=名前空間は「何が見えるか」を分離し、cgroups は「どれだけ使えるか」を制限する。コンテナはこの2つの組み合わせで実現される軽量な隔離環境である。

続きは無料登録で読めます

冒頭を無料で公開中。無料登録でこの節の全文と、第4章以降を含む全参考書・全問題集が読めます。