LXC
![]() | |
作者 | Daniel Lezcano(オリジナルの作者) |
---|---|
開発元 | linuxcontainers.org(現在はプロジェクトでの開発) |
最新版 | 5.0.1 |
リポジトリ |
![]() |
プログラミング 言語 | C |
対応OS | Linux |
プラットフォーム | x86, x64, IA-64, PowerPC, SPARC, ARM |
サポート状況 | 活発 |
種別 | OSレベル仮想化 |
ライセンス | 大半がGNU LGPL v2.1+ |
公式サイト | linuxcontainers |
テンプレートを表示 |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Libvirt_support.svg/250px-Libvirt_support.svg.png)
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がある。
関連項目
- Open Container Initiative
- CoreOS
- Docker - ソフトウェアコンテナ上にアプリケーションを自動デプロイできるようにするプロジェクト
- Apache Mesos - コンテナの隔離をベースにした大規模クラスタ管理プラットフォーム
- OSシステムレベル仮想化の実装(英語版)
- Proxmox VE - LXCコンテナとKVMをサポートするオープンソースのサーバー仮想化管理プラットフォーム
- Anbox(英語版) - Androidアプリケーションを別のLinuxディストリビューション上で実行するためにLXCを利用している
出典
- ^ Rami Rosen (May 2013). “Resource management: Linux kernel namespaces and cgroups” (PDF). cs.ucsb.edu. February 11, 2015閲覧。
- ^ “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”. 9 January 2014時点のオリジナルよりアーカイブ。12 February 2014閲覧。
- ^ LXC - Gentoo Linux Wiki
- ^ Evading from linux containers
- ^ “LXC入門 - Osc2011 nagoya” (Aug 26, 2011). 2017年9月10日閲覧。
- ^ a b Graber, Stéphane (1 January 2014). “LXC 1.0: Security features [6/10]”. 12 February 2014閲覧。 “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の記事