用語集:コンテナ基礎(namespaces 等)

実務で頻出する「コンテナ基礎」関連の用語を、一言定義+最小実例でサッと確認。
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 FSmount -t overlay
OCIコンテナの標準仕様runc
Docker最も普及したコンテナランタイムdocker run ubuntu
Podmanrootless対応のコンテナランタイム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 の仕組み理解:イメージ管理や性能最適化の鍵

関連リンク(学習ハブ内)

学びを“実務”へつなぐ最短ルート

独学で積み上げた「わかった」を、仕事で使える「できる」へ。
学習ハブの内容を踏まえて、実務に直結する学習設計・添削・質問環境を整えたい人は、下記のページで具体的な進め方を確認してください。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする