LXC (Linux Containers)
作者Daniel Lezcano(オリジナルの作者)
開発元linuxcontainers.org(現在はプロジェクトでの開発)
最新版5.0.1
リポジトリ
github.com/lxc
LXC(英語: Linux Containers)は、1つのLinuxカーネルを実行しているコントロールホスト上で、複数の隔離されたLinuxシステム(コンテナ)を走らせる、OSレベル仮想化のソフトウェアである。
Linuxカーネルが提供するcgroupsという機能を利用することで、リソース(CPU、メモリ、ブロックI/O、ネットワークなど)の制限と優先順位付けが可能になっており、そのために仮想マシンを使用する必要がない。また、名前空間の隔離(英語版)機能を利用すれば、アプリケーションから見たオペレーティング・システムの環境を完全に隔離することができるため、プロセスツリー、ネットワーク、ユーザー識別子、マウント(英語版)されたファイルシステムを仮想化することができる[1]。
LXCはカーネルのcgroupsと隔離された名前空間のサポートを組み合わせることで、アプリケーションのために隔離された環境を提供する。初期のバージョンのDockerはLXCをコンテナ実行ドライバとして利用していたが、Docker v0.9ではオプションとなり、Docker v1.10でサポートが終了した[2]。 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権限で任意のコードを実行することが可能だった[3][4][5][6]。しかし、LXC 1.0 リリース後は、「非特権コンテナ」を用いてコンテナをホスト上の通常ユーザーとして実行することが可能となった[7]。非特権コンテナはハードウェアに直接アクセスできないという意味でより制限されている。また、LXC 1.0 のセキュリティモデルでは、適切に設定すれば特権コンテナでさえ十分な隔離を提供するとされる[7]。 Linuxには、OpenVZやLinux-VServerといった類似のOSレベルの仮想化があり、他のOSでは、FreeBSD jailやSolaris Containers
概要
セキュリティ
代替
関連項目.mw-parser-output .side-box{margin:4px 0;box-sizing:border-box;border:1px solid #aaa;font-size:88%;line-height:1.25em;background-color:#f9f9f9;display:flow-root}.mw-parser-output .side-box-abovebelow,.mw-parser-output .side-box-text{padding:0.25em 0.9em}.mw-parser-output .side-box-image{padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .side-box-imageright{padding:2px 0.9em 2px 0;text-align:center}@media(min-width:500px){.mw-parser-output .side-box-flex{display:flex;align-items:center}.mw-parser-output .side-box-text{flex:1}}@media(min-width:720px){.mw-parser-output .side-box{width:238px}.mw-parser-output .side-box-right{clear:right;float:right;margin-left:1em}.mw-parser-output .side-box-left{margin-right:1em}}Linuxポータル FLOSS
Open Container Initiative
CoreOS
Docker - ソフトウェアコンテナ上にアプリケーションを自動デプロイできるようにするプロジェクト
Apache Mesos - コンテナの隔離をベースにした大規模クラスタ管理プラットフォーム
OSシステムレベル仮想化の実装
Proxmox VE - LXCコンテナとKVMをサポートするオープンソースのサーバー仮想化管理プラットフォーム
Anbox(英語版) - Androidアプリケーションを別のLinuxディストリビューション上で実行するためにLXCを利用している
出典^ Rami Rosen (2013年5月). “Resource management: Linux kernel namespaces and cgroups” (PDF). cs.ucsb.edu. 2015年2月11日閲覧。
^ “Docker 0.9: introducing execution drivers and libcontainer - Docker Blog” (英語). Docker Blog. (2014年3月10日). https://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer/ 2018年5月9日閲覧。
^ Marco, d'Itri (2011年). “Evading from linux containers”. 2014年1月9日時点の ⇒オリジナルよりアーカイブ。2014年2月12日閲覧。
^ ⇒LXC - Gentoo Linux Wiki
^ ⇒Evading from linux containers
^ “LXC入門 - Osc2011 nagoya” (2011年8月26日). 2017年9月10日閲覧。
^ a b Graber, Stephane (2014年1月1日). “LXC 1.0: Security features [6/10]”. 2014年2月12日閲覧。 “However, at least in Ubuntu, our default containers ship with what we think is a pretty good configuration of both the cgroup access and an extensive apparmor profile which prevents all attacks that we are aware of. [...] LXC is no longer running as root so even if an attacker manages to escape the container, he’d find himself having the privileges of a regular user on the host”
外部リンク
公式ウェブサイト
Linux Checkpoint / Restart - チェックポイントと再開をサポートする LXC のパッチ
LXC: Linux コンテナー・ツール - IBMの記事
表
話
編
歴
仮想化
全体
PopekとGoldbergの仮想化要件
ハイパーバイザ
準仮想化
PowerVM
x86仮想化
プラットフォームの
仮想化
(仮想マシン)
ハードウェアレベル
PR/SM
LPAR
LDOM
仮想86モード
インテルVT
AMD-V
ブレードサーバ
ハードウェア仮想化
I/O仮想化(英語版)
ソフトウェアレベル
bhyve
z/VM
VMware
VMware Fusion
Hyper-V
WPAR
Sun xVM(英語版)
Bochs
KVM
PearPC
QEMU
Xen
VirtualBox
jail
Linux-VServer
cgroups
LXC(Docker)
Parallels Desktop
Parallels Virtuozzo Containers
OpenVZ
libvirt
User Mode Linux
Lguest
OSレベルの仮想化