TL

名前空間と cgroups(コンテナの基盤)

コンテナの「軽い隔離」は、Linux カーネルの名前空間(見える範囲の隔離)と cgroups(使える資源の制限)という2つの機能で実現されています。

応用コンテナ名前空間cgroupsLinux最終更新: 2026-06-06
TL;DR要点だけ先に
  • 1.コンテナは仮想マシンと違い、ホストのカーネルを共有したまま隔離する軽量な仕組みです。
  • 2.名前空間はプロセスから見える範囲(PID・ネットワーク・ファイルなど)を区切ります。
  • 3.cgroups は CPU やメモリなど、使える資源の量を制限・計測します。

コンテナはなぜ「軽い」のか

仮想マシン(VM)は、ハードウェアを丸ごと仮想化し、その上に ゲスト OS のカーネルを丸ごと 動かします。隔離は強い反面、OS が重なるぶん 重く・起動も遅い です。

一方コンテナは、ホストのカーネルをそのまま共有 したまま、プロセスを隔離します。新しい OS を起動しないので 軽く・速い。この「軽い隔離」を実現しているのが、Linux カーネルの2つの機能——名前空間(namespaces)cgroups です。

観点仮想マシンコンテナ
カーネルゲストごとに別ホストと共有
隔離の強さ強い中(カーネル共有のぶん弱い)
起動の速さ遅い(OS 起動)速い(プロセス起動)
資源の重さ重い軽い

役割を一言で分けると、名前空間が「何が見えるか」を、cgroups が「どれだけ使えるか」を担う と覚えると整理できます。

名前空間:見える範囲を区切る

名前空間 は、プロセスから見える OS 資源を 区画ごとに分離 する仕組みです。同じカーネル上で動いていても、別の名前空間に属するプロセスからは互いが見えません。

主な種類は次のとおりです。

  • PID 名前空間:プロセス番号を分離。コンテナ内では自分が PID 1 に見える。
  • ネットワーク名前空間:独自の IP アドレス・ポート・ルーティングを持つ。
  • マウント名前空間:見えるファイルシステムの構成を分離する。
  • UTS 名前空間:ホスト名を独自に持てる。
  • ユーザー名前空間:コンテナ内の root を、ホストでは一般ユーザーに対応づける。
  • IPC 名前空間:共有メモリなどの IPC 資源を分離する。

これらを組み合わせることで、コンテナ内のプロセスは 「自分専用の OS にいる」かのような景色 を得ます。実体はホスト上の1プロセスにすぎません。

cgroups:使える資源を制限する

名前空間は 見える範囲 を区切りますが、使える量 までは制限しません。それを担うのが cgroups(control groups) です。

cgroups は、プロセスのグループ単位で資源の 割り当て・制限・計測 を行います。

  • CPU:使用できる CPU 時間の割合や上限
  • メモリ:使用できる上限(超えると制限・強制終了の対象)
  • ディスク I/O:読み書きの帯域
  • デバイス:アクセスできるデバイスの制御

これにより、1つのコンテナが暴走して ホスト全体の資源を食い尽くす 事態を防げます。「このコンテナは CPU 0.5 個分、メモリ 512MB まで」といった制限は、cgroups が支えています。

2つの役割分担を押さえる

名前空間 = 隔離(見える範囲)、cgroups = 制限(使える量)。この2軸が独立していることが、コンテナ理解の核心です。片方だけでは「隔離されているが資源無制限」あるいは「制限はあるが丸見え」になってしまいます。

カーネル共有ゆえの注意点

コンテナはホストのカーネルを共有するため、カーネルレベルでは完全には分離されていません。VM のような強固な境界はなく、カーネルの脆弱性を突かれると、隔離を越えてホストや他コンテナに影響が及ぶ可能性があります。

そのため、信頼できないコードを動かす場面では、ユーザー名前空間で root 権限を弱める、不要なシステムコールを制限する(seccomp)、追加の分離層を挟む、といった対策が併用されます。

「コンテナ=完全な仮想マシン」ではない

コンテナの隔離は軽量さとのトレードオフです。マルチテナントで強い分離が必要なら、VM や、より隔離の強い実行基盤の併用を検討します。軽さと隔離強度は両立しにくい点を忘れないようにしましょう。

まとめ

  • コンテナは ホストのカーネルを共有 したまま隔離する、VM より 軽量 な仕組み。
  • 名前空間 が「見える範囲(PID・ネットワーク・ファイル等)」を隔離する。
  • cgroups が「使える資源(CPU・メモリ等)」を制限・計測する。
  • カーネルを共有するため、強い分離が要る用途では追加対策や VM を検討する。

プロセスの基礎は プロセスとスレッド、隔離の前提となる権限分離は カーネルモードとユーザーモード も合わせてどうぞ。

OS Article

名前空間と cgroups(コンテナの基盤)を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

コンテナ

比較で見る軸

難易度: advanced / カテゴリ: OS / タグ数: 4

導入後に効く点

名前空間はプロセスから見える範囲(PID・ネットワーク・ファイルなど)を区切ります。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
OS
タグ数
4

判断チェックリスト

  • 自社の用途が「コンテナ / 名前空間」に近いか確認する。
  • 強みである「コンテナは仮想マシンと違い、ホストのカーネルを共有したまま隔離する軽量な仕組みです。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

コンテナ名前空間cgroupsLinuxコンテナ名前空間cgroupsLinux
参考: 公式情報