LXC()は、1つのLinuxカーネルを実行しているコントロールホスト上で、複数の隔離されたLinuxシステム(コンテナ)を走らせる、OSレベル仮想化のソフトウェアである。
Linuxカーネルが提供するcgroupsという機能を利用することで、リソース(CPU、メモリ、ブロックI/O、ネットワークなど)の制限と優先順位付けが可能になっており、そのために仮想マシンを使用する必要がない。また、機能を利用すれば、アプリケーションから見たオペレーティング・システムの環境を完全に隔離することができるため、プロセスツリー、ネットワーク、ユーザー識別子、されたファイルシステムを仮想化することができる。
LXCはカーネルのcgroupsと隔離された名前空間のサポートを組み合わせることで、アプリケーションのために隔離された環境を提供する。初期のバージョンのDockerはLXCをコンテナ実行ドライバとして利用していたが、Docker v0.9ではオプションとなり、Docker v1.10でサポートが終了した。
概要 LXCは、Linuxカーネル 2.6.29から利用可能になったcgroupsに依存している。また、LXCは他の名前空間を隔離する機能にも依存しており、それらはLinuxカーネルのメインラインに統合されている。
2014年2月20日にLXC 1.0 がリリースされた。Ubuntu 14.04 LTSなどに含まれ、安定版ブランチがgitに作られ、1.0 以降は API は上位互換性を保つ。
セキュリティ 以前は、LXCはOpenVZのようなOSレベルの仮想化メソッドと比べてセキュリティが劣っていた。バージョン3.8以前のLinuxカーネルでは、chroot jailとほとんど同じようにゲストシステムのrootユーザーがホストシステムのroot権限で任意のコードを実行することが可能だったLXC - Gentoo Linux WikiEvading from linux containers。しかし、LXC 1.0 リリース後は、「非特権コンテナ」を用いてコンテナをホスト上の通常ユーザーとして実行することが可能となった。非特権コンテナはハードウェアに直接アクセスできないという意味でより制限されている。また、LXC 1.0 のセキュリティモデルでは、適切に設定すれば特権コンテナでさえ十分な隔離を提供するとされる。
代替 Linuxには、OpenVZやLinux-VServerといった類似のOSレベルの仮想化があり、他のOSでは、FreeBSD jailやSolaris Containersがある。
関連項目
Open Container Initiative CoreOS Docker - ソフトウェアコンテナ上にアプリケーションを自動デプロイできるようにするプロジェクト Apache Mesos - コンテナの隔離をベースにした大規模クラスタ管理プラットフォーム OSレベルの仮想化 Proxmox VE - LXCコンテナとKVMをサポートするオープンソースのサーバ仮想化管理プラットフォーム - Androidアプリケーションを別のLinuxディストリビューション上で実行するためにLXCを利用している
出典
外部リンク
Linux Checkpoint / Restart - チェックポイントと再開をサポートする LXC のパッチ LXC: Linux コンテナー・ツール - IBMの記事