実務で頻出する「コンテナ基礎」関連の用語を、一言定義+最小実例でサッと確認。
Linux カーネルの機能(namespaces・cgroups など)を土台としたコンテナ技術の基本を整理します。
このページで達成できること
- コンテナの仕組みを「軽量な仮想化」として理解
- namespaces による分離の役割を習得
- cgroups によるリソース制御を整理
- 実務での落とし穴(root 権限の扱い・ホストとの依存)を回避
すぐ引けるミニ索引
| 用語 | 一言で | 代表コマンド/例 |
|---|---|---|
| コンテナ | OSカーネル共有型の軽量仮想環境 | docker run |
| namespace | プロセス・リソースの分離機能 | unshare |
| PID namespace | プロセスIDの分離 | unshare -p |
| NET namespace | ネットワーク分離 | ip netns add |
| MNT namespace | マウントポイント分離 | unshare -m |
| UTS namespace | ホスト名分離 | unshare -u |
| USER namespace | ユーザーID分離 | unshare -U |
| IPC namespace | プロセス間通信分離 | unshare -i |
| cgroups | リソース制御 | /sys/fs/cgroup |
| chroot | ルートディレクトリを変更 | chroot /newroot |
| overlayfs | コンテナで利用されるUnion FS | mount -t overlay |
| OCI | コンテナの標準仕様 | runc |
| Docker | 最も普及したコンテナランタイム | docker run ubuntu |
| Podman | rootless対応のコンテナランタイム | podman run |
用語解説(繰り返しブロック)
コンテナ
とは:ホストOSのカーネルを共有しつつ、隔離された環境でプロセスを動作させる仕組み。
最小実例
docker run --rm -it ubuntu bash
関連:namespaces / cgroups / Docker
落とし穴:仮想マシンと異なりカーネルは分離されない。
namespace
とは:Linuxカーネルが提供するリソース分離機能。PID・ネットワーク・マウントなどを独立した空間にする。
最小実例
unshare -p -f --mount-proc bash
関連:cgroups / コンテナ基盤
落とし穴:すべてのnamespaceを使わないと完全分離にならない。
PID namespace
とは:プロセスIDを分離。コンテナ内のPID 1が独立。
最小実例
unshare -p -f --mount-proc bash
関連:ジョブ制御 / systemd
落とし穴:コンテナ内のPID 1は特別扱い → シグナル処理必要。
NET namespace
とは:ネットワークスタックを分離。仮想NIC・IPを割り当て可能。
最小実例
ip netns add testns
ip netns exec testns ip addr
関連:veth / bridge / iptables
落とし穴:外部接続にはブリッジ設定が必要。
MNT namespace
とは:マウントポイントを分離。ファイルシステムを独自に持てる。
最小実例
unshare -m bash
mount -t tmpfs tmpfs /mnt
関連:chroot / overlayfs
落とし穴:ホストと共有マウントに注意。
UTS namespace
とは:ホスト名・ドメイン名を分離。
最小実例
unshare -u bash
hostname container1
関連:ネットワーク / コンテナ識別
落とし穴:設定しないとホスト名が丸見え。
USER namespace
とは:ユーザーIDを分離。ホストroot ≠ コンテナroot。
最小実例
unshare -U bash
関連:権限・所有権 / rootlessコンテナ
落とし穴:ファイル所有権マッピングの理解が必須。
IPC namespace
とは:プロセス間通信(共有メモリ・セマフォ・メッセージキュー)を分離。
最小実例
unshare -i bash
関連:プロセス / シグナル
落とし穴:分離しないと他プロセスと共有してしまう。
cgroups
とは:CPU・メモリ・I/Oなどのリソースを制御・制限する仕組み。
最小実例
echo $$ > /sys/fs/cgroup/mygroup/cgroup.procs
echo "50000 100000" > /sys/fs/cgroup/mygroup/cpu.max
関連:プロセス優先度 / systemd slice
落とし穴:誤設定するとアプリが即終了。
chroot
とは:プロセスのルートディレクトリを変更する仕組み。コンテナの前身的技術。
最小実例
chroot /newroot /bin/bash
関連:MNT namespace / コンテナ
落とし穴:単体では完全隔離できない。
overlayfs
とは:読み取り専用レイヤーと書き込みレイヤーを重ね合わせるUnion FS。Dockerイメージで利用。
最小実例
mount -t overlay overlay -o lowerdir=base,upperdir=upper,workdir=work merged
関連:イメージ管理 / MNT namespace
落とし穴:大量の小ファイルでは性能劣化。
OCI
とは:Open Container Initiative。コンテナ実行環境の標準仕様。
最小実例
runc run mycontainer
関連:Docker / Podman
落とし穴:実装差はゼロではない。
Docker
とは:最も普及しているコンテナランタイム兼ツールチェーン。
最小実例
docker run -it alpine
関連:containerd / OCI
落とし穴:root 権限で動作するため権限管理が重要。
Podman
とは:Docker互換コマンドを持つ rootless コンテナランタイム。
最小実例
podman run -it alpine
関連:Docker / rootless
落とし穴:ソケットを使ったデーモンが不要な点に注意。
運用の現場Tips
- コンテナはVMではない:カーネルを共有している点を意識
- namespaces + cgroups が基盤:両方あってこそ隔離と制御
- rootless活用:USER namespaceでセキュリティを強化
- overlayfs の仕組み理解:イメージ管理や性能最適化の鍵

