【エルエックスシー】

LXC とは?

最終更新:
💡 Linuxのカーネルを共有し、実行環境を分ける道具

Linuxカーネルの隔離機能を利用し、コンテナを作成・管理するライブラリやツール群。namespaceやcgroupsなどを使い、ホストのカーネルを共有する実行環境を作る。システムコンテナにもアプリケーションコンテナにも利用できる。

📌 このページのポイント
コンテナの環境と、共有するカーネル コンテナA コンテナB プロセス・ライブラリ Linuxのユーザー空間 プロセス・ライブラリ Linuxのユーザー空間 共有するLinuxカーネル namespace / cgroups など ホストのハードウェア LXCで作成・管理し、権限や制限を設定する
LXCはLinuxのコンテナ機能を扱うツール群。コンテナにもユーザー空間のOS環境は必要。
ひよこ ひよこ
LXCって何?
ペンギン先生 ペンギン先生
Linuxのコンテナ機能を扱うライブラリやツールだよ。namespaceやcgroupsだけでなく、アクセス制限などの機能も使い、隔離された実行環境を作成・管理するんだ。
ひよこ ひよこ
VMとはどう違うの?
ペンギン先生 ペンギン先生
LXCのコンテナはホストのLinuxカーネルを共有するよ。個々に別のカーネルを起動するVMとは違う。一方、コンテナ内にはLinuxのユーザー空間の環境を用意するので、「OSの環境が全く不要」という意味ではないんだ。
ひよこ ひよこ
Dockerの前身なの?
ペンギン先生 ペンギン先生
Dockerは初期にLXCを利用していたけれど、別のプロジェクトだよ。2014年のDocker 0.9ではlibcontainerが標準の実行ドライバーになり、その時点ではLXCも選択肢として残った。旧名称や、0.9で即座に全て廃止されたものとは考えないんだ。
ひよこ ひよこ
今もシステム全体を動かす用途で使う?
ペンギン先生 ペンギン先生
Proxmox VEはLXCを基盤に使い、Linuxのシステムコンテナを管理しているよ。LXCそのものはアプリケーションコンテナにも使えるので、「Dockerはアプリ、LXCはシステムだけ」と厳密に区切らないんだ。
ひよこ ひよこ
隔離していれば完全に安全?
ペンギン先生 ペンギン先生
ホストのカーネルを共有するので、権限や設定も大切だよ。Proxmoxの非特権コンテナは、内部のrootをホスト上の非特権ユーザーへ対応付ける。特権コンテナとは条件が違い、どれでもVMと同じ隔離を保証するわけではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「LXC」って出てきたら「Linuxの機能を使ってコンテナを作成・管理するツール群」と思えばだいたいOK!
📖 おまけ:英語の意味
「Linux Containers」 = Linuxコンテナ
💬 Linuxのカーネル機能を使って実行環境を分けるツール群の名前だよ。カーネル自体と同じものでも、Dockerの旧名称でもないんだ。

参考資料

← 用語集にもどる