LXC (Linux Containers)(エルエックスシー)
2008年IBM 主導開始のLinux OS-level 仮想化技術。namespaces + cgroups で軽量コンテナ実現、Docker (2013) の前身・Canonical Ubuntu LXD の基盤。
概要
LXC (Linux Containers) はIBM Daniel Lezcano / Serge Hallyn 等が2008年8月から主導開発開始したLinux OS-level 仮想化技術。Linux Namespaces (Mount / PID / Network / User 等の段階追加 2002-2013) + cgroups (2007 stable) の組合せで、1ホスト上に複数の分離Linux 環境 (コンテナ) を実行する仕組み。Docker (2013年) の前身であり、Docker は初期 LXC を内部backend として利用、後にlibcontainer 独自実装に置換した。
LXC のアーキテクチャ
[Host Linux Kernel (共有)]
├── LXC Container A: [独立PID/Mount/Net 名前空間 + ファイルシステム + プロセスツリー]
├── LXC Container B: [独立PID/Mount/Net 名前空間 + ファイルシステム + プロセスツリー]
└── LXC Container C: ...
各コンテナはホストカーネルを共有しつつ、namespaces で論理的に隔離され、cgroups で資源制限を受ける。完全仮想化 (KVM / VMware) より圧倒的に軽量 (起動秒未満・メモリ MB単位)。
LXC vs Docker
| 項目 | LXC | Docker |
|---|---|---|
| 設計思想 | システムコンテナ (OS全体) | アプリコンテナ (1プロセス) |
| init | systemd / sysvinit | 通常 single process |
| Image | テンプレート (LXC Images) | レイヤ式 (Docker Hub) |
| ライフサイクル | 永続的 | 一時的 |
| ストレージ | rootfs (btrfs / zfs / overlayfs) | overlay2 |
| ネットワーク | LXD bridge / OpenVSwitch | docker0 / CNI |
| ユースケース | 軽量VM 代替 | アプリデプロイ |
LXD (Canonical 製) / Incus
LXD はCanonical (Ubuntu 開発元) が2014年からLXC 上に開発した高水準コンテナ管理ツール:
- REST API
- クラスタ機能
- Live Migration
- イメージ管理
- VM 統合 (LXD 4.0+ で QEMU/KVM もサポート)
2023年12月Canonical がLXD ライセンス変更 (Contributor License Agreement 要求) で物議、Linux Containers コミュニティが LXD をフォーク → Incus を立ち上げ。現在LXC / Incus / LXD が並存。
Proxmox VE LXC
Proxmox Virtual Environment は KVM (完全仮想化) + LXC (コンテナ) の両方をサポート、ホームラボで:
- Plex Server: LXC コンテナ (軽量・高速)
- Windows VM: KVM (完全仮想化)
- pfSense / OPNsense: KVM (BSDベース)
- 軽量Linux: LXC
主要LXC コマンド
# コンテナ作成
lxc-create -n mycontainer -t download
# (テンプレート選択: Ubuntu 22.04 / Debian 12 等)
# 起動
lxc-start -n mycontainer
# Shell接続
lxc-attach -n mycontainer
# 停止
lxc-stop -n mycontainer
# 削除
lxc-destroy -n mycontainer
# 一覧
lxc-ls --fancy
関連用語との違い
- vs Docker: システム / アプリ
- vs KVM: 軽量コンテナ / 重量VM
- vs Podman: 同様アプリコンテナ・rootless
- vs Kubernetes: Container orchestration / 単体技術
FAQ
Q1: Docker と共存? A: 可能。同じホスト上でLXC コンテナ (例: Plex Server) と Docker コンテナ (アプリスタック) を併用可。
Q2: GUI 管理? A: Proxmox VE / LXD GUI (Canonical) / Incus UI が選択肢。一般 LXC は CLI ベース。
Q3: Windows コンテナは? A: 不可。LXC はLinux カーネル共有が前提・Windows コンテナはWindows Server Containers / Hyper-V Containers が別物。